diff --git a/Golden_Repo/m/magma/magma-2.6.1_allow-all-sms.patch b/Golden_Repo/m/magma/magma-2.6.1_allow-all-sms.patch new file mode 100644 index 0000000000000000000000000000000000000000..5f077c673a6a1f49d97914d5bc2b14df38ed6293 --- /dev/null +++ b/Golden_Repo/m/magma/magma-2.6.1_allow-all-sms.patch @@ -0,0 +1,230 @@ +This allows to process any sm_xx passed to GPU_TARGET. Previously some were silently ignored +See https://bitbucket.org/icl/magma/issues/32/list-of-whitelisted-sm_-values-for-cuda-is +and https://bitbucket.org/icl/magma/pull-requests/5 + +Author: Alexander Grund (TU Dresden) +Updated to 2.6.1: micketeer@gmail.com + +--- CMakeLists.txt.orig 2021-07-06 17:02:37.125227748 +0200 ++++ CMakeLists.txt 2021-07-06 18:43:13.400804473 +0200 +@@ -124,14 +124,6 @@ + #message( STATUS " CUDA_CUBLAS_LIBRARIES: ${CUDA_CUBLAS_LIBRARIES}" ) + include_directories( ${CUDA_INCLUDE_DIRS} ) + +- # NVCC options for the different cards +- # sm_xx is binary, compute_xx is PTX for forward compatability +- # MIN_ARCH is lowest requested version +- # NV_SM accumulates sm_xx for all requested versions +- # NV_COMP is compute_xx for highest requested version +- set( NV_SM "" ) +- set( NV_COMP "" ) +- + set(CUDA_SEPARABLE_COMPILATION ON) + + # nvcc >= 6.5 supports -std=c++11, so propagate CXXFLAGS to NVCCFLAGS. +@@ -140,168 +132,44 @@ + ## set( CUDA_PROPAGATE_HOST_FLAGS OFF ) + ##endif() + +- if (GPU_TARGET MATCHES Fermi) +- set( GPU_TARGET "${GPU_TARGET} sm_20" ) +- endif() +- +- if (GPU_TARGET MATCHES Kepler) +- set( GPU_TARGET "${GPU_TARGET} sm_30 sm_35 sm_37" ) +- endif() +- +- if (GPU_TARGET MATCHES Maxwell) +- set( GPU_TARGET "${GPU_TARGET} sm_50" ) +- endif() +- +- if (GPU_TARGET MATCHES Pascal) +- set( GPU_TARGET "${GPU_TARGET} sm_60" ) +- endif() +- +- if (GPU_TARGET MATCHES Volta) +- set( GPU_TARGET "${GPU_TARGET} sm_70" ) +- endif() +- +- if (GPU_TARGET MATCHES Turing) +- set( GPU_TARGET "${GPU_TARGET} sm_75" ) +- endif() +- +- if (GPU_TARGET MATCHES Ampere) +- set( GPU_TARGET "${GPU_TARGET} sm_80" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_20) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 200 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_20,code=sm_20 ) +- set( NV_COMP -gencode arch=compute_20,code=compute_20 ) +- message( STATUS " compile for CUDA arch 2.0 (Fermi)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_30) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 300 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_30,code=sm_30 ) +- set( NV_COMP -gencode arch=compute_30,code=compute_30 ) +- message( STATUS " compile for CUDA arch 3.0 (Kepler)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_35) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 300 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_35,code=sm_35 ) +- set( NV_COMP -gencode arch=compute_35,code=compute_35 ) +- message( STATUS " compile for CUDA arch 3.5 (Kepler)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_37) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 300 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_37,code=sm_37 ) +- set( NV_COMP -gencode arch=compute_37,code=compute_37 ) +- message( STATUS " compile for CUDA arch 3.7 (Kepler)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_50) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 500 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_50,code=sm_50 ) +- set( NV_COMP -gencode arch=compute_50,code=compute_50 ) +- message( STATUS " compile for CUDA arch 5.0 (Maxwell)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_52) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 520 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_52,code=sm_52 ) +- set( NV_COMP -gencode arch=compute_52,code=compute_52 ) +- message( STATUS " compile for CUDA arch 5.2 (Maxwell)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_53) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 530 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_53,code=sm_53 ) +- set( NV_COMP -gencode arch=compute_53,code=compute_53 ) +- message( STATUS " compile for CUDA arch 5.3 (Maxwell)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_60) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 600 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_60,code=sm_60 ) +- set( NV_COMP -gencode arch=compute_60,code=compute_60 ) +- message( STATUS " compile for CUDA arch 6.0 (Pascal)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_61) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 610 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_61,code=sm_61 ) +- set( NV_COMP -gencode arch=compute_61,code=compute_61 ) +- message( STATUS " compile for CUDA arch 6.1 (Pascal)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_62) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 620 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_62,code=sm_62 ) +- set( NV_COMP -gencode arch=compute_62,code=compute_62 ) +- message( STATUS " compile for CUDA arch 6.2 (Pascal)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_70) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 700 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_70,code=sm_70 ) +- set( NV_COMP -gencode arch=compute_70,code=compute_70 ) +- message( STATUS " compile for CUDA arch 7.0 (Volta)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_71) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 710 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_71,code=sm_71 ) +- set( NV_COMP -gencode arch=compute_71,code=compute_71 ) +- message( STATUS " compile for CUDA arch 7.1 (Volta)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_75) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 750 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_75,code=sm_75 ) +- set( NV_COMP -gencode arch=compute_75,code=compute_75 ) +- message( STATUS " compile for CUDA arch 7.5 (Turing)" ) +- endif() +- +- if (GPU_TARGET MATCHES sm_80) +- if (NOT MIN_ARCH) +- set( MIN_ARCH 800 ) +- endif() +- set( NV_SM ${NV_SM} -gencode arch=compute_80,code=sm_80 ) +- set( NV_COMP -gencode arch=compute_80,code=compute_80 ) +- message( STATUS " compile for CUDA arch 8.0 (Ampere)" ) +- endif() +- +- if (NOT MIN_ARCH) +- message( FATAL_ERROR "GPU_TARGET must contain one or more of Fermi, Kepler, Maxwell, Pascal, Volta, Turing, Ampere, or valid sm_[0-9][0-9]" ) +- endif() ++ # NVCC options for the different cards ++ # sm_xx is binary, compute_xx is PTX for forward compatability ++ # MIN_SM/MAX_SM is lowest/highest requested version ++ # NV_SM accumulates sm_xx for all requested versions ++ # NV_COMP is compute_xx for highest requested version ++ set( MIN_SM 99 ) ++ set( MAX_SM 0 ) ++ set( NV_SM "" ) ++ set( NV_COMP "" ) + +- set( CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -Xcompiler -fPIC ${NV_SM} ${NV_COMP} ${FORTRAN_CONVENTION} ) +- #add_definitions( "-DMAGMA_HAVE_CUDA -DMAGMA_CUDA_ARCH_MIN=${MIN_ARCH}" ) +- set(MAGMA_HAVE_CUDA "1") +- set(MAGMA_CUDA_ARCH_MIN "${MIN_ARCH}") ++ string( REGEX MATCHALL "sm_[0-9][0-9]" sms "${GPU_TARGET}" ) ++ list( SORT sms ) # To make output easier to reason about ++ foreach (sm IN LISTS sms) ++ string( REPLACE "sm_" "" sm "${sm}") # Remove sm_ prefix ++ if (sm LESS MIN_SM) ++ set( MIN_SM "${sm}" ) ++ endif() ++ if (sm GREATER MAX_SM) ++ set( MAX_SM "${sm}" ) ++ endif() ++ list( APPEND NV_SM -gencode arch=compute_${sm},code=sm_${sm} ) ++ string( REGEX REPLACE "([0-9])([0-9])" "\\1.\\2" cuda_arch "${sm}" ) ++ message( STATUS " compile for CUDA arch ${cuda_arch}" ) ++ endforeach() ++ ++ if (NOT NV_SM) ++ message( FATAL_ERROR ++ "GPU_TARGET must contain one or more of " ++ "Fermi, Kepler, Maxwell, Pascal, Volta, Turing, Ampere, or valid sm_[0-9][0-9]" ++ "Was: ${GPU_TARGET}" ) ++ endif() ++ ++ set( MIN_ARCH ${MIN_SM}0 ) ++ set( NV_COMP -gencode arch=compute_${MAX_SM},code=compute_${MAX_SM} ) ++ ++ list( APPEND CUDA_NVCC_FLAGS -Xcompiler -fPIC ${NV_SM} ${NV_COMP} ${FORTRAN_CONVENTION} ) ++ add_definitions( -DMAGMA_HAVE_CUDA=1 ) ++ add_definitions( -DMAGMA_CUDA_ARCH_MIN=${MIN_ARCH} ) + message( STATUS "Define -DMAGMA_HAVE_CUDA -DMAGMA_CUDA_ARCH_MIN=${MIN_ARCH}" ) + else() + message( STATUS "Could not find CUDA" ) diff --git a/Golden_Repo/m/magma/magma-2.6.2-foss-2022a-CUDA-11.7.eb b/Golden_Repo/m/magma/magma-2.6.2-foss-2022a-CUDA-11.7.eb index 270b017de4d7da9ad11a4917b23378fbc61ee0e1..27a5e9a080037f1cf26611e2db75345fa2089368 100644 --- a/Golden_Repo/m/magma/magma-2.6.2-foss-2022a-CUDA-11.7.eb +++ b/Golden_Repo/m/magma/magma-2.6.2-foss-2022a-CUDA-11.7.eb @@ -26,12 +26,13 @@ builddependencies = [ ] dependencies = [ ('CUDA', '11.7', '', SYSTEM), - ('UCX', 'default'), ] # make sure both static and shared libs are built configopts = [ - '-DBUILD_SHARED_LIBS=%s -DGPU_TARGET="%%(cuda_sm_space_sep)s" ' % local_shared for local_shared in ('ON', 'OFF') + '-DMKL_ILP64=ON \ + -DBUILD_SHARED_LIBS=%s \ + -DGPU_TARGET="%%(cuda_sm_space_sep)s" ' % local_shared for local_shared in ('ON', 'OFF') ] sanity_check_paths = {