DOWNLOAD
You can download the gzipped tarfile with the package containing the CUDA/multi-core S2HAT routines here.
Note that this package is distributed separately from the main S2HAT library and under a different licence (see below).
As such it does not require the standard S2HAT library to be compiled and executed however many of the standard S2HAT
functionalities can be useful for most of typical applications using CUDA/multi-core routines with the former providing all
the ancillary pre- and post- transform operations and the latter focused solely on the transforms.
We also note that using both these packages together is straightforward as they
share a common framework and coding philosophy.
PRE-COMPILATION
Prior to the compilation of the s2hat CUDA/MT package, you should create a profile file in the "/profile" folder. You can follow the examples provided
there. The file name must conform following standard:
where
The profile file must include definitions and paths to following compilers and libraries:
- MPICC
- -- MPI C compiler e.g., mpicc
- MPIF90
- -- MPI fortran compiler e.g., mpif90
- NVCC
- -- CUDA compiler e.g., nvcc
- MPIINCLUDE
- -- MPI include path
- MPILIBDIR
- -- MPI lib path
- FFT_INCLUDE
- -- FFTW include path
- FFT_LIB
- -- FFTW lib path
- FFT_FLAG
- -- (see s2hat documentation)
- OPT
- -- optimization flags e.g., -O2 -ffast-math -fomit-frame-pointer
- OPENMP
- -- flag for OpenMP library e.g. -fopenmp for GNU GCC
- CUDA_FLAGS
- -- CUDA compiler flags e.g., --opencc-options="-O3" --compiler-options "-O3"
- CUDA_INCLUDE
- -- CUDA include path
- CUDA_LIBRARIES
- -- CUDA lib path (add -lcufft for CUFFT)
- S2HAT_FLAGS
- -- S2HAT Specific flags. Follow this link for a doc and details:
An example profile file is included in the package.
S2HAT CUDA SETUP
S2HAT Cuda routines may be tuned using additional parameters which are defined in file: 'src/s2hat_cuda_common.cuh'.
Check the comments in its header for more details.
NON-STANDARD COMPILE OPTIONS
- make libstd
- -- build standard s2hat library from 'fortran + c' routines
- make libmt
- -- build multithreaded s2hat library from 'fortran + c + OpenMP' routines
- make libcuda
- -- build CUDA s2hat library from 'fortran + c + CUDA' routines
- make std
- -- build standard s2hat library with an example of the executable
- make mt
- -- build multi threaded s2hat library with an example of the executable
make cuda
- -- build CUDA s2hat library with example executable
EXAMPLE
If you compile any version of s2hat library with example, you will find an executable file
in 'bin/' folder. To get some help, execute the code without any arguments.
An example usage:
COMMENTS
Unlike the standard MPI s2hat, the multithreaded and CUDA routines in the current version DO NOT support:
A warning message will be issued whenever an attempt to use any of these options is made.
TROUBLESHOOTING
To report bugs, comments, or suggestions please use the bug tracker on the following page: