Skip to content

Latest commit

 

History

History
43 lines (36 loc) · 1.29 KB

File metadata and controls

43 lines (36 loc) · 1.29 KB

PDOT.jl

This repository contains experimental code for solving discrete optimal transport on NVIDIA GPUs. The following paper describes the methods implemented in this repository:

Setup

A one-time step is required to set up the necessary packages on the local machine:

$ julia --project -e 'import Pkg; Pkg.instantiate()'

Running

Instances of optimal transport are wrapped in the following structure:

mutable struct OptimalTransportProblem
    cost_matrix::Matrix{Float64}
    source_distribution::Vector{Float64}
    target_distribution::Vector{Float64}
end

The recommended function to run PDOT is located in scripts/solve.jl:

function solve_instance_and_output(
    output_directory::String,
    instance_name::String,
    instance::PDOT.OptimalTransportProblem;
    tolerance = 1.0e-4
)

Citation

If PDOT is useful or relevant to your research, please kindly recognize our contributions by citing our paper:

@article{lu2024pdot,
  title={PDOT: a Practical Primal-Dual Algorithm and a GPU-Based Solver for Optimal Transport},
  author={Lu, Haihao and Yang, Jinwen},
  journal={arXiv preprint arXiv:2407.19689},
  year={2024}
}