From d0a086142b966a70ae0fbcf3813d042ec5a4c55b Mon Sep 17 00:00:00 2001 From: thansen-amd Date: Thu, 12 Oct 2023 10:32:22 -0600 Subject: [PATCH 01/25] add asan setup and change to settings map --- .jenkins/asan.groovy | 80 ++++++++++++++++++++++++++++++++++ .jenkins/codecov.groovy | 4 +- .jenkins/common.groovy | 13 +++--- .jenkins/precheckin.groovy | 4 +- .jenkins/staticanalysis.groovy | 4 +- 5 files changed, 96 insertions(+), 9 deletions(-) create mode 100644 .jenkins/asan.groovy diff --git a/.jenkins/asan.groovy b/.jenkins/asan.groovy new file mode 100644 index 00000000000..3be13ab2e71 --- /dev/null +++ b/.jenkins/asan.groovy @@ -0,0 +1,80 @@ +#!/usr/bin/env groovy +@Library('rocJenkins@pong') _ +import com.amd.project.* +import com.amd.docker.* +import java.nio.file.Path; + +def runCI = +{ + nodeDetails, jobName-> + + def prj = new rocProject('rocRAND', 'address-sanitizer') + + def nodes = new dockerNodes(nodeDetails, jobName, prj) + + def commonGroovy + + def settings = [addressSanitizer: true] + + boolean formatCheck = false + + def compileCommand = + { + platform, project-> + + commonGroovy = load "${project.paths.project_src_prefix}/.jenkins/common.groovy" + commonGroovy.runCompileCommand(platform, project, jobName, settings) + } + + + def testCommand = + { + platform, project-> + + commonGroovy.runTestCommand(platform, project) + } + + def packageCommand = + { + platform, project-> + + commonGroovy.runPackageCommand(platform, project) + } + + buildProject(prj, formatCheck, nodes.dockerArray, compileCommand, testCommand, packageCommand) +} + +ci: { + String urlJobName = auxiliary.getTopJobName(env.BUILD_URL) + + def propertyList = ["compute-rocm-dkms-no-npi-hipclang":[pipelineTriggers([cron('0 1 * * 0')])]] + propertyList = auxiliary.appendPropertyList(propertyList) + + def jobNameList = ["compute-rocm-dkms-no-npi-hipclang":([ubuntu18:['gfx900'],centos7:['gfx906'],centos8:['gfx906'],sles15sp1:['gfx908']])] + jobNameList = auxiliary.appendJobNameList(jobNameList) + + propertyList.each + { + jobName, property-> + if (urlJobName == jobName) + properties(auxiliary.addCommonProperties(property)) + } + + jobNameList.each + { + jobName, nodeDetails-> + if (urlJobName == jobName) + stage(jobName) { + runCI(nodeDetails, jobName) + } + } + + // For url job names that are not listed by the jobNameList i.e. compute-rocm-dkms-no-npi-1901 + if(!jobNameList.keySet().contains(urlJobName)) + { + properties(auxiliary.addCommonProperties([pipelineTriggers([cron('0 1 * * *')])])) + stage(urlJobName) { + runCI([ubuntu16:['gfx906']], urlJobName) + } + } +} \ No newline at end of file diff --git a/.jenkins/codecov.groovy b/.jenkins/codecov.groovy index ef6c6a7dcc8..616f37af574 100644 --- a/.jenkins/codecov.groovy +++ b/.jenkins/codecov.groovy @@ -14,6 +14,8 @@ def runCI = def commonGroovy + def settings = [codeCoverage: true] + boolean formatCheck = false def compileCommand = @@ -21,7 +23,7 @@ def runCI = platform, project-> commonGroovy = load "${project.paths.project_src_prefix}/.jenkins/common.groovy" - commonGroovy.runCompileCommand(platform, project, jobName, false, false, true) + commonGroovy.runCompileCommand(platform, project, jobName, settings) } def testCommand = diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index d157cbb36a5..a656a0144a5 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -1,15 +1,16 @@ // This file is for internal AMD use. // If you are interested in running your own Jenkins, please raise a github issue for assistance. -def runCompileCommand(platform, project, jobName, boolean debug=false, boolean staticLibrary=false, boolean codeCoverage=false) +def runCompileCommand(platform, project, jobName, settings) { project.paths.construct_build_prefix() project.paths.build_command = './install -c' - String buildTypeArg = debug ? '-DCMAKE_BUILD_TYPE=Debug' : '-DCMAKE_BUILD_TYPE=Release' - String buildTypeDir = debug ? 'debug' : 'release' - String buildStatic = staticLibrary ? '-DBUILD_STATIC_LIBS=ON' : '-DBUILD_SHARED=OFF' - String codeCovFlag = codeCoverage ? '-DCODE_COVERAGE=ON' : '' + String buildTypeArg = settings.debug ? '-DCMAKE_BUILD_TYPE=Debug' : '-DCMAKE_BUILD_TYPE=Release' + String buildTypeDir = settings.debug ?: 'release' + String buildStatic = settings.staticLibrary ? '-DBUILD_STATIC_LIBS=ON' : '-DBUILD_SHARED=OFF' + String codeCovFlag = settings.codeCoverage ? '-DCODE_COVERAGE=ON' : '' + String asanFlag = settings.addressSanitizer ? '-DBUILD_ADDRESS_SANITIZER=ON' : '' String cmake = platform.jenkinsLabel.contains('centos') ? 'cmake3' : 'cmake' //Set CI node's gfx arch as target if PR, otherwise use default targets of the library String amdgpuTargets = env.BRANCH_NAME.startsWith('PR-') ? '-DAMDGPU_TARGETS=\$gfx_arch' : '' @@ -20,7 +21,7 @@ def runCompileCommand(platform, project, jobName, boolean debug=false, boolean s mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir} # gfxTargetParser reads gfxarch and adds target features such as xnack ${auxiliary.gfxTargetParser()} - ${cmake} -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc ${buildTypeArg} ${buildStatic} ${amdgpuTargets} ${codeCovFlag} -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON ../.. + ${cmake} -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc ${buildTypeArg} ${buildStatic} ${amdgpuTargets} ${codeCovFlag} ${asanFlag} -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON ../.. make -j\$(nproc) """ diff --git a/.jenkins/precheckin.groovy b/.jenkins/precheckin.groovy index d067fd851d3..b31aabc5344 100644 --- a/.jenkins/precheckin.groovy +++ b/.jenkins/precheckin.groovy @@ -14,6 +14,8 @@ def runCI = def commonGroovy + def settings = [:] + boolean formatCheck = false def compileCommand = @@ -21,7 +23,7 @@ def runCI = platform, project-> commonGroovy = load "${project.paths.project_src_prefix}/.jenkins/common.groovy" - commonGroovy.runCompileCommand(platform, project, jobName) + commonGroovy.runCompileCommand(platform, project, jobName, settings) } diff --git a/.jenkins/staticanalysis.groovy b/.jenkins/staticanalysis.groovy index 1bb7b4fad93..789a6f3f912 100644 --- a/.jenkins/staticanalysis.groovy +++ b/.jenkins/staticanalysis.groovy @@ -16,6 +16,8 @@ def runCompileCommand(platform, project, jobName, boolean debug=false) def runCI = { + def settings = [:] + nodeDetails, jobName-> def prj = new rocProject('rocRAND', 'StaticAnalysis') @@ -30,7 +32,7 @@ def runCI = { platform, project-> - runCompileCommand(platform, project, jobName, false) + runCompileCommand(platform, project, jobName, settings) } buildProject(prj , formatCheck, nodes.dockerArray, compileCommand, null, null, staticAnalysis) From 67ddaf9ccf8a3a31a44acb3c92aec20fc7b36726 Mon Sep 17 00:00:00 2001 From: thansen-amd Date: Thu, 12 Oct 2023 11:11:21 -0600 Subject: [PATCH 02/25] staticanalysis settings --- .jenkins/staticanalysis.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.jenkins/staticanalysis.groovy b/.jenkins/staticanalysis.groovy index 789a6f3f912..6a08920f0c6 100644 --- a/.jenkins/staticanalysis.groovy +++ b/.jenkins/staticanalysis.groovy @@ -9,7 +9,7 @@ import com.amd.project.* import com.amd.docker.* import java.nio.file.Path -def runCompileCommand(platform, project, jobName, boolean debug=false) +def runCompileCommand(platform, project, jobName, settings) { project.paths.construct_build_prefix() } From 19b6878c8a8057d50239cdf61b9852a78a0d658f Mon Sep 17 00:00:00 2001 From: thansen-amd Date: Tue, 17 Oct 2023 09:10:59 -0600 Subject: [PATCH 03/25] link test command with asan files --- .jenkins/asan.groovy | 2 +- .jenkins/common.groovy | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/.jenkins/asan.groovy b/.jenkins/asan.groovy index 3be13ab2e71..1ef93ece2f7 100644 --- a/.jenkins/asan.groovy +++ b/.jenkins/asan.groovy @@ -31,7 +31,7 @@ def runCI = { platform, project-> - commonGroovy.runTestCommand(platform, project) + commonGroovy.runASANTestCommand(platform, project) } def packageCommand = diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index a656a0144a5..4451d8b19a5 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -46,6 +46,30 @@ def runTestCommand (platform, project) platform.runCommand(this, command) } +def runASANTestCommand (platform, project) +{ + //Temporary workaround due to bug in container + String centos7Workaround = platform.jenkinsLabel.contains('centos7') ? 'export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib64/' : '' + + String sudo = auxiliary.sudo(platform.jenkinsLabel) + // String centos = platform.jenkinsLabel.contains('centos') ? '3' : '' + // Disable xorwow test for now as it is a known failure with gfx90a. + // def testCommand = "ctest${centos} --output-on-failure" + def testCommand = "ctest --output-on-failure" + + def command = """#!/usr/bin/env bash + set -x + cd ${project.paths.project_build_prefix}/build/release + make -j4 + export ASAN_LIB_PATH=\$(/opt/rocm/llvm/bin/clang -print-file-name=libclang_rt.asan-x86_64.so) + export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$(dirname "\${ASAN_LIB_PATH}") + ${centos7Workaround} + ${sudo} ${testCommand} + """ + + platform.runCommand(this, command) +} + def runPackageCommand(platform, project) { def packageHelper = platform.makePackage(platform.jenkinsLabel,"${project.paths.project_build_prefix}/build/release") From 16930dd4b8e7b16c66ff6faef8e60af8d5f6efcd Mon Sep 17 00:00:00 2001 From: thansen-amd Date: Tue, 17 Oct 2023 09:50:40 -0600 Subject: [PATCH 04/25] test command to settings map --- .jenkins/asan.groovy | 2 +- .jenkins/common.groovy | 32 ++++++-------------------------- .jenkins/precheckin.groovy | 2 +- 3 files changed, 8 insertions(+), 28 deletions(-) diff --git a/.jenkins/asan.groovy b/.jenkins/asan.groovy index 1ef93ece2f7..71fbc01c75a 100644 --- a/.jenkins/asan.groovy +++ b/.jenkins/asan.groovy @@ -31,7 +31,7 @@ def runCI = { platform, project-> - commonGroovy.runASANTestCommand(platform, project) + commonGroovy.runTestCommand(platform, project, settings) } def packageCommand = diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index 4451d8b19a5..d72e1ed7d3e 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -28,7 +28,7 @@ def runCompileCommand(platform, project, jobName, settings) platform.runCommand(this, command) } -def runTestCommand (platform, project) +def runTestCommand (platform, project, settings) { String sudo = auxiliary.sudo(platform.jenkinsLabel) // String centos = platform.jenkinsLabel.contains('centos') ? '3' : '' @@ -36,40 +36,20 @@ def runTestCommand (platform, project) // def testCommand = "ctest${centos} --output-on-failure" def testCommand = "ctest --output-on-failure" + String LD_PATH = settings.addressSanitizer ? 'export ASAN_LIB_PATH=\$(/opt/rocm/llvm/bin/clang -print-file-name=libclang_rt.asan-x86_64.so) \ + export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$(dirname "\${ASAN_LIB_PATH}")' : 'export LD_LIBRARY_PATH=/opt/rocm/lib/' + def command = """#!/usr/bin/env bash set -x cd ${project.paths.project_build_prefix}/build/release make -j4 - ${sudo} LD_LIBRARY_PATH=/opt/rocm/lib/ ${testCommand} + ${LD_PATH} + ${sudo} ${testCommand} """ platform.runCommand(this, command) } -def runASANTestCommand (platform, project) -{ - //Temporary workaround due to bug in container - String centos7Workaround = platform.jenkinsLabel.contains('centos7') ? 'export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib64/' : '' - - String sudo = auxiliary.sudo(platform.jenkinsLabel) - // String centos = platform.jenkinsLabel.contains('centos') ? '3' : '' - // Disable xorwow test for now as it is a known failure with gfx90a. - // def testCommand = "ctest${centos} --output-on-failure" - def testCommand = "ctest --output-on-failure" - - def command = """#!/usr/bin/env bash - set -x - cd ${project.paths.project_build_prefix}/build/release - make -j4 - export ASAN_LIB_PATH=\$(/opt/rocm/llvm/bin/clang -print-file-name=libclang_rt.asan-x86_64.so) - export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$(dirname "\${ASAN_LIB_PATH}") - ${centos7Workaround} - ${sudo} ${testCommand} - """ - - platform.runCommand(this, command) -} - def runPackageCommand(platform, project) { def packageHelper = platform.makePackage(platform.jenkinsLabel,"${project.paths.project_build_prefix}/build/release") diff --git a/.jenkins/precheckin.groovy b/.jenkins/precheckin.groovy index b31aabc5344..386e56fc055 100644 --- a/.jenkins/precheckin.groovy +++ b/.jenkins/precheckin.groovy @@ -31,7 +31,7 @@ def runCI = { platform, project-> - commonGroovy.runTestCommand(platform, project) + commonGroovy.runTestCommand(platform, project, settings) } def packageCommand = From 3712950a4b9cb74fe7eb35b5138707e53fb6dabf Mon Sep 17 00:00:00 2001 From: thansen-amd Date: Tue, 17 Oct 2023 11:11:35 -0600 Subject: [PATCH 05/25] string literal for multiple commands --- .jenkins/common.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index d72e1ed7d3e..9cc362a402c 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -36,8 +36,8 @@ def runTestCommand (platform, project, settings) // def testCommand = "ctest${centos} --output-on-failure" def testCommand = "ctest --output-on-failure" - String LD_PATH = settings.addressSanitizer ? 'export ASAN_LIB_PATH=\$(/opt/rocm/llvm/bin/clang -print-file-name=libclang_rt.asan-x86_64.so) \ - export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$(dirname "\${ASAN_LIB_PATH}")' : 'export LD_LIBRARY_PATH=/opt/rocm/lib/' + String LD_PATH = settings.addressSanitizer ? """export ASAN_LIB_PATH=\$(/opt/rocm/llvm/bin/clang -print-file-name=libclang_rt.asan-x86_64.so) + export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$(dirname "\${ASAN_LIB_PATH}")""" : 'export LD_LIBRARY_PATH=/opt/rocm/lib/' def command = """#!/usr/bin/env bash set -x From 6969dbd5ea86ee1997220383735b455612fb49f7 Mon Sep 17 00:00:00 2001 From: Deng Date: Mon, 30 Sep 2024 10:29:02 -0600 Subject: [PATCH 06/25] xnack toggle for ASAN CI --- .jenkins/common.groovy | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index bb49de225dd..71fe7955631 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -15,8 +15,12 @@ def runCompileCommand(platform, project, jobName, settings) //Set CI node's gfx arch as target if PR, otherwise use default targets of the library String amdgpuTargets = env.BRANCH_NAME.startsWith('PR-') ? '-DAMDGPU_TARGETS=\$gfx_arch' : '' + String xnackToggle = settings.addressSanitizer ? "export HSA_XNACK=1" : '' + def command = """#!/usr/bin/env bash set -x + ${xnackToggle} + rocminfo cd ${project.paths.project_build_prefix} mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir} # gfxTargetParser reads gfxarch and adds target features such as xnack From 055aab65706bdcbd38772524069b506ec699635b Mon Sep 17 00:00:00 2001 From: Deng Date: Mon, 30 Sep 2024 10:41:39 -0600 Subject: [PATCH 07/25] hard code gfx942:xnack+ for testing --- .jenkins/common.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index 71fe7955631..cff867665a8 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -25,7 +25,7 @@ def runCompileCommand(platform, project, jobName, settings) mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir} # gfxTargetParser reads gfxarch and adds target features such as xnack ${auxiliary.gfxTargetParser()} - ${cmake} --toolchain=toolchain-linux.cmake ${buildTypeArg} ${buildStatic} ${amdgpuTargets} ${codeCovFlag} ${asanFlag} -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON ../.. + ${cmake} --toolchain=toolchain-linux.cmake ${buildTypeArg} ${buildStatic} -DAMDGPU_TARGETS=gfx942:xnack+ ${codeCovFlag} ${asanFlag} -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON ../.. make -j\$(nproc) """ From a0ef31fc8bb81a3f1977293b3afd1298662b2987 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 13:50:48 -0600 Subject: [PATCH 08/25] set amdclang++ and debug ldd info --- .jenkins/common.groovy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index cff867665a8..b2c07f9c7f7 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -20,6 +20,7 @@ def runCompileCommand(platform, project, jobName, settings) def command = """#!/usr/bin/env bash set -x ${xnackToggle} + export "CMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++" rocminfo cd ${project.paths.project_build_prefix} mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir} @@ -48,6 +49,7 @@ def runTestCommand (platform, project, settings) cd ${project.paths.project_build_prefix}/build/release make -j4 ${LD_PATH} + ldd rocRAND ${sudo} ${testCommand} """ From 6e03d246b5ee4934d028265131e4f048a7b2a4ae Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 14:24:12 -0600 Subject: [PATCH 09/25] use install script --- .jenkins/common.groovy | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index b2c07f9c7f7..e7fbbe84da0 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -20,14 +20,12 @@ def runCompileCommand(platform, project, jobName, settings) def command = """#!/usr/bin/env bash set -x ${xnackToggle} - export "CMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++" rocminfo cd ${project.paths.project_build_prefix} mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir} # gfxTargetParser reads gfxarch and adds target features such as xnack ${auxiliary.gfxTargetParser()} - ${cmake} --toolchain=toolchain-linux.cmake ${buildTypeArg} ${buildStatic} -DAMDGPU_TARGETS=gfx942:xnack+ ${codeCovFlag} ${asanFlag} -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON ../.. - make -j\$(nproc) + ./install -ci --address-sanitizer """ platform.runCommand(this, command) @@ -49,7 +47,6 @@ def runTestCommand (platform, project, settings) cd ${project.paths.project_build_prefix}/build/release make -j4 ${LD_PATH} - ldd rocRAND ${sudo} ${testCommand} """ From 65b6baf8b7558c6314a68f59e4b6ecd825be5158 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 14:29:47 -0600 Subject: [PATCH 10/25] removed cd --- .jenkins/common.groovy | 2 -- 1 file changed, 2 deletions(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index e7fbbe84da0..8cf070b6bda 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -21,8 +21,6 @@ def runCompileCommand(platform, project, jobName, settings) set -x ${xnackToggle} rocminfo - cd ${project.paths.project_build_prefix} - mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir} # gfxTargetParser reads gfxarch and adds target features such as xnack ${auxiliary.gfxTargetParser()} ./install -ci --address-sanitizer From 83308e26187ee9d6a935159885cd9eff79a87e19 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 14:38:09 -0600 Subject: [PATCH 11/25] CD fix --- .jenkins/common.groovy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index 8cf070b6bda..8c0368d46b6 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -21,6 +21,7 @@ def runCompileCommand(platform, project, jobName, settings) set -x ${xnackToggle} rocminfo + cd ${project.paths.project_build_prefix} # gfxTargetParser reads gfxarch and adds target features such as xnack ${auxiliary.gfxTargetParser()} ./install -ci --address-sanitizer @@ -45,6 +46,7 @@ def runTestCommand (platform, project, settings) cd ${project.paths.project_build_prefix}/build/release make -j4 ${LD_PATH} + ldd ctest ${sudo} ${testCommand} """ From 09151b2a9c545292c48bd10d486e7d9e7ec953a1 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 15:46:44 -0600 Subject: [PATCH 12/25] give permisions to install --- .jenkins/common.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index 8c0368d46b6..dbad5114f93 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -24,7 +24,7 @@ def runCompileCommand(platform, project, jobName, settings) cd ${project.paths.project_build_prefix} # gfxTargetParser reads gfxarch and adds target features such as xnack ${auxiliary.gfxTargetParser()} - ./install -ci --address-sanitizer + sudo ./install -ci --address-sanitizer """ platform.runCommand(this, command) From 8f56257cb3b0a583ea4dd899836e603236466f5a Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 15:47:58 -0600 Subject: [PATCH 13/25] env variables --- .jenkins/common.groovy | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index dbad5114f93..c10c2a3a6e7 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -21,6 +21,13 @@ def runCompileCommand(platform, project, jobName, settings) set -x ${xnackToggle} rocminfo + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/llvm/lib/clang/18/lib/linux + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib/asan + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/libexec/rocm_smi + export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer + export PATH=/opt/rocm/llvm/bin/:$PATH + export PATH=/opt/rocm/:$PATH + export HSA_XNACK=1 cd ${project.paths.project_build_prefix} # gfxTargetParser reads gfxarch and adds target features such as xnack ${auxiliary.gfxTargetParser()} @@ -44,6 +51,13 @@ def runTestCommand (platform, project, settings) def command = """#!/usr/bin/env bash set -x cd ${project.paths.project_build_prefix}/build/release + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/llvm/lib/clang/18/lib/linux + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib/asan + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/libexec/rocm_smi + export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer + export PATH=/opt/rocm/llvm/bin/:$PATH + export PATH=/opt/rocm/:$PATH + export HSA_XNACK=1 make -j4 ${LD_PATH} ldd ctest From bdc8189ea6543c513c78d4439046a84851863f28 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 15:48:29 -0600 Subject: [PATCH 14/25] env variables --- .jenkins/common.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index c10c2a3a6e7..f1579c64587 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -22,7 +22,7 @@ def runCompileCommand(platform, project, jobName, settings) ${xnackToggle} rocminfo export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/llvm/lib/clang/18/lib/linux - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib/asan + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/libexec/rocm_smi export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer export PATH=/opt/rocm/llvm/bin/:$PATH @@ -52,7 +52,7 @@ def runTestCommand (platform, project, settings) set -x cd ${project.paths.project_build_prefix}/build/release export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/llvm/lib/clang/18/lib/linux - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib/asan + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/libexec/rocm_smi export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer export PATH=/opt/rocm/llvm/bin/:$PATH From e43e3737bfb6c5071108005bd391976d45b27082 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 16:01:17 -0600 Subject: [PATCH 15/25] fix syntax --- .jenkins/common.groovy | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index f1579c64587..acc8dcca85d 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -21,12 +21,12 @@ def runCompileCommand(platform, project, jobName, settings) set -x ${xnackToggle} rocminfo - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/llvm/lib/clang/18/lib/linux - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/libexec/rocm_smi + export LD_LIBRARY_PATH=:/opt/rocm/llvm/lib/clang/18/lib/linux + export LD_LIBRARY_PATH=:/opt/rocm/lib + export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer - export PATH=/opt/rocm/llvm/bin/:$PATH - export PATH=/opt/rocm/:$PATH + export PATH=/opt/rocm/llvm/bin + export PATH=/opt/rocm export HSA_XNACK=1 cd ${project.paths.project_build_prefix} # gfxTargetParser reads gfxarch and adds target features such as xnack @@ -51,12 +51,12 @@ def runTestCommand (platform, project, settings) def command = """#!/usr/bin/env bash set -x cd ${project.paths.project_build_prefix}/build/release - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/llvm/lib/clang/18/lib/linux - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/lib - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/libexec/rocm_smi + export LD_LIBRARY_PATH=:/opt/rocm/llvm/lib/clang/18/lib/linux + export LD_LIBRARY_PATH=:/opt/rocm/lib + export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer - export PATH=/opt/rocm/llvm/bin/:$PATH - export PATH=/opt/rocm/:$PATH + export PATH=/opt/rocm/llvm/bin/: + export PATH=/opt/rocm/: export HSA_XNACK=1 make -j4 ${LD_PATH} From 5d83354408c2e94aa3a73c37881c63cbd0a8b023 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 16:10:04 -0600 Subject: [PATCH 16/25] fix exports --- .jenkins/common.groovy | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index acc8dcca85d..3a6bea31a67 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -21,12 +21,9 @@ def runCompileCommand(platform, project, jobName, settings) set -x ${xnackToggle} rocminfo - export LD_LIBRARY_PATH=:/opt/rocm/llvm/lib/clang/18/lib/linux - export LD_LIBRARY_PATH=:/opt/rocm/lib - export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi + export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi:/opt/rocm/llvm/lib/clang/18/lib/linux:/opt/rocm/lib/asan:/opt/rocm/libexec/rocm_smi export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer - export PATH=/opt/rocm/llvm/bin - export PATH=/opt/rocm + export PATH=/opt/rocm/:/opt/rocm/llvm/bin/ export HSA_XNACK=1 cd ${project.paths.project_build_prefix} # gfxTargetParser reads gfxarch and adds target features such as xnack @@ -51,12 +48,9 @@ def runTestCommand (platform, project, settings) def command = """#!/usr/bin/env bash set -x cd ${project.paths.project_build_prefix}/build/release - export LD_LIBRARY_PATH=:/opt/rocm/llvm/lib/clang/18/lib/linux - export LD_LIBRARY_PATH=:/opt/rocm/lib - export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi + export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi:/opt/rocm/llvm/lib/clang/18/lib/linux:/opt/rocm/lib/asan:/opt/rocm/libexec/rocm_smi export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer - export PATH=/opt/rocm/llvm/bin/: - export PATH=/opt/rocm/: + export PATH=/opt/rocm/:/opt/rocm/llvm/bin/ export HSA_XNACK=1 make -j4 ${LD_PATH} From b475dea0b3744684514188270ef129ad2e34c601 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 16:17:48 -0600 Subject: [PATCH 17/25] use cmake --- .jenkins/common.groovy | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index 3a6bea31a67..ab29a6fce36 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -20,6 +20,7 @@ def runCompileCommand(platform, project, jobName, settings) def command = """#!/usr/bin/env bash set -x ${xnackToggle} + export "CMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++" rocminfo export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi:/opt/rocm/llvm/lib/clang/18/lib/linux:/opt/rocm/lib/asan:/opt/rocm/libexec/rocm_smi export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer @@ -28,7 +29,8 @@ def runCompileCommand(platform, project, jobName, settings) cd ${project.paths.project_build_prefix} # gfxTargetParser reads gfxarch and adds target features such as xnack ${auxiliary.gfxTargetParser()} - sudo ./install -ci --address-sanitizer + ${cmake} --toolchain=toolchain-linux.cmake ${buildTypeArg} ${buildStatic} -DAMDGPU_TARGETS=gfx942:xnack+ ${codeCovFlag} ${asanFlag} -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON ../.. + make -j\$(nproc) """ platform.runCommand(this, command) From 7565aaa2c01da67d4cffbf25c5b54ada896de5ea Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 16:23:57 -0600 Subject: [PATCH 18/25] remove env variables --- .jenkins/common.groovy | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index ab29a6fce36..7af0466598c 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -22,10 +22,6 @@ def runCompileCommand(platform, project, jobName, settings) ${xnackToggle} export "CMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++" rocminfo - export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi:/opt/rocm/llvm/lib/clang/18/lib/linux:/opt/rocm/lib/asan:/opt/rocm/libexec/rocm_smi - export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer - export PATH=/opt/rocm/:/opt/rocm/llvm/bin/ - export HSA_XNACK=1 cd ${project.paths.project_build_prefix} # gfxTargetParser reads gfxarch and adds target features such as xnack ${auxiliary.gfxTargetParser()} From d4d672454d49f177c0c509eeb981b74e546853bd Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 16:24:33 -0600 Subject: [PATCH 19/25] add build dir --- .jenkins/common.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index 7af0466598c..b551113077e 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -23,6 +23,7 @@ def runCompileCommand(platform, project, jobName, settings) export "CMAKE_CXX_COMPILER=/opt/rocm/bin/amdclang++" rocminfo cd ${project.paths.project_build_prefix} + mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir} # gfxTargetParser reads gfxarch and adds target features such as xnack ${auxiliary.gfxTargetParser()} ${cmake} --toolchain=toolchain-linux.cmake ${buildTypeArg} ${buildStatic} -DAMDGPU_TARGETS=gfx942:xnack+ ${codeCovFlag} ${asanFlag} -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON ../.. From e172d148b248d14db8e386c02fd75e774c024f77 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 16:25:39 -0600 Subject: [PATCH 20/25] moved export var --- .jenkins/common.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index b551113077e..ea754188757 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -47,13 +47,13 @@ def runTestCommand (platform, project, settings) def command = """#!/usr/bin/env bash set -x cd ${project.paths.project_build_prefix}/build/release + make -j4 + ${LD_PATH} + ldd ctest export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi:/opt/rocm/llvm/lib/clang/18/lib/linux:/opt/rocm/lib/asan:/opt/rocm/libexec/rocm_smi export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer export PATH=/opt/rocm/:/opt/rocm/llvm/bin/ export HSA_XNACK=1 - make -j4 - ${LD_PATH} - ldd ctest ${sudo} ${testCommand} """ From a6b284d9fc0477de13978b78ec282592c1ce452c Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 16:26:56 -0600 Subject: [PATCH 21/25] fixed export --- .jenkins/common.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index ea754188757..e32e2fda652 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -50,7 +50,7 @@ def runTestCommand (platform, project, settings) make -j4 ${LD_PATH} ldd ctest - export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi:/opt/rocm/llvm/lib/clang/18/lib/linux:/opt/rocm/lib/asan:/opt/rocm/libexec/rocm_smi + export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi:/opt/rocm/llvm/lib/clang/18/lib/linux:/opt/rocm/lib:/opt/rocm/libexec/rocm_smi export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer export PATH=/opt/rocm/:/opt/rocm/llvm/bin/ export HSA_XNACK=1 From 24fc221c8c4e128ec515b990fb4ac8af40503b4d Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Mon, 7 Oct 2024 16:43:54 -0600 Subject: [PATCH 22/25] fix exports --- .jenkins/common.groovy | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index e32e2fda652..9f71f01f7ff 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -50,9 +50,12 @@ def runTestCommand (platform, project, settings) make -j4 ${LD_PATH} ldd ctest - export LD_LIBRARY_PATH=:/opt/rocm/libexec/rocm_smi:/opt/rocm/llvm/lib/clang/18/lib/linux:/opt/rocm/lib:/opt/rocm/libexec/rocm_smi + export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/llvm/lib/clang/18/lib/linux + export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/lib/asan + export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/opt/rocm/libexec/rocm_smi export ASAN_SYMBOLIZER_PATH=/opt/rocm/llvm/bin/llvm-symbolizer - export PATH=/opt/rocm/:/opt/rocm/llvm/bin/ + export PATH=/opt/rocm/llvm/bin/:\$PATH + export PATH=/opt/rocm/:\$PATH export HSA_XNACK=1 ${sudo} ${testCommand} """ From fcbd3428d6ab4def19e96ea590bc5419e6ddce75 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Tue, 8 Oct 2024 13:32:51 -0600 Subject: [PATCH 23/25] ASAN env var --- .jenkins/asan.groovy | 4 +++- .jenkins/common.groovy | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.jenkins/asan.groovy b/.jenkins/asan.groovy index 71fbc01c75a..844f94d2f0b 100644 --- a/.jenkins/asan.groovy +++ b/.jenkins/asan.groovy @@ -14,7 +14,9 @@ def runCI = def commonGroovy - def settings = [addressSanitizer: true] + def settings = [ + addressSanitizer: true + settings.cmakeDefines["CMAKE_CXX_COMPILER"]="/opt/rocm/bin/amdclang++"] boolean formatCheck = false diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index 9f71f01f7ff..c24b4226777 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -57,6 +57,7 @@ def runTestCommand (platform, project, settings) export PATH=/opt/rocm/llvm/bin/:\$PATH export PATH=/opt/rocm/:\$PATH export HSA_XNACK=1 + ASAN_OPTIONS=detect_leaks=0 ${sudo} ${testCommand} """ From 0f17adc06d2327930d29fe31950c7ad8c822d903 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Tue, 8 Oct 2024 14:36:07 -0600 Subject: [PATCH 24/25] fixed asan.groovy --- .jenkins/asan.groovy | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.jenkins/asan.groovy b/.jenkins/asan.groovy index 844f94d2f0b..2e1a29e16da 100644 --- a/.jenkins/asan.groovy +++ b/.jenkins/asan.groovy @@ -14,10 +14,8 @@ def runCI = def commonGroovy - def settings = [ - addressSanitizer: true - settings.cmakeDefines["CMAKE_CXX_COMPILER"]="/opt/rocm/bin/amdclang++"] - + def settings = [addressSanitizer: true] + boolean formatCheck = false def compileCommand = From 20a68679fbcc83f1520aee5d4f60f625152b1983 Mon Sep 17 00:00:00 2001 From: Gary Deng Date: Tue, 8 Oct 2024 14:58:39 -0600 Subject: [PATCH 25/25] fixed syntax --- .jenkins/common.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.jenkins/common.groovy b/.jenkins/common.groovy index c24b4226777..2acf34b4013 100644 --- a/.jenkins/common.groovy +++ b/.jenkins/common.groovy @@ -57,7 +57,7 @@ def runTestCommand (platform, project, settings) export PATH=/opt/rocm/llvm/bin/:\$PATH export PATH=/opt/rocm/:\$PATH export HSA_XNACK=1 - ASAN_OPTIONS=detect_leaks=0 + export ASAN_OPTIONS=detect_leaks=0 ${sudo} ${testCommand} """