BabelStream/docs/spack_instructions.md
2023-06-17 09:02:13 +00:00

3.2 KiB

Spack Instructions

Table of contents

OpenMP

  • There are 3 offloading options for OpenMP: NVIDIA, AMD and Intel.
  • If a user provides a value for cuda_arch, the execution will be automatically offloaded to NVIDIA.
  • If a user provides a value for amdgpu_target, the operation will be offloaded to AMD.
  • In the absence of cuda_arch and amdgpu_target, the execution will be offloaded to Intel.
Flag Definition
cuda_arch - List of supported compute capabilities are provided here
- Useful link for matching CUDA gencodes with NVIDIA architectures
amdgpu_target List of supported architectures are provided here
# Example 1: for Intel offload
 $ spack install babelstream%oneapi +omp 

# Example 2: for Nvidia GPU for Volta (sm_70) 
 $ spack install babelstream +omp cuda_arch=70 
 
# Example 3: for AMD GPU gfx701 
 $ spack install babelstream +omp amdgpu_target=gfx701 

OpenCL

  • No need to specify amdgpu_target or cuda_arch here since we are using AMD and CUDA as backend respectively.
Flag Definition
backend 4 different backend options:
- cuda
- amd
- intel
- pocl
# Example 1:  CUDA backend
 $ spack install babelstream%gcc +ocl backend=cuda

# Example 2:  AMD backend 
 $ spack install babelstream%gcc +ocl backend=amd
 
# Example 3:  Intel backend
 $ spack install babelstream%gcc +ocl backend=intel

# Example 4:  POCL backend
 $ spack install babelstream%gcc +ocl backend=pocl

STD

  • Minimum GCC version requirement 10.1.0
  • NVHPC Offload will be added in the future release
# Example 1:  data 
 $ spack install babelstream +stddata

# Example 2:  ranges
 $ spack install babelstream +stdranges
 
# Example 3:  indices
 $ spack install babelstream +stdindices

HIP(ROCM)

  • amdgpu_target and flags are optional here.
Flag Definition
amdgpu_target List of supported architectures are provided here
flags Extra flags to pass
# Example 1:  ROCM default
 $ spack install babelstream +rocm

# Example 2:  ROCM with GPU target
 $ spack install babelstream +rocm amdgpu_target=<gfx701>
 
# Example 3:  ROCM with extra flags option
 $ spack install babelstream +rocm flags=<xxx>

# Example 4:  ROCM with GPU target and extra flags
 $ spack install babelstream +rocm amdgpu_target=<gfx701> flags=<xxx>