1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
|
// 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 buildStatic=false)
{
project.paths.construct_build_prefix()
def getDependenciesCommand = ""
if (project.installLibraryDependenciesFromCI)
{
project.libraryDependencies.each
{ libraryName ->
getDependenciesCommand += auxiliary.getLibrary(libraryName, platform.jenkinsLabel, null, false)
}
}
String clientArgs = '-DBUILD_CLIENTS_SAMPLES=ON -DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_BENCH=ON'
String warningArgs = '-DWERROR=ON'
String buildTunerArgs = '-DROCFFT_BUILD_OFFLINE_TUNER=ON'
String buildTypeArg = debug ? '-DCMAKE_BUILD_TYPE=Debug -DROCFFT_DEVICE_FORCE_RELEASE=ON' : '-DCMAKE_BUILD_TYPE=Release'
String buildTypeDir = debug ? 'debug' : 'release'
String staticArg = buildStatic ? '-DBUILD_SHARED_LIBS=off' : ''
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' : ''
String rtcBuildCache = "-DROCFFT_BUILD_KERNEL_CACHE_PATH=\$JENKINS_HOME_LOCAL/rocfft_build_cache.db"
def command = """#!/usr/bin/env bash
set -x
cd ${project.paths.project_build_prefix}
${getDependenciesCommand}
set -e
mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir}
${auxiliary.gfxTargetParser()}
${cmake} -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc -DCMAKE_C_COMPILER=/opt/rocm/bin/hipcc ${buildTypeArg} ${clientArgs} ${warningArgs} ${buildTunerArgs} ${staticArg} ${amdgpuTargets} ${rtcBuildCache} ../..
make -j\$(nproc)
sudo make install
"""
platform.runCommand(this, command)
}
def runCompileClientCommand(platform, project, jobName, boolean debug=false)
{
project.paths.construct_build_prefix()
String clientArgs = '-DBUILD_CLIENTS_SAMPLES=ON -DBUILD_CLIENTS_TESTS=ON -DBUILD_CLIENTS_BENCH=ON'
String warningArgs = '-DWERROR=ON'
String cmake = platform.jenkinsLabel.contains('centos') ? 'cmake3' : 'cmake'
String amdgpuTargets = env.BRANCH_NAME.startsWith('PR-') ? '-DAMDGPU_TARGETS=\$gfx_arch' : ''
String buildTypeArgClients = debug ? '-DCMAKE_BUILD_TYPE=Debug' : '-DCMAKE_BUILD_TYPE=Release'
String cmakePrefixPathArg = "-DCMAKE_PREFIX_PATH=${project.paths.project_build_prefix}"
def command = """#!/usr/bin/env bash
set -ex
cd ${project.paths.project_build_prefix}/clients
mkdir -p build && cd build
${cmake} -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc -DCMAKE_C_COMPILER=/opt/rocm/bin/hipcc ${buildTypeArgClients} ${clientArgs} ${warningArgs} ${cmakePrefixPathArg} ${amdgpuTargets} ../
make -j\$(nproc)
"""
platform.runCommand(this, command)
}
def runTestCommand (platform, project, boolean debug=false, gfilter='')
{
String testBinaryName = 'rocfft-test'
String directory = debug ? 'debug' : 'release'
String gfilterArg = ''
if (gfilter)
{
gfilterArg = "--gtest_filter=${gfilter}"
}
def command = """#!/usr/bin/env bash
set -ex
cd ${project.paths.project_build_prefix}/build/${directory}/clients/staging
ROCM_PATH=/opt/rocm GTEST_LISTENER=NO_PASS_LINE_IN_LOG ./${testBinaryName} --precompile=rocfft-test-precompile.db ${gfilterArg} --gtest_color=yes --R 80
"""
platform.runCommand(this, command)
}
def runPackageCommand(platform, project, jobName, boolean debug=false)
{
String directory = debug ? 'debug' : 'release'
def packageHelper = platform.makePackage(platform.jenkinsLabel,"${project.paths.project_build_prefix}/build/${directory}",false)
platform.runCommand(this, packageHelper[0])
platform.archiveArtifacts(this, packageHelper[1])
//trim temp files
def command = """#!/usr/bin/env bash
set -ex
cd ${project.paths.project_build_prefix}/build/${directory}/
rm -rf _CPack_Packages/
find -name '*.o' -delete
"""
platform.runCommand(this, command)
}
def runSubsetBuildCommand(platform, project, jobName, genPattern, genSmall, genLarge, boolean onlyDouble)
{
project.paths.construct_build_prefix()
// Don't build clients, since we're just testing if the library can build
String clientArgs = ''
String warningArgs = '-DWERROR=ON'
String buildTypeArg = '-DCMAKE_BUILD_TYPE=Release'
String buildTypeDir = 'release'
String genPatternArgs = "-DGENERATOR_PATTERN=${genPattern}"
String manualSmallArgs = (genSmall != null) ? "-DGENERATOR_MANUAL_SMALL_SIZE=${genSmall}" : ''
String manualLargeArgs = (genLarge != null) ? "-DGENERATOR_MANUAL_LARGE_SIZE=${genLarge}" : ''
String precisionArgs = onlyDouble ? '-DGENERATOR_PRECISION=double' : ''
String kernelArgs = "${genPatternArgs} ${manualSmallArgs} ${manualLargeArgs} ${precisionArgs}"
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' : ''
String rtcBuildCache = "-DROCFFT_BUILD_KERNEL_CACHE_PATH=\$JENKINS_HOME_LOCAL/rocfft_build_cache.db"
def command = """#!/usr/bin/env bash
set -ex
cd ${project.paths.project_build_prefix}
rm -rf build/${buildTypeDir}
mkdir -p build/${buildTypeDir} && cd build/${buildTypeDir}
${auxiliary.gfxTargetParser()}
${cmake} -DCMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc -DCMAKE_C_COMPILER=/opt/rocm/bin/hipcc ${buildTypeArg} ${clientArgs} ${kernelArgs} ${warningArgs} ${amdgpuTargets} ${rtcBuildCache} ../..
make -j\$(nproc)
"""
platform.runCommand(this, command)
}
return this
|