Condition-Wise Sinkhorn Drifting

One-shot learned channel simulation

Condition-Wise Sinkhorn Drifting

A channel surrogate that preserves the transmitted symbol and transports only the conditional output law p(y | x), avoiding iterative diffusion sampling at inference.

Symbol error rate curves for AWGN, Rayleigh, SSPA, and TDL channels.
Downstream SER curves after training through analytic and learned channel implants.
1 shot

One generator evaluation per channel sample after training.

4 channels

AWGN, Rayleigh fading, SSPA/Rapp nonlinearity, and compact TDL.

SER/BER

Generator metrics are checked against downstream communication performance.

Method

Condition-wise transport over output fibers

In learned channel simulation, the input symbol x is side information. The relevant object is the conditional law p(y | x). The method estimates Sinkhorn barycentric velocities from repeated channel outputs at fixed inputs and trains a direct-output generator by detached target regression.

The same one-shot generator architecture is used for direct drifting, joint Sinkhorn drifting, and condition-wise Sinkhorn drifting. The difference is the drift field used during training.

Anchor-conditioned SSPA comparison of analytic samples, joint Sinkhorn, and condition-wise Sinkhorn.
Anchor-conditioned SSPA comparison. Condition-wise Sinkhorn keeps samples near the fixed-input output cloud.

Interactive demo

Condition-wise drift preserves the input label

Generated samples start near swapped output clouds. Joint transport follows nearby global outputs. Condition-wise transport keeps each particle tied to its transmitted symbol.

Results

Generator metrics and downstream communication performance can diverge

Direct-output sliced Wasserstein distance comparison across reference baselines and drifting variants.
Direct-output SWD across diffusion, WGAN, and drifting-family generators.
Long block length TurboAE BER and BLER curves.
Long block-length AWGN check with a TurboAE-style learned communication system.

Benchmark details

Timing and model size

Timings follow the journal protocol: PyTorch float32 execution on an NVIDIA RTX 5060 Ti GPU, without CUDA graph capture, torch.compile, or mixed precision. Training time is extrapolated from a measured 2% run that includes channel sampling, optimizer updates, and Sinkhorn computations. Inference uses two warmup repeats and seven CUDA-synchronized timed repeats.

Projected Training and Inference Timing

Training hours are extrapolated from a 2% timing run. Inference reports mean time per generated channel sample.

Method AWGN Rayleigh SSPA TDL
Train h Inf. Total h Train h Inf. Total h Train h Inf. Total h Train h Inf. Total h
One-shot generators
Drifting direct 1.2990.114 µs1.300 1.2990.117 µs1.300 5.6560.118 µs5.656 0.0070.116 µs0.007
Joint Sinkhorn 0.9170.116 µs0.918 0.9190.115 µs0.920 3.9560.117 µs3.956 0.0100.116 µs0.010
Condition-wise Sinkhorn 0.0480.115 µs0.048 0.0480.115 µs0.049 0.2960.117 µs0.297 0.0090.115 µs0.009
WGAN 0.0640.108 µs0.064 0.0850.108 µs0.086 0.4780.107 µs0.478 0.0220.108 µs0.022
Diffusion samplers
DDPM 0.0200.046 ms0.147 0.0200.045 ms0.145 0.1240.047 ms0.253 0.0050.045 ms0.007
DDIM-100 0.0200.039 ms0.128 0.0200.039 ms0.128 0.1240.039 ms0.231 0.0050.039 ms0.006
DDIM-50 0.0200.019 ms0.073 0.0200.019 ms0.073 0.1240.019 ms0.177 0.0050.019 ms0.006
DDIM-20 0.0200.008 ms0.042 0.0200.008 ms0.042 0.1240.008 ms0.145 0.0050.008 ms0.006
DDIM-10 0.0200.004 ms0.031 0.0200.004 ms0.031 0.1240.004 ms0.135 0.0050.004 ms0.005

Inference-Network Parameter Counts

Sinkhorn drifting variants use the same one-shot generator as direct drifting. Sinkhorn couplings are training-time computations and add no inference-time parameters.

Model AWGN Rayleigh SSPA TDL
Direct drifting20,48720,48720,74420,744
Sinkhorn drifting variants20,48720,48720,74420,744
Diffusion denoiser59,84774,24760,17874,632
WGAN generator19,33571,43172,20072,200

Code

Run a channel surrogate

The repository contains the drifting generators, channel models, metrics, and copyable experiment commands.

python scripts/run_drifting_benchmark.py \
  --channel Rayleigh \
  --variant conditionwise_sinkhorn \
  --device cuda \
  --seed 7 \
  --epochs 30 \
  --dataset-size 1000000 \
  --eval-size 200000 \
  --batch-size 5000 \
  --out results/rayleigh_conditionwise_seed7.json

Citation

Paper

@article{fritschek2026conditionwise,
  title   = {Condition-Wise Sinkhorn Drifting for One-Shot Learned Channel Simulation},
  author  = {Fritschek, Rick and Schaefer, Rafael F.},
  journal = {arXiv preprint arXiv:2606.17893},
  year    = {2026},
  doi     = {10.48550/arXiv.2606.17893}
}