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: profile filename: 'config_${UNAME}_${ARCH}' where ARCH=`uname -m` # e.g. i386, x86_64, etc.
UNAME=`uname` # e.g. Linux, Darwin, etc.
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:
http://www.apc.univ-paris7.fr/APC_CS/Recherche/Adamis/MIDAS09/software/s2hat/s2hat.html
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 s2hat_c_example_a2m2a_{std,mt,cuda}.exe in 'bin/' folder. To get some help, execute the code without any arguments.

An example usage: > [shell] ./s2hat_c_example_a2m2a_cuda.exe healpix 1024 512
> [shell] ./s2hat_c_example_a2m2a_mt.exe glcp 1024 512

COMMENTS

Unlike the standard MPI s2hat, the multithreaded and CUDA routines in the current version DO NOT support: - multi map features
- spin transform routines
- nstokes > 1
- precomputed plms
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: http://code.google.com/p/s2hat-library/