REVIEW 4 major objections 4 minor 32 references
MAP-UOT: A Memory-Efficient Approach to Unbalanced Optimal Transport Implementation
T0 review · 4 major / 4 minor · reviewed 2026-08-11 · deepseek-v4-flash
Pith's one-line read Unbalanced optimal transport is memory-bound, and a single fused rescaling pass that reads and writes the matrix once per iteration delivers average 1.9x-2.2x speedups over prior CPU solvers and up to 3.5x on a GPU.
desk verdict A useful cache-blocked Sinkhorn implementation, but the claimed memory-traffic advantage does not survive a close look at POT's vector-scaling baseline. read the letter →
The pith
A machine-rendered reading of the paper's core claim, the machinery that carries it, and where it could break.
The reading
What carries the argument
The load-bearing mechanism is an interleaved double-loop that merges the two rescaling passes of a Sinkhorn iteration. While walking a row, the loop applies the precomputed column factor to each element and accumulates the row sum; once the row sum is known, the same row is visited again to apply the row factor while accumulating partial column sums into a per-thread scratch array. This makes every matrix access row-contiguous and cuts the per-iteration memory flow to the theoretical minimum of one read and one write of the matrix (when the row or matrix stays cached), replacing the baseline's two separate passes over the data. On GPUs the same principle appears as tiled kernels that load blocks into shared memory, accumulate column sums with atomic adds, and perform row reductions with warp shuffles and 128-bit vector accesses.
What would settle it
Measure DRAM traffic during one Sinkhorn iteration of each implementation on the same matrix using hardware performance counters; if the baseline moves fewer bytes than MAP-UOT or less than about double its traffic, the memory-traffic explanation and the predicted speedup ceiling both need revision.
Extended reading notes
Core claim
The central discovery is that the bottleneck in Sinkhorn-style UOT iterations is memory traffic: each element of the cost matrix is touched several times per iteration, in patterns that defeat cache locality. MAP-UOT restructures the iteration so that the column rescaling for a row is done at the same time as accumulating that row's sum, and the row rescaling is done at the same time as accumulating partial column sums. This condenses the work into one traversal per iteration, makes all accesses row-contiguous, and brings DRAM traffic to the theoretical minimum of one read and one write of the matrix per iteration when the matrix fits in cache. The implementation then specializes this idea for CPU (loop unrolling, AVX2 vectorization) and GPU (tiled blocks, shared memory, 128-bit loads/stores, warp-shuffle reductions) platforms.
Load-bearing premise
The claimed speedups rest on the premise that the baseline implementations move roughly twice as much memory per iteration as MAP-UOT's single fused pass, a premise that fails if a baseline already applies rescaling factors without rewriting the matrix in place, in which case the comparison no longer isolates the memory-traffic reduction.
Editorial extensions
If this is right
- In the four representative applications profiled, where UOT consumes 62-99% of end-to-end time, solving the solver bottleneck transfers directly to application-level speedups.
- The single-pass iteration approaches the Roofline ceiling for memory-bound UOT, so further large gains must come from reducing iteration count or raising memory bandwidth rather than from arithmetic tuning.
- The row-partitioned parallelization is free from false sharing and scales to many threads and to distributed-memory nodes with an all-reduce replacing the per-thread column-sum accumulation.
- The relative benefit is largest for matrices whose rows stay resident in cache, and the gains persist for rectangular matrix shapes.
Reading between the lines
- If the memory-traffic premise is right, the same fused rescaling pattern should transfer to balanced entropic optimal transport and other alternating scaling algorithms; the gain would shrink for implementations that already apply scaling factors without rewriting the kernel matrix.
- A definitive test of the mechanism is to count DRAM bytes moved per iteration with hardware performance counters; if a baseline with fused vector scaling already approaches the one-read one-write minimum, the reported speedups would be attributed to implementation details rather than to the traffic reduction.
- The paper's future direction of sparse matrices is not automatic: fusing the rescaling passes requires the row and column sums of the scaled matrix, which, depending on the sparsity pattern, may force dense scratch arrays or extra traversals unless a specialized sparse traversal is designed.
Editorial analysis
A structured set of objections, weighed in public.
Referee Report
Summary. The paper proposes MAP-UOT, a memory-oriented implementation of the entropic unbalanced optimal transport (UOT) Sinkhorn solver. The authors argue that UOT is memory-bound, model a naive in-place row/column rescaling implementation with a Roofline analysis, and then introduce a fused 'interweaved' traversal that, in their account, reduces each iteration to one read and one write of the cost matrix. They report single-threaded, multithreaded, GPU, and supercomputer speedups against POT and COFFEE, together with cache-miss, throughput, and memory-consumption measurements. The empirical evaluation is broad, covering CPU, GPU, MPI, and an end-to-end application.
Significance. If the central traffic-reduction claim were correct, this would be a useful systems contribution: a clear architectural rationale for a 2-3x improvement over a widely used library. The paper also contains a substantial engineering effort: CPU vectorization and thread partitioning, GPU tiling and shared-memory reductions, MPI scaling, and a real domain-adaptation application. The cache-miss and throughput measurements are useful evidence that access-pattern optimization matters for this kernel. However, the paper's theoretical framework is not matched to the actual baseline used in the experiments, and the algorithmic description contradicts the 'single read and single write' claim in an important way. The empirical speedups may well be real, but the paper's stated mechanism does not currently establish that MAP-UOT reduces memory traffic relative to POT's vector-scaling Sinkhorn. The contribution is therefore defensible after a major revision that re-derives the memory-traffic argument and aligns the pseudocode with the implementation.
major comments (4)
- [Section 3.1, Eq. (1); Section 5.2.1] The Roofline model counts Q = 6*M*N per iteration for the pedagogical in-place implementation shown in Figure 1. The experimental SOTA baseline, however, is POT's sinkhorn_unbalanced, which uses vector scaling factors and computes matrix-vector products without rewriting the kernel matrix in place. Its per-iteration DRAM traffic is approximately two reads of the matrix (for the forward and transpose matrix-vector products), not 6*M*N of read-plus-write traffic. Consequently, the claimed 'theoretical minimum of 2*M*N is a 2-3x reduction over SOTA' does not follow from the Roofline analysis for the POT baseline. The measured speedups should be attributed to cache locality and access-pattern improvements, or the comparison should be made against a baseline that actually rescales the matrix in place.
- [Section 4.1.1, Algorithm 1; Section 3.1] Algorithm 1 traverses each row twice per iteration: Lines 7-8 apply the column factor and accumulate the row sum, and Lines 11-13 apply the row factor and accumulate the next column sum. Each element is therefore read and written twice per iteration at the cache-line level. The one-read-one-write claim holds only when the row remains cache-resident between the two passes; the paper states this condition for the CPU design but presents the claim unconditionally in the abstract and in Section 3.1. The GPU implementation in Section 4.2 describes part 2 and part 4 as separate kernels, so it appears to incur 4*M*N DRAM traffic per iteration, not 2*M*N. Please specify precisely which traffic quantity is being counted, for which implementation, and under which cache assumptions.
- [Section 4.1.1, Algorithm 1, Lines 1-3 and 16-20] The update of the column rescaling factors is inconsistent with the prose. The text says Factorcol is precomputed as pow(CPD[j]/colsum_j, fi), but Line 2 overwrites Factorcol[j] with pow(CPD[j]/Factorcol[j], fi), and Lines 16-20 accumulate NextSumcol entries into Factorcol[j]. Neither operation yields the next iteration's factor, which should be pow(CPD[j]/new_colsum_j, fi) computed from the accumulated column sums. As written, this pseudocode cannot be the algorithm that produced the reported results. Please correct the notation or the update rule.
- [Section 5.2.1 and Section 5.3.1] The comparison with POT mixes implementation layers: MAP-UOT is a C/CUDA library while POT's CPU and GPU paths are Python/Numpy and Python/CuPy. For small matrices, Python call overhead and per-operation dispatch can be a significant fraction of runtime, and the paper reports that improvements are largest for small matrices. Please report either isolated kernel times (excluding Python overhead) or clearly state that the numbers are end-to-end times, and confirm that the same convergence criterion and number of iterations are used in all implementations. The COFFEE comparison mitigates this on CPU, but the GPU comparison remains affected.
minor comments (4)
- [Figures 2-5 and 9-17] Several figures have axis labels, legends, and annotations that render as '/uni...' placeholder strings, making them unreadable in the submitted PDF; these must be regenerated with embedded fonts.
- [Section 2.1] The coefficients er and ep are used in the definition of fi in Figure 1 but are not defined in the text; please define them in Section 2.1.
- [Section 4.2.2, Algorithm 2] The loading of SmemFactorrow and the exact mapping of the (Ty*Ny) x Tx submatrix to threads are not fully specified; please make the indexing explicit so the kernel is reproducible.
- [Section 5] The paper does not provide a link to the source code or an artifact; given the dependence of the results on implementation details such as tiling parameters and vectorization, please include a code availability statement.
Circularity Check
No significant circularity: the Roofline analysis is a hardware-based bound and the speedups are direct measurements; the only self-reference is a non-load-bearing comparison with the authors' earlier COFFEE baseline.
full rationale
The paper's central claim is an empirical implementation result: MAP-UOT is measured to run faster than POT and COFFEE on specific CPUs, GPUs and a supercomputer. The Roofline analysis in Section 3.1 is a standard bound computed from measured peak performance and bandwidth, not a fitted model used to generate the speedups. The theoretical minimum Q = 2MN is explicitly conditional on an in-place formulation in which the matrix must be read and written once per iteration; it is a lower bound for that formulation, not a derived prediction validated by the measurements. No parameter is fitted to a subset of data and then renamed as a prediction. The only self-citation is to COFFEE [25], the first author's prior work, used as a comparison baseline and as a source of application profiling figures; this is legitimate independent, externally measured support and is not load-bearing for the algorithmic claim. A reviewer concern that POT's actual sinkhorn_unbalanced keeps vector scaling factors and does not rewrite the kernel would, if correct, weaken the paper's memory-traffic explanation, but it is a baseline-validity and correctness issue, not a circular-derivation issue, and cannot be established from the paper text alone. Therefore no circular step meeting the quotation-and-reduction standard is present.
Assumptions & free parameters
free parameters (2)
- GPU tiling parameters (Tx, Ny) for part 2 =
Tx=32, Ny=8 (part 2); Tx=128, Ny=8 (part 4), Ty=2
- AVX2 loop unroll factor on CPU =
not reported
assumptions (4)
- domain assumption The UOT algorithm is correctly represented by in-place row and column rescaling of the matrix A.
- domain assumption A single Sinkhorn iteration requires at least one read and one write of the full matrix (Q_min = 2*M*N).
- ad hoc to paper Fusing column and row rescaling does not change the convergence or final solution of the UOT algorithm.
- standard math The Roofline model operation counts (ADD, DIV, MUL, CALL each count as one) are representative of actual work.
Cite this review
Pith. "Pith review of MAP-UOT: A Memory-Efficient Approach to Unbalanced Optimal Transport Implementation." pith.science (2026). https://pith.science/paper/JFX7377X
@misc{pith2026241211079,
author = {Pith},
title = {Pith review of: MAP-UOT: A Memory-Efficient Approach to Unbalanced Optimal Transport Implementation},
year = {2026},
howpublished = {\url{https://pith.science/paper/JFX7377X}},
note = {Machine review of arXiv:2412.11079}
}
read the original abstract
Unbalanced optimal transport (UOT) has been widely used as a fundamental tool in many application domains, where it often dominates the application running time. While many researchers have proposed various optimizations for UOT, few have attempted to optimize it from a computer architecture's perspective. In this paper, we first study the performance bottlenecks of UOT through a series of experiments, which reveals that UOT is heavily memory-bound. Guided by these findings, we propose MAP-UOT, a Memory-efficient APproach to the implementation and optimization of UOT on CPU and GPU platforms. Our experimental evaluations show that the proposed strategy consistently and significantly outperforms the state-of-the-art (SOTA) implementations. Specifically, it provides single-threaded performance improvement over POT/COFFEE by up to 2.9X/2.4X, with an average of 1.9X/1.6X. At the same time, it provides parallelized performance improvement over POT/COFFEE by up to 2.4X/1.9X, with an average of 2.2X/1.8X, on Intel Core i9-12900K; and over POT by up to 3.5X, with an average of 1.6X, on Nvidia GeForce RTX 3090 Ti. MAP-UOT also shows great performance improvement on the Tianhe-1 supercomputer.
Figures
Figures from the paper (14 more)
Reference graph
Works this paper leans on
-
[1]
J. Altschuler, F. Bach, A. Rudi, and J. Niles-Weed. Massively scalable sinkhorn distances via the nyström method. Advances in neural information processing systems, 32, 2019
work page 2019
-
[2]
M. Arjovsky, S. Chintala, and L. Bottou. Wasserstein generative adversarial networks. In International conference on machine learning, pages 214–223. PMLR, 2017
work page 2017
-
[3]
N. Bonneel and D. Coeurjolly. Spot: sliced partial optimal transport. ACM Transactions on Graphics (TOG), 38(4):1–13, 2019. /uni00000014/uni00000019/uni00000016/uni00000015/uni00000019/uni00000017/uni00000014/uni00000015/uni0000001b/uni00000015/uni00000018/uni00000019/uni00000018/uni00000014/uni00000015 /uni00000031/uni00000058/uni00000050/uni00000045/uni...
work page 2019
- [4]
- [5]
- [6]
- [7]
-
[8]
M. Cuturi. Sinkhorn distances: Lightspeed computation of optimal transport. Advances in neural information processing systems, 26, 2013
2013
Show all 32 references
-
[9]
Ding and S
N. Ding and S. Williams. An instruction roofline model for gpus. IEEE, 2019
2019
-
[10]
Ferradans, N
S. Ferradans, N. Papadakis, G. Peyré, and J.-F. Aujol. Regularized discrete optimal transport. SIAM Journal on Imaging Sciences, 7(3):1853–1882, 2014
2014
-
[11]
Flamary, N
R. Flamary, N. Courty, A. Gramfort, M. Z. Alaya, A. Boisbunon, S. Chambon, L. Chapel, A. Corenflos, K. Fatras, N. Fournier, L. Gautheron, N. T. Gayraud, H. Janati, A. Rakotomamonjy, I. Redko, A. Rolet, A. Schutz, V . Seguy, D. J. Sutherland, R. Tavenard, A. Tong, and T. Vayer....
2021
-
[12]
Flamary, N
R. Flamary, N. Courty, D. Tuia, and A. Rakotomamonjy. Optimal transport for domain adaptation. IEEE Trans. Pattern Anal. Mach. Intell, 1, 2016
2016
-
[13]
Frogner, C
C. Frogner, C. Zhang, H. Mobahi, M. Araya, and T. A. Poggio. Learning with a wasserstein loss. Advances in neural information processing systems, 28, 2015
2015
-
[14]
Genevay, M
A. Genevay, M. Cuturi, G. Peyré, and F. Bach. Stochastic optimization for large-scale optimal transport.Advances in neural information processing systems, 29, 2016
2016
-
[15]
Gramfort, G
A. Gramfort, G. Peyré, and M. Cuturi. Fast optimal transport averaging of neuroimaging data. In International Conference on Information Processing in Medical Imaging, pages 261–272. Springer, 2015
2015
-
[16]
Gulrajani, F
I. Gulrajani, F. Ahmed, M. Arjovsky, V . Dumoulin, and A. C. Courville. Improved training of wasserstein gans. Advances in neural information processing systems, 30, 2017
2017
-
[17]
P. A. Knight. The sinkhorn–knopp algorithm: convergence and applications. SIAM Journal on Matrix Analysis and Applications, 30(1):261–275, 2008
2008
-
[18]
Kusner, Y
M. Kusner, Y . Sun, N. Kolkin, and K. Weinberger. From word embeddings to document distances. InInternational conference on machine learning, pages 957–966. PMLR, 2015
2015
-
[19]
J. Lee, N. P. Bertrand, and C. J. Rozell. Parallel unbalanced optimal transport regularization for large scale imaging problems. arXiv preprint arXiv:1909.00149, 2019
1909 arXiv
-
[20]
G. Pai, J. Ren, S. Melzi, P. Wonka, and M. Ovsjanikov. Fast sinkhorn filters: Using matrix scaling for non-rigid shape correspondence with functional maps. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 384–393, 2021
2021
-
[21]
K. Pham, K. Le, N. Ho, T. Pham, and H. Bui. On unbalanced optimal transport: An analysis of sinkhorn algorithm. In International Conference on Machine Learning, pages 7673–7682. PMLR, 2020
2020
-
[22]
R. Sato, M. Yamada, and H. Kashima. Fast unbalanced optimal transport on a tree.Advances in neural information processing systems, 33:19039–19051, 2020
2020
-
[23]
Schiebinger, J
G. Schiebinger, J. Shu, M. Tabaka, B. Cleary, V . Subramanian, A. Solomon, J. Gould, S. Liu, S. Lin, P. Berube, et al. Optimal-transport analysis of single-cell gene expression identifies developmental trajectories in reprogramming. Cell, 176(4):928–943, 2019. 17 A PREPRINT - ...
2019
-
[24]
R. Smith. Performance of mpi codes written in python with numpy and mpi4py. In 2016 6th Workshop on Python for High-Performance and Scientific Computing (PyHPC), pages 45–51. IEEE, 2016
2016
-
[25]
C. Sun, H. Luo, H. Jiang, J. Zhang, and K. Li. Coffee: Cross-layer optimization for fast and efficient executions of sinkhorn-knopp algorithm on hpc systems. IEEE Transactions on Parallel and Distributed Systems, 2023
2023
-
[26]
Thakur, R
R. Thakur, R. Rabenseifner, and W. Gropp. Optimization of collective communication operations in mpich. The International Journal of High Performance Computing Applications, 19(1):49–66, 2005
2005
-
[27]
J. J. Tithi and F. Petrini. A new parallel algorithm for sinkhorn word-movers distance and its performance on piuma and xeon cpu. arXiv preprint arXiv:2107.06433, 2021
2021 arXiv
-
[28]
F. Wang, H. Jiang, K. Zuo, X. Su, J. Xue, and C. Yang. Design and implementation of a highly efficient dgemm for 64-bit armv8 multi-core processors. In 2015 44th International Conference on Parallel Processing, pages 200–209. IEEE, 2015
2015
-
[29]
J. Wang, P. Wang, and P. Shafto. Sequential cooperative bayesian inference. In International Conference on Machine Learning, pages 10039–10049. PMLR, 2020
2020
-
[30]
Williams, A
S. Williams, A. Waterman, and D. Patterson. Roofline: an insightful visual performance model for multicore architectures. Communications of the ACM, 52(4):65–76, 2009
2009
-
[31]
K. D. Yang and C. Uhler. Scalable unbalanced optimal transport using generative adversarial networks. arXiv preprint arXiv:1810.11447, 2018
2018 arXiv
-
[32]
X. Yang, X. Liao, W. Xu, J. Song, Q. Hu, J. Su, L. Xiao, K. Lu, Q. Dou, J. Jiang, et al. Th-1: China’s first petaflop supercomputer. Frontiers of Computer Science in China, 4:445–455, 2010. 18
2010
Reviewed August 11, 2026 · model on record in the stance chip above.
Discussion (0). Continue with ORCID to comment.