Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 19 additions & 10 deletions EESSI-extend-easybuild.eb
Original file line number Diff line number Diff line change
Expand Up @@ -93,27 +93,31 @@ working_dir = os.getenv("WORKING_DIR") or pathJoin("/tmp", os.getenv("USER"))
-- Gather the EPREFIX to use as a sysroot
sysroot = os.getenv("EESSI_EPREFIX")

-- Check if we have GPU capabilities and configure CUDA compute capabilities
-- Check if we have GPU capabilities and configure AMD/CUDA compute capabilities
eessi_accelerator_target = os.getenv("EESSI_ACCELERATOR_TARGET")
if (eessi_accelerator_target ~= nil) then
cuda_compute_capability = string.match(eessi_accelerator_target, "^accel/nvidia/cc([0-9]+)$")
amd_compute_capability = string.match(eessi_accelerator_target, "^accel/amd/(gfx[0-9a-f]+)$")

if (cuda_compute_capability ~= nil) then
-- The last digit should be the minor version, insert a dot in the one-but-last position
major_version = cuda_compute_capability:sub(1, #cuda_compute_capability - 1)
minor_version = cuda_compute_capability:sub(#cuda_compute_capability)
easybuild_cuda_compute_capabilities = string.format("%s.%s", major_version, minor_version)

-- If architectures are 9.0, 10.0 or 12.0, enable architecture or family-specific optimizations
if easybuild_cuda_compute_capabilities == '9.0' then
easybuild_cuda_compute_capabilities = '9.0a'
elseif easybuild_cuda_compute_capabilities == '10.0' then
easybuild_cuda_compute_capabilities = '10.0f'
elseif easybuild_cuda_compute_capabilities == '12.0' then
easybuild_cuda_compute_capabilities = '12.0f'
end
elseif (amd_compute_capability ~= nil) then
easybuild_amdgcn_compute_capabilities = amd_compute_capability
else
LmodError("Incorrect value for $EESSI_ACCELERATOR_TARGET: " .. eessi_accelerator_target)
end

-- If architectures are 9.0, 10.0 or 12.0, enable architecture or family-specific optimizations
if easybuild_cuda_compute_capabilities == '9.0' then
easybuild_cuda_compute_capabilities = '9.0a'
elseif easybuild_cuda_compute_capabilities == '10.0' then
easybuild_cuda_compute_capabilities = '10.0f'
elseif easybuild_cuda_compute_capabilities == '12.0' then
easybuild_cuda_compute_capabilities = '12.0f'
end
end

-- Some environment variables affect behaviour, let's gather them once
Expand Down Expand Up @@ -202,6 +206,11 @@ if (easybuild_cuda_compute_capabilities ~= nil) then
setenv ("EASYBUILD_CUDA_COMPUTE_CAPABILITIES", easybuild_cuda_compute_capabilities)
end

-- Set environment variables if building for AMDGCN compute capabilities
if (easybuild_amdgcn_compute_capabilities ~= nil) then
setenv ("EASYBUILD_AMDGCN_CAPABILITIES", easybuild_amdgcn_compute_capabilities)
end

-- Set all related environment variables if we have project or user installations (including extending MODULEPATH)
if (user_modulepath ~= nil) then
-- Use a more restrictive umask for this case
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
easyconfigs:
- ROCm-LLVM-19.0.0-GCCcore-14.2.0-ROCm-6.4.1.eb
Loading