Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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}
}

About

No description, website, or topics provided.

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages