Skip to content

alpha-unito/PP-Gaia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Gaia AVU-GSR code

Please, to cite this code, use the following bibtex entry:

@article{Malenza25,
	title        = {Performance Portability Assesment in Gaia},
	author       = {Giulio Malenza, Valentina Cesare, Marco Edoardo Santimaria, Robert Birke, Alberto Vecchiato, Ugo Becciani, Marco Aldinucci},
	year         = 2025,
	journal      = {Transactions on Parallel and Distributed Systems (TPDS)},
	doi          = {10.1109/TPDS.2025.3591452}
}

Instructions for compilation and execution of the simulator used to test LSQR algorithm for the ESA Gaia mission.

The folder is organized in the following way:

  • src -> LSQR algorithm versions
  • include -> include files needed to compile the code;
  • Makefile -> A Makefile that should be modified to compile the code;
  • Makefile.examples -> some examples of Makefile that we used to compile the code on different systems;

You should use gcc>=12.2.0

To run cuda code you can use nvcc >=11.8 NVIDIA compiler
To run hip code you can use hipcc (cuda>=11.7,rocm-5.6) AMD compiler
To run openmp code you can use nvc++>=23.11 NVIDIA compiler on NVIDIA architecture and AMD clang++>=16.0.0 compiler on AMD architecture
To run sycl code you can use acpp>=23.10.0 AdaptiveCpp compiler
To run cpp pstl code you can use nvc++>=23.11 compiler on NVIDIA architecture and clang++>=18.0.0 compiler on AMD architecture (roc-stdpar)

Compilation

NVIDIA GPU

In the Makefile you need to specify:

  • GNUTOOLCHAIN -> path to GCC
  • GPUARCH -> gpu architecture
  • MPI_HOME -> path to MPI
  • GNUTOOLCHAIN -> path to GCC
  • KOKKOS_HOME -> path to Kokkos compiler

To compile cuda code: make clean && make cuda -j
To compile hip code: make clean && make hip -j
To compile sycl code: make clean && make sycl -j
To compile openmp code: make clean && make ompG -j
To compile pstl code: make clean && make stdparG -j

AMD GPU

In the Makefile you need to specify:

  • GNUTOOLCHAIN -> path to GCC
  • GPUARCH -> gpu architecture (possible values: gfx90a, gfx908)
  • MPI_HOME -> path to MPI
  • ROCM_PATH -> path to ROCM
  • KOKKOS_HOME -> path to Kokkos compiler

To compile hip code: make clean && make hip -j
To compile sycl code: make clean && make sycl -j
To compile openmp code: make clean && make ompG -j
To compile pstl code: make clean && make stdparG -j

MPI

To compile code enabling MPI set USE_MPI=ON, i.e. make cuda USE_MPI=ON

TEST with MPI

mpirun -np 1 ./GaiaGsrParSim.x -memGlobal 2 -IDtest 0 -itnlimit 100 

Here:

  • memGlobal specifies approximately how much memory the system occupies in GB
  • IDtest 0 specifies that the test, if run up to convergence, reaches the identity solution
  • itnlimit specifies the maximum number of iterations run by LSQR. This number is not reached if confergence is reached before.

TEST without MPI

./GaiaGsrParSim.x -memGlobal 2 -IDtest 0 -itnlimit 100 

Reproducibility

For reproducibility please refear to REPRODUCIBILITY.md

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages