Skip to content

Commit a904c10

Browse files
author
Victor Mateevitsi
committed
build: add 64-bit ID option and improve SYCL build configuration
- Introduced `enable_64bit_ids` (default OFF) to toggle 64-bit index support across VTK-m and Ascent. - Refactored VTK-m and RAJA extra CMake args to use Bash arrays for better quoting and maintainability. - Improved SYCL build support: - Removed hardcoded Kokkos CXX flags. - Added proper SYCL flags for VTK-m and RAJA. - Enabled SYCL in CAMP when `enable_sycl=ON`. - Added relevant entries to `ascent-config.cmake` for SYCL builds. - Reduced `-fsycl-max-parallel-link-jobs` to 20 to prevent OOM during device linking on PVC.
1 parent 670851b commit a904c10

File tree

1 file changed

+66
-27
lines changed

1 file changed

+66
-27
lines changed

scripts/build_ascent/build_ascent.sh

Lines changed: 66 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ enable_mpicc="${enable_mpicc:=OFF}"
3333
enable_find_mpi="${enable_find_mpi:=ON}"
3434
enable_tests="${enable_tests:=OFF}"
3535
enable_verbose="${enable_verbose:=ON}"
36+
enable_64bit_ids="$enable_64bit_ids:=OFF}"
3637
build_jobs="${build_jobs:=6}"
3738
build_config="${build_config:=Release}"
3839
build_shared_libs="${build_shared_libs:=ON}"
@@ -634,7 +635,6 @@ if [[ "$enable_hip" == "ON" ]]; then
634635
fi
635636

636637
if [[ "$enable_sycl" == "ON" ]]; then
637-
kokkos_extra_cmake_args="-DCMAKE_CXX_FLAGS=-fPIC -fp-model=precise -Wno-unused-command-line-argument -Wno-deprecated-declarations -fsycl-device-code-split=per_kernel -fsycl-max-parallel-link-jobs=128"
638638
kokkos_extra_cmake_args="${kokkos_extra_cmake_args} -DKokkos_ENABLE_SYCL=ON"
639639
kokkos_extra_cmake_args="${kokkos_extra_cmake_args} -DKokkos_ARCH_INTEL_PVC=ON"
640640
kokkos_extra_cmake_args="${kokkos_extra_cmake_args} -DCMAKE_CXX_EXTENSIONS=OFF"
@@ -689,48 +689,64 @@ if [ ! -d ${vtkm_src_dir} ]; then
689689
cd ${root_dir}
690690
fi
691691

692-
693-
vtkm_extra_cmake_args=""
692+
vtkm_extra_cmake_args=()
694693
if [[ "$enable_cuda" == "ON" ]]; then
695-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DVTKm_ENABLE_CUDA=ON"
696-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DCMAKE_CUDA_HOST_COMPILER=${CXX}"
697-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DCMAKE_CUDA_ARCHITECTURES=${CUDA_ARCH}"
694+
vtkm_extra_cmake_args+=(
695+
-DVTKm_ENABLE_CUDA=ON
696+
-DCMAKE_CUDA_HOST_COMPILER="${CXX}"
697+
-DCMAKE_CUDA_ARCHITECTURES="${CUDA_ARCH}"
698+
)
698699
fi
699700

700701
if [[ "$enable_hip" == "ON" ]]; then
701-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DVTKm_ENABLE_KOKKOS=ON"
702-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DCMAKE_PREFIX_PATH=${kokkos_install_dir}"
703-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DCMAKE_HIP_ARCHITECTURES=${ROCM_ARCH}"
704-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DVTKm_ENABLE_KOKKOS_THRUST=OFF"
702+
vtkm_extra_cmake_args+=(
703+
-DVTKm_ENABLE_KOKKOS=ON
704+
-DCMAKE_PREFIX_PATH="${kokkos_install_dir}"
705+
-DCMAKE_HIP_ARCHITECTURES="${ROCM_ARCH}"
706+
-DVTKm_ENABLE_KOKKOS_THRUST=OFF
707+
)
705708
fi
706709

707710
if [[ "$enable_sycl" == "ON" ]]; then
708-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DVTKm_ENABLE_KOKKOS=ON"
709-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DCMAKE_PREFIX_PATH=${kokkos_install_dir}"
710-
vtkm_extra_cmake_args="-DCMAKE_CXX_FLAGS=-fPIC -fp-model=precise -Wno-unused-command-line-argument -Wno-deprecated-declarations -fsycl-device-code-split=per_kernel -fsycl-max-parallel-link-jobs=128"
711+
vtkm_extra_cmake_args+=(
712+
-DVTKm_ENABLE_KOKKOS=ON
713+
-DCMAKE_PREFIX_PATH="${kokkos_install_dir}"
714+
-DCMAKE_CXX_FLAGS="-fPIC -fp-model=precise -Wno-unused-command-line-argument -Wno-deprecated-declarations -fsycl-device-code-split=per_kernel -fsycl-max-parallel-link-jobs=20"
715+
)
711716
fi
712717

713718

714719
if [[ "$enable_mpicc" == "ON" ]]; then
715-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DMPI_C_COMPILER=${mpicc_exe}"
716-
vtkm_extra_cmake_args="${vtkm_extra_cmake_args} -DMPI_CXX_COMPILER=${mpicxx_exe}"
720+
vtkm_extra_cmake_args+=(
721+
-DMPI_C_COMPILER="${mpicc_exe}"
722+
-DMPI_CXX_COMPILER="${mpicxx_exe}"
723+
)
724+
fi
725+
726+
if [[ "$enable_64bit_ids" == "ON" ]]; then
727+
vtkm_extra_cmake_args+=(
728+
-DVTKM_ALLOW_64BIT_IDS_FOR_ASCENT=ON
729+
-DVTKm_USE_64BIT_IDS=ON
730+
)
717731
fi
718732

719733
echo "**** Configuring VTK-m ${vtkm_version}"
720734
cmake -S ${vtkm_src_dir} -B ${vtkm_build_dir} ${cmake_compiler_settings} \
721735
-DCMAKE_VERBOSE_MAKEFILE:BOOL=${enable_verbose}\
722736
-DCMAKE_BUILD_TYPE=${build_config} \
723737
-DBUILD_SHARED_LIBS=${build_shared_libs} \
724-
-DVTKm_USE_64BIT_IDS=OFF \
738+
-DVTKm_USE_64BIT_IDS=${enable_64bit_ids} \
739+
-DVTKM_ALLOW_64BIT_IDS_FOR_ASCENT=${enable_64bit_ids} \
725740
-DVTKm_USE_DOUBLE_PRECISION=ON \
726741
-DVTKm_USE_DEFAULT_TYPES_FOR_ASCENT=ON \
727742
-DVTKm_ENABLE_MPI=${enable_mpi} \
728743
-DVTKm_ENABLE_OPENMP=${enable_openmp}\
729744
-DVTKm_ENABLE_RENDERING=ON \
730745
-DVTKm_ENABLE_TESTING=OFF\
731746
-DBUILD_TESTING=OFF \
732-
-DVTKm_ENABLE_BENCHMARKS=OFF ${vtkm_extra_cmake_args} \
733-
-DCMAKE_INSTALL_PREFIX=${vtkm_install_dir}
747+
-DVTKm_ENABLE_BENCHMARKS=OFF \
748+
-DCMAKE_INSTALL_PREFIX=${vtkm_install_dir} \
749+
"${vtkm_extra_cmake_args[@]}"
734750

735751
echo "**** Building VTK-m ${vtkm_version}"
736752
cmake --build ${vtkm_build_dir} --config ${build_config} -j${build_jobs}
@@ -778,6 +794,11 @@ if [[ "$enable_hip" == "ON" ]]; then
778794
camp_extra_cmake_args="${camp_extra_cmake_args} -DROCM_PATH=${ROCM_PATH}"
779795
fi
780796

797+
if [[ "$enable_sycl" == "ON" ]]; then
798+
camp_extra_cmake_args="-DENABLE_SYCL=ON"
799+
fi
800+
801+
781802
echo "**** Configuring Camp ${camp_version}"
782803
cmake -S ${camp_src_dir} -B ${camp_build_dir} ${cmake_compiler_settings} \
783804
-DCMAKE_VERBOSE_MAKEFILE:BOOL=${enable_verbose}\
@@ -820,17 +841,28 @@ if [ ! -d ${raja_src_dir} ]; then
820841
tar ${tar_extra_args} -xzf ${raja_tarball} -C ${source_dir}
821842
fi
822843

823-
raja_extra_cmake_args=""
844+
raja_extra_cmake_args=()
824845
if [[ "$enable_cuda" == "ON" ]]; then
825-
raja_extra_cmake_args="-DENABLE_CUDA=ON"
826-
raja_extra_cmake_args="${raja_extra_cmake_args} -DCMAKE_CUDA_ARCHITECTURES=${CUDA_ARCH}"
846+
raja_extra_cmake_args=(
847+
-DENABLE_CUDA=ON
848+
-DCMAKE_CUDA_ARCHITECTURES="${CUDA_ARCH}"
849+
)
827850
fi
828851

829852
if [[ "$enable_hip" == "ON" ]]; then
830-
raja_extra_cmake_args="-DENABLE_HIP=ON"
831-
raja_extra_cmake_args="${raja_extra_cmake_args} -DCMAKE_HIP_COMPILER=${CXX}"
832-
raja_extra_cmake_args="${raja_extra_cmake_args} -DCMAKE_HIP_ARCHITECTURES=${ROCM_ARCH}"
833-
raja_extra_cmake_args="${raja_extra_cmake_args} -DROCM_PATH=${ROCM_PATH}"
853+
raja_extra_cmake_args=(
854+
-DENABLE_HIP=ON
855+
-DCMAKE_HIP_COMPILER="${CXX}"
856+
-DCMAKE_HIP_ARCHITECTURES="${ROCM_ARCH}"
857+
-DROCM_PATH="${ROCM_PATH}"
858+
)
859+
fi
860+
861+
if [[ "$enable_sycl" == "ON" ]]; then
862+
raja_extra_cmake_args=(
863+
-DENABLE_SYCL=ON
864+
-DCMAKE_CXX_FLAGS="-fsycl -fsycl-device-code-split=per_kernel -fsycl-max-parallel-link-jobs=128"
865+
)
834866
fi
835867

836868
echo "**** Configuring RAJA ${raja_version}"
@@ -843,9 +875,10 @@ cmake -S ${raja_src_dir} -B ${raja_build_dir} ${cmake_compiler_settings} \
843875
-DENABLE_TESTS=OFF \
844876
-DRAJA_ENABLE_TESTS=OFF \
845877
-DENABLE_EXAMPLES=OFF \
846-
-DENABLE_EXERCISES=OFF ${raja_extra_cmake_args} \
878+
-DENABLE_EXERCISES=OFF \
847879
-DCMAKE_INSTALL_PREFIX=${raja_install_dir} \
848-
-DRAJA_ENABLE_VECTORIZATION=${raja_enable_vectorization}
880+
-DRAJA_ENABLE_VECTORIZATION=${raja_enable_vectorization} \
881+
"${raja_extra_cmake_args[@]}"
849882

850883
echo "**** Building RAJA ${raja_version}"
851884
cmake --build ${raja_build_dir} --config ${build_config} -j${build_jobs}
@@ -1117,6 +1150,12 @@ if [[ "$enable_hip" == "ON" ]]; then
11171150
echo 'set(KOKKOS_DIR ' ${kokkos_install_dir} ' CACHE PATH "")' >> ${root_dir}/ascent-config.cmake
11181151
fi
11191152

1153+
if [[ "$enable_sycl" == "ON" ]]; then
1154+
echo 'set(BLT_CXX_STD c++17 CACHE STRING "")' >> ${root_dir}/ascent-config.cmake
1155+
echo 'set(KOKKOS_DIR ' ${kokkos_install_dir} ' CACHE PATH "")' >> ${root_dir}/ascent-config.cmake
1156+
echo 'set(CMAKE_CXX_FLAGS "-fPIC -fp-model=precise -fsycl -fsycl-device-code-split=per_kernel -fsycl-max-parallel-link-jobs=128" CACHE PATH "")' >> ${root_dir}/ascent-config.cmake
1157+
fi
1158+
11201159
# build only if install doesn't exist
11211160
if [ ! -d ${ascent_install_dir} ]; then
11221161
if ${build_ascent}; then

0 commit comments

Comments
 (0)