mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-05-26 08:00:13 +00:00
Add performance tests as a stage of CI. (#247)
* modify ckProfiler_gemm output
* fix syntax
* change ckProfiler output and return 0
* fix syntax
* output datatype
* fix syntax
* output datatype in another way
* fix syntax
* fix syntax
* test return values of ckProfiler
* add layout info and tests, make sure ckprofiler returns 0
* fix syntax
* change layout output
* fix syntax
* fix syntax again
* update script to process perf results
* rearrange jenkins stages
* fix typo
* add python packages to Docker file
* adding setuptools-rust package
* modify parsing for new test parameters
* test db credentials on jenkins
* fix syntax
* update python script to handle incomplete lines
* ungrade python to 3.8 and write the gemm_params table
* add sqlalchemy package to docker
* move perf data processing to master node
* move the master node inside a steps region
* add new stage for result processing
* move results processing to separate stage
* reduce number of tests to speedup debugging
* pass config to processPerfResults stage
* run script on master in a docker container
* replace show_node_info
* try loading docker on master node again
* use ansible node instead of master
* get rid of pymysql package
* try ssh connection using paramiko
* put back pymysql
* put the perf data processing back on the gpu node
* put back artifact definition
* archive the perf_log before parsing
* clean up jenkinsfile, fix parsing
* fix typo
* enable all perf tests
* put all stages in original order, finalize script
* fix gpu_arch version
* update parsing script
* remove obsolete file causing merge conflict
[ROCm/composable_kernel commit: 1085794df3]
This commit is contained in:
66
Jenkinsfile
vendored
66
Jenkinsfile
vendored
@@ -213,15 +213,29 @@ def runCKProfiler(Map conf=[:]){
|
||||
cmake_build(conf)
|
||||
dir("script"){
|
||||
def perf_log = "perf_gemm_${gpu_arch}.log"
|
||||
def artifact = "profile_gemm_${gpu_arch}.txt"
|
||||
sh "./profile_gemm.sh gemm 0 0 0 1 0 5 | tee ${perf_log} ||true"
|
||||
sh "./profile_gemm.sh gemm 0 1 0 1 0 5 | tee -a ${perf_log} ||true"
|
||||
sh "./profile_gemm.sh gemm 0 2 0 1 0 5 | tee -a ${perf_log} ||true"
|
||||
sh "./profile_gemm.sh gemm 0 3 0 1 0 5 | tee -a ${perf_log} || true"
|
||||
sh "rm -f ${perf_log}"
|
||||
sh "echo Branch name: ${env.BRANCH_NAME} > ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 0 0 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 1 0 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 2 0 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 3 0 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 0 1 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 1 1 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 2 1 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 3 1 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 0 2 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 1 2 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 2 2 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 3 2 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 0 3 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 1 3 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 2 3 0 1 0 5 | tee -a ${perf_log}"
|
||||
sh "./profile_gemm.sh gemm 3 3 0 1 0 5 | tee -a ${perf_log}"
|
||||
//results will be parsed, stored, and analyzed within the python script
|
||||
//the script will return 0 if the performance criteria are met
|
||||
//or return 1 if the criteria are not met
|
||||
sh "python3 parse_perf_data.py ${perf_log} | tee ${artifact}"
|
||||
archiveArtifacts "${perf_log}"
|
||||
sh "python3 parse_perf_data.py ${perf_log} "
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -246,7 +260,6 @@ def runPerfTest(Map conf=[:]){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pipeline {
|
||||
agent none
|
||||
options {
|
||||
@@ -280,19 +293,19 @@ pipeline {
|
||||
// buildHipClangJobAndReboot(setup_args:setup_args, config_targets: "ckProfiler", no_reboot:true, build_type: 'Release')
|
||||
// }
|
||||
//}
|
||||
stage('Build Profiler: Debug, gfx908')
|
||||
{
|
||||
agent { label rocmnode("nogpu")}
|
||||
environment{
|
||||
setup_args = """ -D CMAKE_CXX_FLAGS="--offload-arch=gfx908 -O3 " -DBUILD_DEV=On """
|
||||
}
|
||||
steps{
|
||||
// until we stabilize debug build due to compiler crashes
|
||||
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
|
||||
buildHipClangJobAndReboot(setup_args:setup_args, config_targets: "ckProfiler", no_reboot:true, build_type: 'Debug')
|
||||
}
|
||||
}
|
||||
}
|
||||
//stage('Build Profiler: Debug, gfx908')
|
||||
//{
|
||||
// agent { label rocmnode("nogpu")}
|
||||
// environment{
|
||||
// setup_args = """ -D CMAKE_CXX_FLAGS="--offload-arch=gfx908 -O3 " -DBUILD_DEV=On """
|
||||
// }
|
||||
// steps{
|
||||
// // until we stabilize debug build due to compiler crashes
|
||||
// catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
|
||||
// buildHipClangJobAndReboot(setup_args:setup_args, config_targets: "ckProfiler", no_reboot:true, build_type: 'Debug')
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
stage('Clang Format') {
|
||||
agent{ label rocmnode("nogpu") }
|
||||
environment{
|
||||
@@ -312,7 +325,7 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage("Tests")
|
||||
stage("Tests")
|
||||
{
|
||||
parallel
|
||||
{
|
||||
@@ -367,15 +380,20 @@ pipeline {
|
||||
agent{ label rocmnode("gfx908")}
|
||||
environment{
|
||||
setup_args = """ -D CMAKE_CXX_FLAGS="--offload-arch=gfx908 -O3 " -DBUILD_DEV=On """
|
||||
}
|
||||
dbuser = "${dbuser}"
|
||||
dbpassword = "${dbpassword}"
|
||||
dbsship = "${dbsship}"
|
||||
dbsshport = "${dbsshport}"
|
||||
dbsshuser = "${dbsshuser}"
|
||||
dbsshpassword = "${dbsshpassword}"
|
||||
}
|
||||
steps{
|
||||
runPerfTest(setup_args:setup_args, config_targets: "ckProfiler", no_reboot:true, build_type: 'Release')
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// enable after the cmake file supports packaging
|
||||
// stage("Packages") {
|
||||
// when {
|
||||
|
||||
Reference in New Issue
Block a user