mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-05-14 02:02:46 +00:00
Fix build issues, set new compiler default, etc. (#451)
* add an option to select specific compiler commit
* change the logic of forcing building a docker
* add check for compiler commit in dockerfile
* compiler check syntax fix
* change compiler selection logic
* fix the new compiler build issue
* set new compiler as default, update dev-requirements
* fix jenkins syntax
* fix docker syntax
* get rid of hipcc.pl editing in jenkinsfile
* fix the hipcc.pl in both places
* try to fix the 10738 compiler linking bug
* fix syntax
* use dockerhub to store images
* use newer amd-stg-open commit as default
[ROCm/composable_kernel commit: b882554758]
This commit is contained in:
20
Dockerfile
20
Dockerfile
@@ -2,6 +2,7 @@ FROM ubuntu:20.04
|
||||
|
||||
ARG ROCMVERSION=5.2.3
|
||||
ARG compiler_version
|
||||
ARG compiler_commit
|
||||
|
||||
RUN set -xe
|
||||
|
||||
@@ -12,7 +13,6 @@ RUN apt-get install -y wget gnupg
|
||||
RUN wget -qO - http://repo.radeon.com/rocm/rocm.gpg.key | apt-key add -
|
||||
RUN sh -c "echo deb [arch=amd64] $DEB_ROCM_REPO ubuntu main > /etc/apt/sources.list.d/rocm.list"
|
||||
RUN wget --no-check-certificate -qO - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | apt-key add -
|
||||
#RUN sh -c "echo deb https://apt.kitware.com/ubuntu/ bionic main | tee -a /etc/apt/sources.list"
|
||||
RUN sh -c "echo deb http://mirrors.kernel.org/ubuntu focal main universe | tee -a /etc/apt/sources.list"
|
||||
|
||||
# Install dependencies
|
||||
@@ -79,9 +79,16 @@ RUN git clone -b master https://github.com/RadeonOpenCompute/rocm-cmake.git &&
|
||||
WORKDIR /
|
||||
|
||||
ENV compiler_version=$compiler_version
|
||||
ENV compiler_commit=$compiler_commit
|
||||
RUN sh -c "echo compiler version = '$compiler_version'"
|
||||
RUN sh -c "echo compiler commit = '$compiler_commit'"
|
||||
|
||||
RUN --mount=type=ssh if [ "$compiler_version" != "release" ]; then \
|
||||
RUN --mount=type=ssh if [ "$compiler_version" = "amd-stg-open" ]; then \
|
||||
sed -i '/$HIP_CLANG_TARGET = chomp($HIP_CLANG_TARGET);/c\ chomp($HIP_CLANG_TARGET);' /opt/rocm/hip/bin/hipcc.pl && \
|
||||
sed -i '/$HIP_CLANG_TARGET = chomp($HIP_CLANG_TARGET);/c\ chomp($HIP_CLANG_TARGET);' /opt/rocm/bin/hipcc.pl; \
|
||||
fi
|
||||
|
||||
RUN --mount=type=ssh if [ "$compiler_version" != "release" ] && [ "$compiler_commit" = "" ]; then \
|
||||
git clone -b "$compiler_version" https://github.com/RadeonOpenCompute/llvm-project.git && \
|
||||
cd llvm-project && mkdir build && cd build && \
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocm/llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=1 -DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" -DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt" ../llvm && \
|
||||
@@ -89,5 +96,14 @@ RUN --mount=type=ssh if [ "$compiler_version" != "release" ]; then \
|
||||
else echo "using the release compiler"; \
|
||||
fi
|
||||
|
||||
RUN --mount=type=ssh if [ "$compiler_version" != "release" ] && [ "$compiler_commit" != "" ]; then \
|
||||
git clone -b "$compiler_version" https://github.com/RadeonOpenCompute/llvm-project.git && \
|
||||
cd llvm-project && git checkout "$compiler_commit" && echo "checking out commit $compiler_commit" && mkdir build && cd build && \
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/opt/rocm/llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=1 -DLLVM_TARGETS_TO_BUILD="AMDGPU;X86" -DLLVM_ENABLE_PROJECTS="clang;lld;compiler-rt" ../llvm && \
|
||||
make -j 8 ; \
|
||||
else echo "using the release compiler"; \
|
||||
fi
|
||||
|
||||
|
||||
#ENV HIP_CLANG_PATH='/llvm-project/build/bin'
|
||||
#RUN sh -c "echo HIP_CLANG_PATH = '$HIP_CLANG_PATH'"
|
||||
|
||||
63
Jenkinsfile
vendored
63
Jenkinsfile
vendored
@@ -19,7 +19,7 @@ def runShell(String command){
|
||||
}
|
||||
|
||||
def getDockerImageName(){
|
||||
def img = "${env.CK_IMAGE_URL}:ck_ub20.04_rocm5.2.3_${params.COMPILER_VERSION}"
|
||||
def img = "${env.CK_DOCKERHUB}:ck_ub20.04_rocm5.2.3_${params.COMPILER_VERSION}"
|
||||
return img
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ def getDockerImage(Map conf=[:]){
|
||||
env.DOCKER_BUILDKIT=1
|
||||
def prefixpath = conf.get("prefixpath", "/opt/rocm") // prefix:/opt/rocm
|
||||
def no_cache = conf.get("no_cache", false)
|
||||
def dockerArgs = "--build-arg BUILDKIT_INLINE_CACHE=1 --build-arg PREFIX=${prefixpath} --build-arg compiler_version='${params.COMPILER_VERSION}' "
|
||||
def dockerArgs = "--build-arg BUILDKIT_INLINE_CACHE=1 --build-arg PREFIX=${prefixpath} --build-arg compiler_version='${params.COMPILER_VERSION}' --build-arg compiler_commit='${params.COMPILER_COMMIT}' "
|
||||
if(env.CCACHE_HOST)
|
||||
{
|
||||
def check_host = sh(script:"""(printf "PING\r\n";) | nc -N ${env.CCACHE_HOST} 6379 """, returnStdout: true).trim()
|
||||
@@ -86,7 +86,7 @@ def buildDocker(install_prefix){
|
||||
checkout scm
|
||||
def image_name = getDockerImageName()
|
||||
echo "Building Docker for ${image_name}"
|
||||
def dockerArgs = "--build-arg BUILDKIT_INLINE_CACHE=1 --build-arg PREFIX=${install_prefix} --build-arg compiler_version='${params.COMPILER_VERSION}' "
|
||||
def dockerArgs = "--build-arg BUILDKIT_INLINE_CACHE=1 --build-arg PREFIX=${install_prefix} --build-arg compiler_version='${params.COMPILER_VERSION}' --build-arg compiler_commit='${params.COMPILER_COMMIT}'"
|
||||
if(env.CCACHE_HOST)
|
||||
{
|
||||
def check_host = sh(script:"""(printf "PING\\r\\n";) | nc -N ${env.CCACHE_HOST} 6379 """, returnStdout: true).trim()
|
||||
@@ -105,9 +105,17 @@ def buildDocker(install_prefix){
|
||||
|
||||
echo "Build Args: ${dockerArgs}"
|
||||
try{
|
||||
echo "Checking for image: ${image_name}"
|
||||
sh "docker manifest inspect --insecure ${image_name}"
|
||||
echo "Image: ${image_name} found!! Skipping building image"
|
||||
if(params.BUILD_DOCKER){
|
||||
//force building the new docker if that parameter is true
|
||||
echo "Building image: ${image_name}"
|
||||
retimage = docker.build("${image_name}", dockerArgs + ' .')
|
||||
retimage.push()
|
||||
}
|
||||
else{
|
||||
echo "Checking for image: ${image_name}"
|
||||
sh "docker manifest inspect --insecure ${image_name}"
|
||||
echo "Image: ${image_name} found!! Skipping building image"
|
||||
}
|
||||
}
|
||||
catch(Exception ex){
|
||||
echo "Unable to locate image: ${image_name}. Building image now"
|
||||
@@ -202,7 +210,7 @@ def buildHipClangJob(Map conf=[:]){
|
||||
if (conf.get("enforce_xnack_on", false)) {
|
||||
dockerOpts = dockerOpts + " --env HSA_XNACK=1 "
|
||||
}
|
||||
def dockerArgs = "--build-arg PREFIX=${prefixpath} --build-arg compiler_version='${params.COMPILER_VERSION}' "
|
||||
def dockerArgs = "--build-arg PREFIX=${prefixpath} --build-arg compiler_version='${params.COMPILER_VERSION}' --build-arg compiler_commit='${params.COMPILER_COMMIT}' "
|
||||
if (params.COMPILER_VERSION != "release"){
|
||||
dockerOpts = dockerOpts + " --env HIP_CLANG_PATH='/llvm-project/build/bin' "
|
||||
}
|
||||
@@ -213,7 +221,6 @@ def buildHipClangJob(Map conf=[:]){
|
||||
|
||||
gitStatusWrapper(credentialsId: "${status_wrapper_creds}", gitHubContext: "Jenkins - ${variant}", account: 'ROCmSoftwarePlatform', repo: 'composable_kernel') {
|
||||
try {
|
||||
//retimage = docker.build("${image}", dockerArgs + '.')
|
||||
(retimage, image) = getDockerImage(conf)
|
||||
withDockerContainer(image: image, args: dockerOpts) {
|
||||
timeout(time: 5, unit: 'MINUTES'){
|
||||
@@ -290,7 +297,7 @@ def runCKProfiler(Map conf=[:]){
|
||||
if (conf.get("enforce_xnack_on", false)) {
|
||||
dockerOpts = dockerOpts + " --env HSA_XNACK=1 "
|
||||
}
|
||||
def dockerArgs = "--build-arg PREFIX=${prefixpath} --build-arg compiler_version='${params.COMPILER_VERSION}' "
|
||||
def dockerArgs = "--build-arg PREFIX=${prefixpath} --build-arg compiler_version='${params.COMPILER_VERSION}' --build-arg compiler_commit='${params.COMPILER_COMMIT}' "
|
||||
if (params.COMPILER_VERSION != "release"){
|
||||
dockerOpts = dockerOpts + " --env HIP_CLANG_PATH='/llvm-project/build/bin' "
|
||||
}
|
||||
@@ -423,7 +430,7 @@ def Build_CK(Map conf=[:]){
|
||||
if (conf.get("enforce_xnack_on", false)) {
|
||||
dockerOpts = dockerOpts + " --env HSA_XNACK=1 "
|
||||
}
|
||||
def dockerArgs = "--build-arg PREFIX=${prefixpath} --build-arg compiler_version='${params.COMPILER_VERSION}' "
|
||||
def dockerArgs = "--build-arg PREFIX=${prefixpath} --build-arg compiler_version='${params.COMPILER_VERSION}' --build-arg compiler_commit='${params.COMPILER_COMMIT}' "
|
||||
if (params.COMPILER_VERSION != "release"){
|
||||
dockerOpts = dockerOpts + " --env HIP_CLANG_PATH='/llvm-project/build/bin' "
|
||||
}
|
||||
@@ -508,7 +515,6 @@ def process_results(Map conf=[:]){
|
||||
if (conf.get("enforce_xnack_on", false)) {
|
||||
dockerOpts = dockerOpts + " --env HSA_XNACK=1 "
|
||||
}
|
||||
def dockerArgs = "--build-arg PREFIX=${prefixpath} --build-arg compiler_version='release' "
|
||||
|
||||
def variant = env.STAGE_NAME
|
||||
def retimage
|
||||
@@ -574,12 +580,16 @@ pipeline {
|
||||
parameters {
|
||||
booleanParam(
|
||||
name: "BUILD_DOCKER",
|
||||
defaultValue: true,
|
||||
description: "Force building docker image (default: true)")
|
||||
defaultValue: false,
|
||||
description: "Force building docker image (default: false)")
|
||||
string(
|
||||
name: 'COMPILER_VERSION',
|
||||
defaultValue: 'release',
|
||||
description: 'Specify which version of compiler to use: ck-9110, release (default), or amd-stg-open.')
|
||||
defaultValue: 'amd-stg-open',
|
||||
description: 'Specify which version of compiler to use: ck-9110, release, or amd-stg-open (default).')
|
||||
string(
|
||||
name: 'COMPILER_COMMIT',
|
||||
defaultValue: '8a82e4eb7ba28521ba9a9424a0315a8a16590424',
|
||||
description: 'Specify which commit of compiler branch to use: leave empty to use the latest commit, or use 10738 commit (default).')
|
||||
string(
|
||||
name: 'BUILD_COMPILER',
|
||||
defaultValue: 'hipcc',
|
||||
@@ -588,10 +598,6 @@ pipeline {
|
||||
name: "RUN_FULL_QA",
|
||||
defaultValue: false,
|
||||
description: "Select whether to run small set of performance tests (default) or full QA")
|
||||
booleanParam(
|
||||
name: "TEST_NODE_PERFORMANCE",
|
||||
defaultValue: false,
|
||||
description: "Test the node GPU performance (default: false)")
|
||||
}
|
||||
environment{
|
||||
dbuser = "${dbuser}"
|
||||
@@ -606,9 +612,10 @@ pipeline {
|
||||
}
|
||||
stages{
|
||||
stage("Build Docker"){
|
||||
when {
|
||||
expression { params.BUILD_DOCKER.toBoolean() }
|
||||
}
|
||||
//when {
|
||||
// beforeAgent true
|
||||
// expression { params.BUILD_DOCKER.toBoolean() }
|
||||
//}
|
||||
parallel{
|
||||
stage('Docker /opt/rocm'){
|
||||
agent{ label rocmnode("nogpu") }
|
||||
@@ -619,10 +626,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
stage("Static checks") {
|
||||
when {
|
||||
beforeAgent true
|
||||
expression { !params.TEST_NODE_PERFORMANCE.toBoolean() }
|
||||
}
|
||||
parallel{
|
||||
// enable after we move from hipcc to hip-clang
|
||||
// stage('Tidy') {
|
||||
@@ -679,10 +682,6 @@ pipeline {
|
||||
//once we have some tests to run in this stage, we can enable it again.
|
||||
stage("Client App")
|
||||
{
|
||||
when {
|
||||
beforeAgent true
|
||||
expression { !params.TEST_NODE_PERFORMANCE.toBoolean() }
|
||||
}
|
||||
parallel
|
||||
{
|
||||
stage("Run Client App")
|
||||
@@ -707,7 +706,7 @@ pipeline {
|
||||
{
|
||||
when {
|
||||
beforeAgent true
|
||||
expression { !params.RUN_FULL_QA.toBoolean() && !params.TEST_NODE_PERFORMANCE.toBoolean() }
|
||||
expression { !params.RUN_FULL_QA.toBoolean() }
|
||||
}
|
||||
options { retry(2) }
|
||||
agent{ label rocmnode("gfx908 || gfx90a")}
|
||||
@@ -722,7 +721,7 @@ pipeline {
|
||||
{
|
||||
when {
|
||||
beforeAgent true
|
||||
expression { params.RUN_FULL_QA.toBoolean() || params.TEST_NODE_PERFORMANCE.toBoolean() }
|
||||
expression { params.RUN_FULL_QA.toBoolean() }
|
||||
}
|
||||
options { retry(2) }
|
||||
agent{ label rocmnode("gfx90a")}
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
ROCmSoftwarePlatform/rocm-recipes
|
||||
RadeonOpenCompute/rocm-cmake@04f694df2a8dc9d7e35fa4dee4ba5fa407ec04f8 --build
|
||||
# 1.90+
|
||||
danmar/cppcheck@dd05839a7e63ef04afd34711cb3e1e0ef742882f
|
||||
Reference in New Issue
Block a user