Transfer files from RAD repository
This commit is contained in:
+118
@@ -0,0 +1,118 @@
|
||||
pipeline {
|
||||
agent { label 'sv-pdp-5' }
|
||||
environment {
|
||||
HSA_FORCE_FINE_GRAIN_PCIE = 1
|
||||
MPI_HOME="/home/resperf/mpich-4.0.1/install/global"
|
||||
PATH = "$MPI_HOME/bin:$PATH"
|
||||
LD_LIBRARY_PATH = "$MPI_HOME/lib:$LD_LIBRARY_PATH"
|
||||
build_dir = "builds/change-${GERRIT_CHANGE_NUMBER}-${GERRIT_PATCHSET_NUMBER}"
|
||||
CMAKE_PREFIX_PATH = "/opt/rocm/lib/cmake"
|
||||
}
|
||||
stages {
|
||||
stage('Synchronize Source Code') {
|
||||
steps {
|
||||
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: 'FETCH_HEAD']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false]], submoduleCfg: [], userRemoteConfigs: [[name: 'origin', refspec: '${GERRIT_REFSPEC}', url: 'ssh://gerritgit/rsch/ec/shmem']]]
|
||||
}
|
||||
}
|
||||
stage('Make Build Directory') {
|
||||
steps {
|
||||
dir("library") {
|
||||
sh "mkdir -p ${build_dir}"
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build Source Code') {
|
||||
parallel {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi_wf_coal install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
<?xml version='1.1' encoding='UTF-8'?>
|
||||
<flow-definition plugin="workflow-job@2.40">
|
||||
<actions>
|
||||
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobAction plugin="pipeline-model-definition@1.8.4"/>
|
||||
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction plugin="pipeline-model-definition@1.8.4">
|
||||
<jobProperties/>
|
||||
<triggers/>
|
||||
<parameters/>
|
||||
<options/>
|
||||
</org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction>
|
||||
</actions>
|
||||
<description></description>
|
||||
<keepDependencies>false</keepDependencies>
|
||||
<properties>
|
||||
<org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
|
||||
<triggers>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger plugin="gerrit-trigger@2.33.0">
|
||||
<spec></spec>
|
||||
<gerritProjects>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||
<compareType>PLAIN</compareType>
|
||||
<pattern>rsch/ec/shmem</pattern>
|
||||
<branches>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||
<compareType>PLAIN</compareType>
|
||||
<pattern>amd-master</pattern>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||
</branches>
|
||||
<disableStrictForbiddenFileVerification>false</disableStrictForbiddenFileVerification>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||
</gerritProjects>
|
||||
<dynamicGerritProjects class="empty-list"/>
|
||||
<skipVote>
|
||||
<onSuccessful>true</onSuccessful>
|
||||
<onFailed>true</onFailed>
|
||||
<onUnstable>true</onUnstable>
|
||||
<onNotBuilt>true</onNotBuilt>
|
||||
<onAborted>true</onAborted>
|
||||
</skipVote>
|
||||
<silentMode>false</silentMode>
|
||||
<enableTopicAssociation>false</enableTopicAssociation>
|
||||
<notificationLevel></notificationLevel>
|
||||
<silentStartMode>false</silentStartMode>
|
||||
<escapeQuotes>true</escapeQuotes>
|
||||
<nameAndEmailParameterMode>PLAIN</nameAndEmailParameterMode>
|
||||
<dependencyJobsNames></dependencyJobsNames>
|
||||
<commitMessageParameterMode>BASE64</commitMessageParameterMode>
|
||||
<changeSubjectParameterMode>PLAIN</changeSubjectParameterMode>
|
||||
<commentTextParameterMode>BASE64</commentTextParameterMode>
|
||||
<buildStartMessage></buildStartMessage>
|
||||
<buildFailureMessage></buildFailureMessage>
|
||||
<buildSuccessfulMessage></buildSuccessfulMessage>
|
||||
<buildUnstableMessage></buildUnstableMessage>
|
||||
<buildNotBuiltMessage></buildNotBuiltMessage>
|
||||
<buildAbortedMessage></buildAbortedMessage>
|
||||
<buildUnsuccessfulFilepath></buildUnsuccessfulFilepath>
|
||||
<customUrl></customUrl>
|
||||
<serverName>amd-gerrit</serverName>
|
||||
<triggerOnEvents>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedContainsEvent>
|
||||
<commentAddedCommentContains>!COMPILE</commentAddedCommentContains>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedContainsEvent>
|
||||
</triggerOnEvents>
|
||||
<dynamicTriggerConfiguration>false</dynamicTriggerConfiguration>
|
||||
<triggerConfigURL></triggerConfigURL>
|
||||
<triggerInformationAction/>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger>
|
||||
</triggers>
|
||||
</org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
|
||||
</properties>
|
||||
<definition class="org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition" plugin="workflow-cps@2.90">
|
||||
<scm class="hudson.plugins.git.GitSCM" plugin="git@4.7.1">
|
||||
<configVersion>2</configVersion>
|
||||
<userRemoteConfigs>
|
||||
<hudson.plugins.git.UserRemoteConfig>
|
||||
<url>ssh://gerritgit/rsch/ec/shmem</url>
|
||||
</hudson.plugins.git.UserRemoteConfig>
|
||||
</userRemoteConfigs>
|
||||
<branches>
|
||||
<hudson.plugins.git.BranchSpec>
|
||||
<name>FETCH_HEAD</name>
|
||||
</hudson.plugins.git.BranchSpec>
|
||||
</branches>
|
||||
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
|
||||
<submoduleCfg class="empty-list"/>
|
||||
<extensions/>
|
||||
</scm>
|
||||
<scriptPath>internal/continuous_integration/compile/Jenkinsfile</scriptPath>
|
||||
<lightweight>false</lightweight>
|
||||
</definition>
|
||||
<triggers/>
|
||||
<disabled>false</disabled>
|
||||
</flow-definition>
|
||||
+221
@@ -0,0 +1,221 @@
|
||||
pipeline {
|
||||
agent { label 'sv-pdp-5' }
|
||||
environment {
|
||||
HSA_FORCE_FINE_GRAIN_PCIE = 1
|
||||
MPI_HOME="/home/resperf/mpich-4.0.1/install/global"
|
||||
PATH = "$MPI_HOME/bin:$PATH"
|
||||
LD_LIBRARY_PATH = "$MPI_HOME/lib:$LD_LIBRARY_PATH"
|
||||
build_dir = "builds/change-${GERRIT_CHANGE_NUMBER}-${GERRIT_PATCHSET_NUMBER}"
|
||||
CMAKE_PREFIX_PATH = "/opt/rocm/lib/cmake"
|
||||
}
|
||||
stages {
|
||||
stage('Synchronize Source Code') {
|
||||
steps {
|
||||
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: 'FETCH_HEAD']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false]], submoduleCfg: [], userRemoteConfigs: [[name: 'origin', refspec: '${GERRIT_REFSPEC}', url: 'ssh://gerritgit/rsch/ec/shmem']]]
|
||||
}
|
||||
}
|
||||
stage('Env Variables') {
|
||||
steps {
|
||||
sh 'printenv'
|
||||
}
|
||||
}
|
||||
stage('Make Build Directory') {
|
||||
steps {
|
||||
dir("library") {
|
||||
sh "mkdir -p ${build_dir}"
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build Source Code') {
|
||||
|
||||
failFast true
|
||||
|
||||
parallel {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/RC_SINGLE") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi_wf_coal install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/RC_MULTI") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/DC_SINGLE") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/DC_MULTI") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Run Tests') {
|
||||
stages {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE/rocshmem_example_driver single_thread ${build_dir}/RC_SINGLE true'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh './driver.sh ${build_dir}/RC_SINGLE/spts single_thread ${build_dir}/RC_SINGLE'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL/rocshmem_example_driver multi_thread ${build_dir}/RC_MULTI_WF_COAL true'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL/spts multi_thread ${build_dir}/RC_MULTI_WF_COAL'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI/rocshmem_example_driver multi_thread ${build_dir}/RC_MULTI true'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh './driver.sh ${build_dir}/RC_MULTI/spts multi_thread ${build_dir}/RC_MULTI'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_SINGLE/rocshmem_example_driver single_thread ${build_dir}/DC_SINGLE true'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh './driver.sh ${build_dir}/DC_SINGLE/spts single_thread ${build_dir}/DC_SINGLE'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI true'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh './driver.sh ${build_dir}/DC_MULTI/spts multi_thread ${build_dir}/DC_MULTI'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RO_NET_BASIC') {
|
||||
// RO_NET controlled at runtime, no need for a new build. Use RC_MULTI
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh 'mkdir -p ${build_dir}/RO_NET_BASIC'
|
||||
sh 'ROC_SHMEM_RO=1 RO_NET_CPU_QUEUE=1 UCX_TLS=rc ./driver.sh ${build_dir}/RC_MULTI/rocshmem_example_driver ro ${build_dir}/RO_NET_BASIC true'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh 'mkdir -p ${build_dir}/RO_NET_BASIC'
|
||||
// sh 'ROC_SHMEM_RO=1 RO_NET_CPU_QUEUE=1 UCX_TLS=rc ./driver.sh ${build_dir}/RC_MULTI/spts multi_thread ${build_dir}/RO_NET_BASIC'
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Generate Checker Metadata') {
|
||||
steps {
|
||||
dir("library/${build_dir}") {
|
||||
sh 'git fetch --tags'
|
||||
sh 'git log --pretty=oneline remotes/origin/amd-master.. > changeset_delta.txt'
|
||||
sh 'git log --pretty=oneline remotes/origin/amd-master~1..remotes/origin/amd-master >> changeset_delta.txt'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Archive Artifacts') {
|
||||
steps {
|
||||
dir("library/${build_dir}") {
|
||||
archiveArtifacts artifacts: 'changeset_delta.txt'
|
||||
}
|
||||
dir("clients/functional_tests/${build_dir}") {
|
||||
archiveArtifacts artifacts: 'RC_SINGLE/**/*.log'
|
||||
archiveArtifacts artifacts: 'RC_MULTI/**/*.log'
|
||||
archiveArtifacts artifacts: 'DC_SINGLE/**/*.log'
|
||||
archiveArtifacts artifacts: 'DC_MULTI/**/*.log'
|
||||
archiveArtifacts artifacts: 'RO_NET_BASIC/**/*.log'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+413
@@ -0,0 +1,413 @@
|
||||
pipeline {
|
||||
agent { label 'sv-pdp-5' }
|
||||
environment {
|
||||
build_dir = "builds/change-${GERRIT_CHANGE_NUMBER}-${GERRIT_PATCHSET_NUMBER}"
|
||||
|
||||
MPI_HOME="/home/resperf/mpich-4.0.1/install/global"
|
||||
UCX_HOME="/home/resperf/ucx/install"
|
||||
|
||||
PATH="$MPI_HOME/bin:$UCX_HOME/bin:$PATH"
|
||||
LD_LIBRARY_PATH="$MPI_HOME/lib:$UCX_HOME/lib:$LD_LIBRARY_PATH"
|
||||
PKG_CONFIG_PATH="$MPI_HOME/lib/pkgconfig:$UCX_HOME/lib/pkgconfig"
|
||||
|
||||
CMAKE_PREFIX_PATH="/opt/rocm/lib/cmake"
|
||||
|
||||
UCX_WARN_UNUSED_ENV_VARS="n"
|
||||
HSA_FORCE_FINE_GRAIN_PCIE=1
|
||||
}
|
||||
stages {
|
||||
stage('Synchronize Source Code') {
|
||||
steps {
|
||||
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: 'FETCH_HEAD']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false]], submoduleCfg: [], userRemoteConfigs: [[name: 'origin', refspec: '${GERRIT_REFSPEC}', url: 'ssh://gerritgit/rsch/ec/shmem']]]
|
||||
}
|
||||
}
|
||||
stage('Env Variables') {
|
||||
steps {
|
||||
sh 'printenv'
|
||||
}
|
||||
}
|
||||
stage('Make Build Directory') {
|
||||
steps {
|
||||
dir("library") {
|
||||
sh "mkdir -p ${build_dir}"
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build Source Code') {
|
||||
|
||||
failFast true
|
||||
|
||||
parallel {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi_wf_coal install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_SINGLE_DEBUG') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_SINGLE_DEBUG") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_single_debug install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_SINGLE_DEBUG") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE_DEBUG/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/RC_SINGLE_DEBUG") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE_DEBUG/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_SINGLE_DEBUG") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_SINGLE_DEBUG/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_SINGLE_PROFILE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_SINGLE_PROFILE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_single_profile install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_SINGLE_PROFILE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE_PROFILE/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/RC_SINGLE_PROFILE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE_PROFILE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_SINGLE_PROFILE") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_SINGLE_PROFILE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_IPC') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI_IPC") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi_ipc install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI_IPC") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI_IPC/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/DC_MULTI_IPC") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI_IPC/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_MULTI_IPC") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI_IPC/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_DEBUG') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI_DEBUG") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi_debug install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI_DEBUG") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI_DEBUG/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/DC_MULTI_DEBUG") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI_DEBUG/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_MULTI_DEBUG") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI_DEBUG/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_PROFILE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI_PROFILE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi_profile install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI_PROFILE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI_PROFILE/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/DC_MULTI_PROFILE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI_PROFILE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_MULTI_PROFILE") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI_PROFILE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Run Tests') {
|
||||
stages {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE/rocshmem_example_driver single_thread ${build_dir}/RC_SINGLE'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE all ${build_dir}/RC_SINGLE'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE/spts single_thread ${build_dir}/RC_SINGLE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL/rocshmem_example_driver multi_thread ${build_dir}/RC_MULTI_WF_COAL'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL all ${build_dir}/RC_MULTI_WF_COAL'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL/spts multi_thread ${build_dir}/RC_MULTI_WF_COAL'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI/rocshmem_example_driver multi_thread ${build_dir}/RC_MULTI'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI all ${build_dir}/RC_MULTI'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI/spts multi_thread ${build_dir}/RC_MULTI'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_SINGLE_DEBUG') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE_DEBUG/rocshmem_example_driver single_thread ${build_dir}/RC_SINGLE_DEBUG'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE_DEBUG all ${build_dir}/RC_SINGLE_DEBUG'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE_DEBUG/spts single_thread ${build_dir}/RC_SINGLE_DEBUG'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_SINGLE_PROFILE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE_PROFILE/rocshmem_example_driver single_thread ${build_dir}/RC_SINGLE_PROFILE'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE_PROFILE all ${build_dir}/RC_SINGLE_PROFILE'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE_PROFILE/spts single_thread ${build_dir}/RC_SINGLE_PROFILE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_SINGLE/rocshmem_example_driver single_thread ${build_dir}/DC_SINGLE'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_SINGLE all ${build_dir}/DC_SINGLE'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/DC_SINGLE/spts single_thread ${build_dir}/DC_SINGLE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI all ${build_dir}/DC_MULTI'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI/spts multi_thread ${build_dir}/DC_MULTI'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_IPC') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_IPC/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI_IPC'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_IPC all ${build_dir}/DC_MULTI_IPC'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_IPC/spts multi_thread ${build_dir}/DC_MULTI_IPC'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_DEBUG') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_DEBUG/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI_DEBUG'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_DEBUG all ${build_dir}/DC_MULTI_DEBUG'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_DEBUG/spts multi_thread ${build_dir}/DC_MULTI_DEBUG'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_PROFILE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_PROFILE/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI_PROFILE'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_PROFILE all ${build_dir}/DC_MULTI_PROFILE'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_PROFILE/spts multi_thread ${build_dir}/DC_MULTI_PROFILE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RO_NET_BASIC') {
|
||||
// RO_NET controlled at runtime, no need for a new build. Use RC_MULTI
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh 'mkdir -p ${build_dir}/RO_NET_BASIC'
|
||||
sh 'ROC_SHMEM_RO=1 RO_NET_CPU_QUEUE=1 UCX_TLS=rc ./driver.sh ${build_dir}/RC_MULTI/rocshmem_example_driver ro ${build_dir}/RO_NET_BASIC'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh 'ROC_SHMEM_RO=1 ./driver.sh ${build_dir}/RC_MULTI all ${build_dir}/RC_MULTI'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh 'mkdir -p ${build_dir}/RO_NET_BASIC'
|
||||
sh 'ROC_SHMEM_RO=1 RO_NET_CPU_QUEUE=1 UCX_TLS=rc ./driver.sh ${build_dir}/RC_MULTI/spts multi_thread ${build_dir}/RO_NET_BASIC'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?xml version='1.1' encoding='UTF-8'?>
|
||||
<flow-definition plugin="workflow-job@2.40">
|
||||
<actions>
|
||||
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobAction plugin="pipeline-model-definition@1.8.4"/>
|
||||
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction plugin="pipeline-model-definition@1.8.4">
|
||||
<jobProperties/>
|
||||
<triggers/>
|
||||
<parameters/>
|
||||
<options/>
|
||||
</org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction>
|
||||
</actions>
|
||||
<description></description>
|
||||
<keepDependencies>false</keepDependencies>
|
||||
<properties>
|
||||
<org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
|
||||
<triggers>
|
||||
<hudson.triggers.TimerTrigger>
|
||||
<spec>H 22 * * *</spec>
|
||||
</hudson.triggers.TimerTrigger>
|
||||
</triggers>
|
||||
</org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
|
||||
</properties>
|
||||
<definition class="org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition" plugin="workflow-cps@2.90">
|
||||
<scm class="hudson.plugins.git.GitSCM" plugin="git@4.7.1">
|
||||
<configVersion>2</configVersion>
|
||||
<userRemoteConfigs>
|
||||
<hudson.plugins.git.UserRemoteConfig>
|
||||
<url>ssh://gerritgit/rsch/ec/shmem</url>
|
||||
</hudson.plugins.git.UserRemoteConfig>
|
||||
</userRemoteConfigs>
|
||||
<branches>
|
||||
<hudson.plugins.git.BranchSpec>
|
||||
<name>*/amd-master</name>
|
||||
</hudson.plugins.git.BranchSpec>
|
||||
</branches>
|
||||
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
|
||||
<submoduleCfg class="empty-list"/>
|
||||
<extensions/>
|
||||
</scm>
|
||||
<scriptPath>internal/continuous_integration/nightly/Jenkinsfile</scriptPath>
|
||||
<lightweight>false</lightweight>
|
||||
</definition>
|
||||
<triggers/>
|
||||
<disabled>false</disabled>
|
||||
</flow-definition>
|
||||
+335
@@ -0,0 +1,335 @@
|
||||
pipeline {
|
||||
agent { label 'sv-pdp-5' }
|
||||
environment {
|
||||
HSA_FORCE_FINE_GRAIN_PCIE = 1
|
||||
MPI_HOME="/home/resperf/mpich-4.0.1/install/global"
|
||||
PATH = "$MPI_HOME/bin:$PATH"
|
||||
LD_LIBRARY_PATH = "$MPI_HOME/lib:$LD_LIBRARY_PATH"
|
||||
build_dir = "builds/${BUILD_ID}"
|
||||
CMAKE_PREFIX_PATH = "/opt/rocm/lib/cmake"
|
||||
}
|
||||
stages {
|
||||
stage('Synchronize Source Code') {
|
||||
steps {
|
||||
git branch: 'amd-master', changelog: false, poll: false, url: 'ssh://gerritgit/rsch/ec/shmem'
|
||||
}
|
||||
}
|
||||
stage('Make Build Directory') {
|
||||
steps {
|
||||
dir("library") {
|
||||
sh "mkdir -p ${build_dir}"
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build Source Code') {
|
||||
parallel {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi_wf_coal install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_SINGLE_DEBUG') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_SINGLE_DEBUG") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_single_debug install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_SINGLE_DEBUG") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE_DEBUG/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_SINGLE_DEBUG") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_SINGLE_DEBUG/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_SINGLE_PROFILE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_SINGLE_PROFILE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_single_profile install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_SINGLE_PROFILE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE_PROFILE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/RC_SINGLE_PROFILE") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_SINGLE_PROFILE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_IPC') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI_IPC") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi_ipc install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI_IPC") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI_IPC/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_MULTI_IPC") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI_IPC/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_DEBUG') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI_DEBUG") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi_debug install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI_DEBUG") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI_DEBUG/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_MULTI_DEBUG") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI_DEBUG/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_PROFILE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI_PROFILE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi_profile install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI_PROFILE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI_PROFILE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
dir("internal/clients/spts/${build_dir}/DC_MULTI_PROFILE") {
|
||||
sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI_PROFILE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Run Tests') {
|
||||
stages {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE/rocshmem_example_driver single_thread ${build_dir}/RC_SINGLE'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE/spts single_thread ${build_dir}/RC_SINGLE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL/rocshmem_example_driver multi_thread ${build_dir}/RC_MULTI_WF_COAL'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL/spts multi_thread ${build_dir}/RC_MULTI_WF_COAL'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI/rocshmem_example_driver multi_thread ${build_dir}/RC_MULTI'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI/spts multi_thread ${build_dir}/RC_MULTI'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_SINGLE_DEBUG') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE_DEBUG/rocshmem_example_driver single_thread ${build_dir}/RC_SINGLE_DEBUG'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE_DEBUG/spts single_thread ${build_dir}/RC_SINGLE_DEBUG'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_SINGLE_PROFILE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE_PROFILE/rocshmem_example_driver single_thread ${build_dir}/RC_SINGLE_PROFILE'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE_PROFILE/spts single_thread ${build_dir}/RC_SINGLE_PROFILE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_SINGLE/rocshmem_example_driver single_thread ${build_dir}/DC_SINGLE'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/DC_SINGLE/spts single_thread ${build_dir}/DC_SINGLE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI/spts multi_thread ${build_dir}/DC_MULTI'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_IPC') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_IPC/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI_IPC'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_IPC/spts multi_thread ${build_dir}/DC_MULTI_IPC'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_DEBUG') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_DEBUG/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI_DEBUG'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_DEBUG/spts multi_thread ${build_dir}/DC_MULTI_DEBUG'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI_PROFILE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_PROFILE/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI_PROFILE'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI_PROFILE/spts multi_thread ${build_dir}/DC_MULTI_PROFILE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RO_NET_BASIC') {
|
||||
// RO_NET controlled at runtime, no need for a new build. Use RC_MULTI
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh 'mkdir -p ${build_dir}/RO_NET_BASIC'
|
||||
sh 'ROC_SHMEM_RO=1 RO_NET_CPU_QUEUE=1 UCX_TLS=rc ./driver.sh ${build_dir}/RC_MULTI/rocshmem_example_driver ro ${build_dir}/RO_NET_BASIC'
|
||||
}
|
||||
dir("internal/clients/spts") {
|
||||
sh 'mkdir -p ${build_dir}/RO_NET_BASIC'
|
||||
sh 'ROC_SHMEM_RO=1 RO_NET_CPU_QUEUE=1 UCX_TLS=rc ./driver.sh ${build_dir}/RC_MULTI/spts multi_thread ${build_dir}/RO_NET_BASIC'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?xml version='1.1' encoding='UTF-8'?>
|
||||
<flow-definition plugin="workflow-job@2.40">
|
||||
<actions>
|
||||
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobAction plugin="pipeline-model-definition@1.8.4"/>
|
||||
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction plugin="pipeline-model-definition@1.8.4">
|
||||
<jobProperties/>
|
||||
<triggers/>
|
||||
<parameters/>
|
||||
<options/>
|
||||
</org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction>
|
||||
</actions>
|
||||
<description></description>
|
||||
<keepDependencies>false</keepDependencies>
|
||||
<properties>
|
||||
<org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
|
||||
<triggers>
|
||||
<hudson.triggers.TimerTrigger>
|
||||
<spec>H 22 * * *</spec>
|
||||
</hudson.triggers.TimerTrigger>
|
||||
</triggers>
|
||||
</org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
|
||||
</properties>
|
||||
<definition class="org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition" plugin="workflow-cps@2.90">
|
||||
<scm class="hudson.plugins.git.GitSCM" plugin="git@4.7.1">
|
||||
<configVersion>2</configVersion>
|
||||
<userRemoteConfigs>
|
||||
<hudson.plugins.git.UserRemoteConfig>
|
||||
<url>ssh://gerritgit/rsch/ec/shmem</url>
|
||||
</hudson.plugins.git.UserRemoteConfig>
|
||||
</userRemoteConfigs>
|
||||
<branches>
|
||||
<hudson.plugins.git.BranchSpec>
|
||||
<name>*/amd-master</name>
|
||||
</hudson.plugins.git.BranchSpec>
|
||||
</branches>
|
||||
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
|
||||
<submoduleCfg class="empty-list"/>
|
||||
<extensions/>
|
||||
</scm>
|
||||
<scriptPath>internal/continuous_integration/nightly/Jenkinsfile</scriptPath>
|
||||
<lightweight>false</lightweight>
|
||||
</definition>
|
||||
<triggers/>
|
||||
<disabled>false</disabled>
|
||||
</flow-definition>
|
||||
+288
@@ -0,0 +1,288 @@
|
||||
pipeline {
|
||||
agent { label 'sv-pdp-7' }
|
||||
environment {
|
||||
build_dir = "builds/change-${GERRIT_CHANGE_NUMBER}-${GERRIT_PATCHSET_NUMBER}"
|
||||
|
||||
MPI_HOME="/home/resperf/mpich/install"
|
||||
UCX_HOME="/home/resperf/ucx/install"
|
||||
|
||||
PATH="$MPI_HOME/bin:$UCX_HOME/bin:$PATH"
|
||||
LD_LIBRARY_PATH="$MPI_HOME/lib:$UCX_HOME/lib:$LD_LIBRARY_PATH"
|
||||
PKG_CONFIG_PATH="$MPI_HOME/lib/pkgconfig:$UCX_HOME/lib/pkgconfig"
|
||||
|
||||
CMAKE_PREFIX_PATH="/opt/rocm/lib/cmake"
|
||||
|
||||
UCX_WARN_UNUSED_ENV_VARS="n"
|
||||
HSA_FORCE_FINE_GRAIN_PCIE=1
|
||||
UCX_TLS="rc"
|
||||
ROC_SHMEM_USE_SQ_GPU_MEM=0
|
||||
ROC_SHMEM_USE_CQ_GPU_MEM=0
|
||||
ROC_SHMEM_NUM_BLOCKS=128
|
||||
}
|
||||
stages {
|
||||
stage('Synchronize Source Code') {
|
||||
steps {
|
||||
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: 'FETCH_HEAD']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false]], submoduleCfg: [], userRemoteConfigs: [[name: 'origin', refspec: '${GERRIT_REFSPEC}', url: 'ssh://gerritgit/rsch/ec/shmem']]]
|
||||
}
|
||||
}
|
||||
stage('Env Variables') {
|
||||
steps {
|
||||
sh 'printenv'
|
||||
}
|
||||
}
|
||||
stage('Make Build Directory') {
|
||||
steps {
|
||||
dir("library") {
|
||||
sh "mkdir -p ${build_dir}"
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build Source Code') {
|
||||
|
||||
failFast true
|
||||
|
||||
parallel {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/RC_SINGLE") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi_wf_coal install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/RC_MULTI") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/DC_SINGLE") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/DC_MULTI") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RO_NET') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RO_NET") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/ro_net install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RO_NET") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RO_NET/install'
|
||||
}
|
||||
dir("clients/sos_tests/${build_dir}/RO_NET") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RO_NET/install'
|
||||
}
|
||||
//===================== SPTS ==========================
|
||||
//dir("internal/clients/spts/${build_dir}/RO_NET") {
|
||||
// sh '../../../build_configs/analyze_single_rocshmem ${WORKSPACE}/library/${build_dir}/RO_NET/install'
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Run Tests') {
|
||||
stages {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE/rocshmem_example_driver single_thread ${build_dir}/RC_SINGLE'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE short ${build_dir}/RC_SINGLE'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh './driver.sh ${build_dir}/RC_SINGLE/spts single_thread ${build_dir}/RC_SINGLE'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL/rocshmem_example_driver multi_thread ${build_dir}/RC_MULTI_WF_COAL'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL short ${build_dir}/RC_MULTI_WF_COAL'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL/spts multi_thread ${build_dir}/RC_MULTI_WF_COAL'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI/rocshmem_example_driver multi_thread ${build_dir}/RC_MULTI'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI short ${build_dir}/RC_MULTI'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh './driver.sh ${build_dir}/RC_MULTI/spts multi_thread ${build_dir}/RC_MULTI'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_SINGLE/rocshmem_example_driver single_thread ${build_dir}/DC_SINGLE'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_SINGLE short ${build_dir}/DC_SINGLE'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh './driver.sh ${build_dir}/DC_SINGLE/spts single_thread ${build_dir}/DC_SINGLE'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI short ${build_dir}/DC_MULTI'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh './driver.sh ${build_dir}/DC_MULTI/spts multi_thread ${build_dir}/DC_MULTI'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RO_NET') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh 'ROC_SHMEM_RO=1 RO_NET_CPU_QUEUE=1 UCX_TLS=rc ./driver.sh ${build_dir}/RO_NET/rocshmem_example_driver ro ${build_dir}/RO_NET'
|
||||
}
|
||||
dir("clients/sos_tests") {
|
||||
sh 'ROC_SHMEM_RO=1 ./driver.sh ${build_dir}/RO_NET short ${build_dir}/RO_NET'
|
||||
}
|
||||
//dir("internal/clients/spts") {
|
||||
// sh 'ROC_SHMEM_RO=1 RO_NET_CPU_QUEUE=1 UCX_TLS=rc ./driver.sh ${build_dir}/RO_NET/spts multi_thread ${build_dir}/RO_NET'
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Generate Checker Metadata') {
|
||||
steps {
|
||||
dir("library/${build_dir}") {
|
||||
sh 'git fetch --tags'
|
||||
sh 'git log --pretty=oneline remotes/origin/amd-master.. > changeset_delta.txt'
|
||||
sh 'git log --pretty=oneline remotes/origin/amd-master~1..remotes/origin/amd-master >> changeset_delta.txt'
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Archive Artifacts') {
|
||||
steps {
|
||||
dir("library/${build_dir}") {
|
||||
archiveArtifacts artifacts: 'changeset_delta.txt'
|
||||
}
|
||||
dir("clients/functional_tests/${build_dir}") {
|
||||
archiveArtifacts artifacts: 'RC_SINGLE/**/*.log'
|
||||
archiveArtifacts artifacts: 'RC_MULTI/**/*.log'
|
||||
archiveArtifacts artifacts: 'DC_SINGLE/**/*.log'
|
||||
archiveArtifacts artifacts: 'DC_MULTI/**/*.log'
|
||||
archiveArtifacts artifacts: 'RO_NET/**/*.log'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
post {
|
||||
success {
|
||||
build job: 'shmem_perf_check', wait: true
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import glob
|
||||
import pprint
|
||||
|
||||
class PathGlobber():
|
||||
def __init__(self, name, *partial_paths_to_concatenate):
|
||||
self._search_path = ''
|
||||
for partial_path in partial_paths_to_concatenate:
|
||||
self._search_path += partial_path
|
||||
self.dirs = []
|
||||
self._name = name
|
||||
|
||||
def generate(self):
|
||||
self.dirs = glob.glob(self._search_path, recursive=True)
|
||||
|
||||
def dump(self):
|
||||
str_out = self._name
|
||||
str_out += pprint.pformat(self.dirs, width=120)
|
||||
str_out += '\n'
|
||||
return str_out
|
||||
@@ -0,0 +1,15 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import absolute_path
|
||||
import glob
|
||||
|
||||
class Archive(absolute_path.PathGlobber):
|
||||
def __init__(self, args, name=''):
|
||||
archive_path = args.archive_path
|
||||
super().__init__(name, args.jenkins_path, archive_path,
|
||||
args.benchmark_path)
|
||||
|
||||
def path_of_build(self, build_id):
|
||||
path = self._search_path.replace('*/archive', build_id + '/archive')
|
||||
path = glob.glob(path)
|
||||
return path[0]
|
||||
@@ -0,0 +1,54 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import parser
|
||||
import dictionary
|
||||
import archive_path
|
||||
import checker
|
||||
|
||||
def main():
|
||||
# This script accepts command line values, but has reasonable defaults
|
||||
# needed to run as part of the CI infrastructure.
|
||||
p = parser.Parser()
|
||||
args = p.parse_command_line()
|
||||
|
||||
# Jenkins is configured to archive build artifacts in a directory.
|
||||
# The 'archives' variable holds the set of directories for
|
||||
# successful Jenkins builds (those which run to completion).
|
||||
# Partitioning of successful builds is useful since we can ignore
|
||||
# failed build directories while searching for performance data.
|
||||
archives = archive_path.Archive(args)
|
||||
archives.generate()
|
||||
print(archives.dump())
|
||||
|
||||
# Jenkins records changeset information in a changeset_delta.txt file.
|
||||
# We parse the changelog for the commit hash and save it into
|
||||
# 'builds_to_changesets'.
|
||||
build_to_changeset = dictionary.BuildToChangesetDict()
|
||||
build_to_changeset.generate(archives.dirs)
|
||||
print(build_to_changeset.dump())
|
||||
|
||||
# 'changeset_to_build' holds the changeset mappings with a
|
||||
# list of build numbers that match the changeset value.
|
||||
# Builds may be executed many times with the same changeset.
|
||||
# The most recent build (identified by the largest build number) will
|
||||
# be used to retrieve performance data.
|
||||
changeset_to_build = dictionary.ChangesetToBuildDict()
|
||||
changeset_to_build.generate(build_to_changeset)
|
||||
print(changeset_to_build.dump())
|
||||
|
||||
# Jenkins is configured to dump Gerrit-esque relation chain changesets
|
||||
# to an archived output file 'changeset-delta.txt'.
|
||||
# The relation chain will be used to determine changeset performance
|
||||
# data for each changeset in the relation chain (when possible).
|
||||
build_to_relation_chain = dictionary.BuildToRelationChainDict()
|
||||
build_to_relation_chain.generate(archives.dirs)
|
||||
print(build_to_relation_chain.dump())
|
||||
|
||||
perf_checker = checker.Performance(args,
|
||||
archives,
|
||||
changeset_to_build,
|
||||
build_to_relation_chain)
|
||||
perf_checker.run()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,97 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import archive_path
|
||||
import log
|
||||
import dictionary
|
||||
import report
|
||||
import violation
|
||||
|
||||
class Performance():
|
||||
def __init__(self, args, archives, changeset_to_build,
|
||||
build_to_relation_chain):
|
||||
self._args = args
|
||||
self._archives = archives
|
||||
self._changeset_to_build = changeset_to_build
|
||||
self._build_to_relation_chain = build_to_relation_chain
|
||||
self._build_id = build_to_relation_chain.most_recent_build()
|
||||
self._archive_path = archives.path_of_build(self._build_id)
|
||||
self._output = report.Report(self._build_id,
|
||||
self._archive_path,
|
||||
'performance_diff.txt')
|
||||
|
||||
def _other_build_id(self, other_changeset):
|
||||
packed_id = [build_id for chng,
|
||||
build_id in self._changeset_to_build.data.items()
|
||||
if chng.startswith(other_changeset)]
|
||||
|
||||
# The 'packed_id' variable is a list containing lists.
|
||||
# We need the content inside the packed_id data structure.
|
||||
try:
|
||||
build_id = packed_id[0][0]
|
||||
return True, build_id
|
||||
except IndexError:
|
||||
# An index error can occur if builds in the relation chain
|
||||
# have not been tested before attempting to test this
|
||||
# changeset.
|
||||
return False, 0
|
||||
|
||||
def _log_difference(self, log_filename, other_changeset,
|
||||
other_archive_path, violations):
|
||||
print('determining difference of log file ' + log_filename)
|
||||
self._output.record(log_filename)
|
||||
|
||||
current_file_path = self._archive_path + '/' + log_filename
|
||||
other_file_path = other_archive_path + '/' + log_filename
|
||||
log_pair = log.Pair(current_file_path, other_file_path)
|
||||
log_pair.calculate_differences()
|
||||
|
||||
latency_perc = [float(i.strip('%')) \
|
||||
for i in log_pair.latency_percentage_differences]
|
||||
max_latency = max(latency_perc)
|
||||
violations.check(max_latency, other_changeset, log_filename)
|
||||
|
||||
self._output.record(log_pair.dump())
|
||||
|
||||
def _changeset_difference(self, current_changeset, other_changeset):
|
||||
violations = violation.Threshold(self._args.latency_max, 'latency')
|
||||
|
||||
change_pair = '(' + current_changeset + ',' + other_changeset + ')'
|
||||
print('comparing changesets ' + change_pair)
|
||||
self._output.record(change_pair)
|
||||
|
||||
status, other_build_id = self._other_build_id(other_changeset)
|
||||
if status == False:
|
||||
message = 'skipping changeset ' + other_changeset
|
||||
print(message)
|
||||
self._output.record(message)
|
||||
return violations
|
||||
|
||||
other_archive_path = self._archives.path_of_build(other_build_id)
|
||||
print(self._archive_path)
|
||||
print(other_archive_path)
|
||||
|
||||
for filename in self._args.logs:
|
||||
self._log_difference(filename, other_changeset,
|
||||
other_archive_path, violations)
|
||||
print('\n')
|
||||
|
||||
return violations
|
||||
|
||||
def _calculate_performance_differences(self):
|
||||
current_changeset = \
|
||||
self._build_to_relation_chain.data[self._build_id][0]
|
||||
other_changesets = \
|
||||
self._build_to_relation_chain.data[self._build_id][1:]
|
||||
|
||||
for other_changeset in other_changesets:
|
||||
violations = self._changeset_difference(current_changeset,
|
||||
other_changeset)
|
||||
|
||||
# Only report on the last pairwise changeset combination.
|
||||
# This combination represents the changeset being tested and
|
||||
# the amd-master:HEAD.
|
||||
violations.provide_violations_to_report(self._output)
|
||||
|
||||
def run(self):
|
||||
self._output.open()
|
||||
self._calculate_performance_differences()
|
||||
@@ -0,0 +1,163 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import abc
|
||||
import os
|
||||
import pprint
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
class BaseDict(metaclass=abc.ABCMeta):
|
||||
def __init__(self):
|
||||
self.data = {}
|
||||
self._delimiter_path = 'archive'
|
||||
self._changeset_delta_filename = 'changeset_delta.txt'
|
||||
|
||||
def _build_id(self, build_directory):
|
||||
sub_directory_strings = build_directory.split('/')
|
||||
word_count = 0
|
||||
for word in sub_directory_strings:
|
||||
if word == '':
|
||||
continue
|
||||
if word == self._delimiter_path:
|
||||
break
|
||||
word_count += 1
|
||||
bld_id = sub_directory_strings[word_count]
|
||||
return bld_id
|
||||
|
||||
def _open_changeset_delta_file(self, archive_directory):
|
||||
build_directory, config_directory = os.path.split(archive_directory)
|
||||
changeset_file_path = build_directory + '/' + \
|
||||
self._changeset_delta_filename
|
||||
try:
|
||||
file_handle = open(changeset_file_path, 'r')
|
||||
except:
|
||||
sys.exit('failed to open: ' + changeset_file_path)
|
||||
return file_handle
|
||||
|
||||
@abc.abstractmethod
|
||||
def _changeset_delta_operations(self, file_handle, bld_id):
|
||||
pass
|
||||
|
||||
def generate(self, archives):
|
||||
for d in archives:
|
||||
bld_id = self._build_id(d)
|
||||
f = self._open_changeset_delta_file(d)
|
||||
self._changeset_delta_operations(f, bld_id)
|
||||
|
||||
def most_recent_build(self):
|
||||
build_id_strings = self.data.keys()
|
||||
build_id_ints = list(map(int, build_id_strings))
|
||||
most_recent_build_id_int = max(build_id_ints)
|
||||
return str(most_recent_build_id_int)
|
||||
|
||||
def dump(self):
|
||||
str_out = self._print_text
|
||||
str_out += pprint.pformat(self.data, width=120)
|
||||
str_out += '\n'
|
||||
return str_out
|
||||
|
||||
class BuildToChangesetDict(BaseDict):
|
||||
def __init__(self, name=''):
|
||||
super().__init__()
|
||||
self._print_text = name
|
||||
|
||||
def _changeset_delta_operations(self, file_handle, bld_id):
|
||||
commit_line = file_handle.readline()
|
||||
try:
|
||||
commit_hash = commit_line.split()[0]
|
||||
except IndexError:
|
||||
commit_hash = None
|
||||
if commit_hash != None:
|
||||
self.data[bld_id] = commit_hash
|
||||
|
||||
class BuildToRelationChainDict(BaseDict):
|
||||
def __init__(self, name=''):
|
||||
super().__init__()
|
||||
self._print_text = name
|
||||
|
||||
def _changeset_delta_operations(self, file_handle, bld_id):
|
||||
changes = []
|
||||
for line in file_handle:
|
||||
changes.append(line.split()[0])
|
||||
self.data[bld_id] = changes
|
||||
|
||||
class ChangesetToBuildDict():
|
||||
def __init__(self, name=''):
|
||||
self.data = {}
|
||||
self._print_text = name
|
||||
|
||||
def _invert_dict(self, dictionary):
|
||||
dict_with_duplicates = {}
|
||||
for key, value in dictionary.data.items():
|
||||
list_with_duplicates = dict_with_duplicates.get(value, [])
|
||||
list_with_duplicates.append(key)
|
||||
dict_with_duplicates[value] = list_with_duplicates
|
||||
return dict_with_duplicates
|
||||
|
||||
def generate(self, dictionary):
|
||||
self.data = self._invert_dict(dictionary)
|
||||
|
||||
def dump(self):
|
||||
str_out = self._print_text
|
||||
str_out += pprint.pformat(self.data, width=120)
|
||||
str_out += '\n'
|
||||
return str_out
|
||||
|
||||
class ChangelogToMostRecentBuild():
|
||||
def __init__(self, name=''):
|
||||
self._print_text = name
|
||||
self._all_changesets = []
|
||||
self._changesets_with_builds = []
|
||||
self._changesets_without_builds = []
|
||||
self.data = {}
|
||||
|
||||
def _build_id(self, changeset_to_build, changeset):
|
||||
try:
|
||||
build_id_strings = changeset_to_build.data[changeset]
|
||||
build_id_ints = list(map(int, build_id_strings))
|
||||
most_recent_build_id_int = max(build_id_ints)
|
||||
build_id_str = str(most_recent_build_id_int)
|
||||
except:
|
||||
build_id_str = ''
|
||||
return build_id_str
|
||||
|
||||
def _changelog(self):
|
||||
# print git hash along with file modification stats
|
||||
shellcmd = 'git log --pretty=tformat:"%H" --shortstat | '
|
||||
# condense the output down to single line
|
||||
shellcmd += "awk 'ORS=NR%3?\" \":\"\\n\"' | "
|
||||
# parse out the git hash by itself
|
||||
shellcmd += "awk '{print $1}'"
|
||||
x = subprocess.getoutput(shellcmd)
|
||||
self._all_changesets = x.split()
|
||||
|
||||
def _with_builds(self, changeset_to_build):
|
||||
changesets = list(changeset_to_build.data.keys())
|
||||
self._changesets_with_builds = changesets
|
||||
|
||||
def _without_builds(self):
|
||||
self._changesets_without_builds = \
|
||||
list(set(self._all_changesets) - \
|
||||
set(self._changesets_with_builds))
|
||||
|
||||
def generate(self, changeset_to_build):
|
||||
self._changelog()
|
||||
self._with_builds(changeset_to_build)
|
||||
self._without_builds()
|
||||
for changeset in self._all_changesets:
|
||||
if changeset in self._changesets_with_builds:
|
||||
build = self._build_id(changeset_to_build, changeset)
|
||||
self.data[changeset] = build
|
||||
|
||||
def dump(self):
|
||||
str_out = self._print_text
|
||||
str_out += 'git-log_changesets_in_order:\n'
|
||||
str_out += pprint.pformat(self._all_changesets, width=120)
|
||||
str_out += '\nfilesystem_with_builds:\n'
|
||||
str_out += pprint.pformat(self._changesets_with_builds, width=120)
|
||||
str_out += '\nfilesystem_without_builds:\n'
|
||||
str_out += pprint.pformat(self._changesets_without_builds, width=120)
|
||||
str_out += '\ngit-log_changesets_to_build-id_mappings:\n'
|
||||
str_out += pprint.pformat(self.data, width=120)
|
||||
str_out += '\n'
|
||||
return str_out
|
||||
@@ -0,0 +1,107 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import pprint
|
||||
import re
|
||||
import sys
|
||||
|
||||
class Log():
|
||||
def __init__(self, logfile_abspath):
|
||||
self._file_path = logfile_abspath
|
||||
self.latency = []
|
||||
self.bandwidth = []
|
||||
# regex matches the latency and bandwidth lines in the log files
|
||||
self._regex = '.*[0-9]+\.[0-9]+.*[0-9]\.[0-9].*'
|
||||
|
||||
def open(self):
|
||||
try:
|
||||
self._file_handle = open(self._file_path, 'r')
|
||||
except:
|
||||
sys.exit('failed to open: ' + self._file_path)
|
||||
|
||||
def parse(self):
|
||||
for line in self._file_handle:
|
||||
if re.match(self._regex, line):
|
||||
entries = line.split()
|
||||
self.latency.append(round(float(entries[0]), 4))
|
||||
self.bandwidth.append(round(float(entries[1]), 4))
|
||||
|
||||
class Pair():
|
||||
def __init__(self, first_logfile_abspath, second_logfile_abspath):
|
||||
self.first = Log(first_logfile_abspath)
|
||||
self.first.open()
|
||||
self.first.parse()
|
||||
self.second = Log(second_logfile_abspath)
|
||||
self.second.open()
|
||||
self.second.parse()
|
||||
|
||||
def _ratio(self, a, b):
|
||||
diff = [round((x - y), 4) for x, y in zip(a, b)]
|
||||
ratio = []
|
||||
for numerator, denominator in zip(diff, a):
|
||||
try:
|
||||
ratio.append(round(numerator / denominator, 4))
|
||||
except:
|
||||
ratio.append(float(0.0000))
|
||||
return ratio
|
||||
|
||||
def _percent(self, ratio):
|
||||
perc = ['{0:.2%}'.format(x) for x in ratio]
|
||||
return perc
|
||||
|
||||
def _percentage_difference(self, a, b):
|
||||
ratio = self._ratio(a, b)
|
||||
percent = self._percent(ratio)
|
||||
return percent
|
||||
|
||||
def calculate_differences(self):
|
||||
self.latency_percentage_differences = \
|
||||
self._percentage_difference(self.first.latency,
|
||||
self.second.latency)
|
||||
self.bandwidth_percentage_differences = \
|
||||
self._percentage_difference(self.first.bandwidth,
|
||||
self.second.bandwidth)
|
||||
|
||||
def dump(self):
|
||||
delim = ', '
|
||||
output = '\tlatency:'
|
||||
output += '\n\t\t'
|
||||
output += delim.join(map(str, self.first.latency))
|
||||
output += '\n\t\t'
|
||||
output += delim.join(map(str, self.second.latency))
|
||||
output += '\n\t\t'
|
||||
output += delim.join(map(str, self.latency_percentage_differences))
|
||||
output += '\n\tbandwidth:'
|
||||
output += '\n\t\t'
|
||||
output += delim.join(map(str, self.first.bandwidth))
|
||||
output += '\n\t\t'
|
||||
output += delim.join(map(str, self.second.bandwidth))
|
||||
output += '\n\t\t'
|
||||
output += delim.join(map(str, self.bandwidth_percentage_differences))
|
||||
return output
|
||||
|
||||
class Tracker():
|
||||
def __init__(self, args, archives):
|
||||
self._args = args
|
||||
self._archives = archives
|
||||
self._data = {}
|
||||
|
||||
def add(self, changeset, most_recent_build_id):
|
||||
archive_path = self._archives.path_of_build(most_recent_build_id)
|
||||
for filename in self._args.logs:
|
||||
abs_file_path = archive_path + '/' + filename
|
||||
log = Log(abs_file_path)
|
||||
log.open()
|
||||
log.parse()
|
||||
key = (changeset, filename)
|
||||
self._data[key] = log
|
||||
|
||||
def dump(self):
|
||||
out_str = ''
|
||||
for key in self._data.keys():
|
||||
log = self._data[key]
|
||||
line_str = pprint.pformat(key, width=120)
|
||||
line_str += ' = '
|
||||
line_str += pprint.pformat(log.latency, width=120)
|
||||
line_str += '\n'
|
||||
out_str += line_str
|
||||
return out_str
|
||||
@@ -0,0 +1,85 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import argparse
|
||||
|
||||
class Parser():
|
||||
def __init__(self):
|
||||
# A parent directory containing log file output from one of the
|
||||
# configuration runs. The output directories are intended to
|
||||
# be symmetric in naming with the various configurations supplied
|
||||
# by the library's build_configs.
|
||||
self._default_config = 'RC_SINGLE'
|
||||
|
||||
# The list of log files which need to be checked for performance
|
||||
# differences.
|
||||
self._default_logs = ['get.log',
|
||||
'get_nbi.log',
|
||||
'get_swarm.log',
|
||||
'put.log',
|
||||
'put_nbi.log']
|
||||
|
||||
# The maximum pairwise difference for the log file latencies.
|
||||
self._default_latency_max = 5.0
|
||||
|
||||
# The minimum bandwidth difference for the log file bandwidths.
|
||||
self._default_bandwidth_min = -50.0
|
||||
|
||||
# The Jenkins tester archives slave output on the master's
|
||||
# filesystem which currently uses this top-level path (as the
|
||||
# resperf account).
|
||||
self._default_jenkins_path = \
|
||||
'/proj/radl_extra/users/resperf/jenkins-2.192/'
|
||||
|
||||
# The performance tester runs as part of the 'short' job to
|
||||
# verify that no performance degradation has occurred between
|
||||
# commits. This archive path is the generic archive path
|
||||
# for all of the builds. The Kleene star is used as a place
|
||||
# holder for the Jenkins build number.
|
||||
self._default_archive_path = \
|
||||
'jobs/shmem_short/builds/*/archive/'
|
||||
|
||||
# The default benchmark path can be used to alter archive
|
||||
# output placement. Currently, this is initialized to an empty
|
||||
# string, but subsequently initialized to inject the config
|
||||
# path.
|
||||
self._default_benchmark_path = ''
|
||||
|
||||
def setup_options(self, argparser):
|
||||
argparser.add_argument('-j',
|
||||
dest='jenkins_path',
|
||||
default=self._default_jenkins_path)
|
||||
argparser.add_argument('-a',
|
||||
dest='archive_path',
|
||||
default=self._default_archive_path)
|
||||
argparser.add_argument('-b',
|
||||
dest='benchmark_path',
|
||||
default=self._default_benchmark_path)
|
||||
argparser.add_argument('-c',
|
||||
dest='config',
|
||||
default=self._default_config)
|
||||
argparser.add_argument('-l',
|
||||
dest='logs',
|
||||
nargs='*',
|
||||
default=self._default_logs)
|
||||
argparser.add_argument('-x',
|
||||
dest='latency_max',
|
||||
type=float,
|
||||
default=self._default_latency_max)
|
||||
argparser.add_argument('-y',
|
||||
dest='bandwidth_min',
|
||||
type=float,
|
||||
default=self._default_bandwidth_min)
|
||||
argparser.add_argument('-o',
|
||||
dest='one_changeset')
|
||||
argparser.add_argument('-r',
|
||||
dest='changeset_range',
|
||||
nargs=2,
|
||||
metavar=("most_recent_changeset", "least_recent_changeset"))
|
||||
return argparser
|
||||
|
||||
def parse_command_line(self):
|
||||
p = argparse.ArgumentParser()
|
||||
p = self.setup_options(p)
|
||||
args = p.parse_args()
|
||||
args.benchmark_path = args.config + args.benchmark_path
|
||||
return args
|
||||
@@ -0,0 +1,30 @@
|
||||
<?xml version='1.1' encoding='UTF-8'?>
|
||||
<project>
|
||||
<actions/>
|
||||
<description>shmem performance delta checker</description>
|
||||
<keepDependencies>false</keepDependencies>
|
||||
<properties/>
|
||||
<scm class="hudson.scm.NullSCM"/>
|
||||
<assignedNode>master</assignedNode>
|
||||
<canRoam>false</canRoam>
|
||||
<disabled>false</disabled>
|
||||
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
|
||||
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
|
||||
<triggers/>
|
||||
<concurrentBuild>false</concurrentBuild>
|
||||
<builders>
|
||||
<hudson.tasks.Shell>
|
||||
<command>/proj/radl_extra/users/resperf/jenkins-2.192/workspace/shmem_short@script/internal/continuous_integration/short/check_perf_delta.py -c "RC_SINGLE" -x "15.0" -l put.log put_nbi.log get.log get_nbi.log amo_add.log amo_fadd.log amo_fcswap.log amo_fetch.log amo_finc.log amo_inc.log ping_pong.log
|
||||
/proj/radl_extra/users/resperf/jenkins-2.192/workspace/shmem_short@script/internal/continuous_integration/short/check_perf_delta.py -c "RC_MULTI" -x "15.0" -l put.log put_nbi.log get.log get_nbi.log amo_add.log amo_fadd.log amo_fcswap.log amo_fetch.log amo_finc.log amo_inc.log ping_pong.log get_swarm.log
|
||||
/proj/radl_extra/users/resperf/jenkins-2.192/workspace/shmem_short@script/internal/continuous_integration/short/check_perf_delta.py -c "DC_SINGLE" -x "15.0" -l put.log put_nbi.log get.log get_nbi.log ping_pong.log
|
||||
/proj/radl_extra/users/resperf/jenkins-2.192/workspace/shmem_short@script/internal/continuous_integration/short/check_perf_delta.py -c "DC_MULTI" -x "15.0" -l put.log put_nbi.log get.log get_nbi.log ping_pong.log get_swarm.log
|
||||
/proj/radl_extra/users/resperf/jenkins-2.192/workspace/shmem_short@script/internal/continuous_integration/short/check_perf_delta.py -c "RO_NET_BASIC" -x "75.0" -l put.log put_nbi.log get.log get_nbi.log ping_pong.log
|
||||
</command>
|
||||
<configuredLocalRules/>
|
||||
</hudson.tasks.Shell>
|
||||
</builders>
|
||||
<publishers/>
|
||||
<buildWrappers>
|
||||
<hudson.plugins.timestamper.TimestamperBuildWrapper plugin="timestamper@1.12"/>
|
||||
</buildWrappers>
|
||||
</project>
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import parser
|
||||
import dictionary
|
||||
import archive_path
|
||||
import plotter
|
||||
|
||||
def main():
|
||||
p = parser.Parser()
|
||||
args = p.parse_command_line()
|
||||
|
||||
archives = archive_path.Archive(args)
|
||||
archives.generate()
|
||||
print(archives.dump())
|
||||
|
||||
build_to_changeset = dictionary.BuildToChangesetDict()
|
||||
build_to_changeset.generate(archives.dirs)
|
||||
print(build_to_changeset.dump())
|
||||
|
||||
changeset_to_build = dictionary.ChangesetToBuildDict()
|
||||
changeset_to_build.generate(build_to_changeset)
|
||||
print(changeset_to_build.dump())
|
||||
|
||||
plot = plotter.Plot(args,
|
||||
archives,
|
||||
changeset_to_build)
|
||||
|
||||
# either plot with all the changesets or the slice provided
|
||||
plot.changeset_slice()
|
||||
|
||||
if (args.one_changeset):
|
||||
plot.one_changeset_plot()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
+230
@@ -0,0 +1,230 @@
|
||||
#!/usr/bin/env Rscript
|
||||
|
||||
# load the required libraries:
|
||||
library(tidyverse)
|
||||
library(RColorBrewer)
|
||||
library(optparse)
|
||||
|
||||
# declare some helper functions
|
||||
ggpreview <- function (..., device = "png") {
|
||||
fname <- tempfile(fileext = paste0(".", device))
|
||||
ggplot2::ggsave(filename = fname, device = device, ...)
|
||||
system2("open", fname)
|
||||
invisible(NULL)
|
||||
}
|
||||
|
||||
set_right_order <- function(df) {
|
||||
# reverse the order of the rows so that oldest commit is first
|
||||
df <- df %>% map_df(rev)
|
||||
# ensure that ggplot plots the x-axis in the right order
|
||||
df$Commit <- factor(df$Commit, levels = unique(df$Commit))
|
||||
return(df)
|
||||
}
|
||||
|
||||
plot_and_save <- function(df, xval, yval, title, subtitle, xlabel, filename) {
|
||||
p <- ggplot(df, aes_string(x=xval, y=yval, group=1)) +
|
||||
geom_line(size = 0.5, color=mycolors[1]) +
|
||||
geom_point(size = 1.5, alpha = 1, color=mycolors[2]) +
|
||||
theme_minimal() +
|
||||
expand_limits(y=0) +
|
||||
xlab(xlabel) +
|
||||
ggtitle(title, subtitle = subtitle) +
|
||||
theme(
|
||||
axis.text.x = element_text(angle=90,hjust=1),
|
||||
axis.title.y = element_blank()
|
||||
) +
|
||||
scale_fill_manual(values = mycolors)
|
||||
#ggpreview(width=7.5, height=5, units="in", dpi=500)
|
||||
ggsave(filename, p, device=pdf, dpi=500)
|
||||
}
|
||||
|
||||
## Set up options ##
|
||||
|
||||
option_list = list(
|
||||
make_option(c("-o", "--output"), type="character", default=NULL, action="store",
|
||||
help="path (without trailing /) to a folder that will
|
||||
contain the plots", metavar="folder-path"),
|
||||
make_option(c("-a", "--changeset_a"), type="character", default=NULL, action="store",
|
||||
help="beginning (inclusive) changeset of slice", metavar="changeset"),
|
||||
make_option(c("-b", "--changeset_b"), type="character", default=NULL, action="store",
|
||||
help="ending (inclusive) changeset of slice", metavar="changeset"),
|
||||
make_option(c("-c", "--one_changeset"), type="character", default=NULL, action="store",
|
||||
help="if set, will prepare plots for one changeset; if not, plots for a changeset slice")
|
||||
|
||||
)
|
||||
|
||||
## SCRIPT START ##
|
||||
|
||||
# parse the options
|
||||
opt_parser <- OptionParser(option_list=option_list)
|
||||
opts <- parse_args(opt_parser)
|
||||
if (is.null(opts$output)) {
|
||||
print_help(opt_parser)
|
||||
stop("Please set the --output flag.", call.=FALSE)
|
||||
}
|
||||
slice_opt = 0
|
||||
single_opt = 0
|
||||
if (!is.null(opts$changeset_a) && !is.null(opts$changeset_b)) {
|
||||
slice_opt = 1
|
||||
}
|
||||
if (!is.null(opts$one_changeset)) {
|
||||
single_opt = 1
|
||||
}
|
||||
|
||||
if ( (slice_opt && single_opt) || (!slice_opt && !single_opt) ) {
|
||||
stop("Please supply a slice or a single changeset, not both.", call.= FALSE)
|
||||
}
|
||||
|
||||
# choose color palette
|
||||
mycolors <- brewer.pal(5, "Set2")
|
||||
|
||||
if (length(opts$one_changeset) > 0) {
|
||||
## Plotting data for a single changeset ##
|
||||
|
||||
# read the files
|
||||
non_amo <- read.csv("non_amo_one_changeset.csv", header=TRUE)
|
||||
amo <- read.csv("amo_one_changeset.csv", header=TRUE)
|
||||
ping_pong <- read.csv("ping_pong_one_changeset.csv", header=TRUE)
|
||||
|
||||
# ensure that ggplot plots the x-axis in the right order
|
||||
non_amo$size <- factor(non_amo$size, levels = unique(non_amo$size))
|
||||
amo$op <- factor(amo$op, levels = unique(amo$op))
|
||||
|
||||
# plot
|
||||
non_amo_ops <- list("put","put_nbi","get","get_nbi")
|
||||
for (op in non_amo_ops) {
|
||||
plot_and_save(df=non_amo,
|
||||
xval="size",
|
||||
yval=op,
|
||||
title=op,
|
||||
subtitle="Latency (us)",
|
||||
xlabel="Message size (bytes)",
|
||||
filename=paste(opts$output,"/",op,"_changeset_",opts$one_changeset,".pdf", sep="")
|
||||
)
|
||||
}
|
||||
|
||||
# prepare data for plots with fixed message size and ops as x axis
|
||||
non_amo$bsize <- paste("b",non_amo$size,sep="") # (so that the columns in non_amo_t start with a character)
|
||||
non_amo_t <- setNames(data.frame(t(non_amo[,2:5])), non_amo[,6]) # transpose + set column names
|
||||
non_amo_t$op <- colnames(non_amo[,2:5]) # make a column with operation names
|
||||
|
||||
sizes <- colnames(non_amo_t[,-(length(colnames(non_amo_t)))])
|
||||
for (size in sizes) {
|
||||
plot_and_save(df=non_amo_t,
|
||||
xval="op",
|
||||
yval=size,
|
||||
title=paste(sub('.', '', size),"byte"),
|
||||
subtitle="Latency (us)",
|
||||
xlabel="Operation",
|
||||
filename=paste(opts$output,"/",size,"_changeset_",opts$one_changeset,".pdf", sep="")
|
||||
)
|
||||
}
|
||||
|
||||
plot_and_save(df=amo,
|
||||
xval="op",
|
||||
yval="latency",
|
||||
title="Atomics",
|
||||
subtitle="Latency (us)",
|
||||
xlabel="Operation",
|
||||
filename=paste(opts$output,"/atomic_changeset_",opts$one_changeset,".pdf", sep="")
|
||||
)
|
||||
|
||||
ping_pong$type <- c("ping_pong")
|
||||
p<-ggplot(ping_pong, aes(x=type, y=latency, fill=type)) +
|
||||
geom_bar(stat="identity", width=0.5) +
|
||||
theme_minimal() +
|
||||
ggtitle("Ping pong", subtitle = "Latency (us)") +
|
||||
theme(
|
||||
axis.title.y = element_blank(),
|
||||
axis.text.y = element_blank(),
|
||||
axis.title.x = element_blank(),
|
||||
legend.position = "none"
|
||||
) +
|
||||
coord_flip() +
|
||||
scale_fill_manual(values = mycolors)
|
||||
#ggpreview(width=7.5, height=5, units="in", dpi=500)
|
||||
ggsave(paste(opts$output,"/ping_pong_changeset_",opts$one_changeset,".pdf", sep=""), p, device=pdf, dpi=500)
|
||||
|
||||
} else {
|
||||
## Plotting across a changeset slice ##
|
||||
|
||||
# read the files
|
||||
put <- read.csv("put.csv", header=TRUE)
|
||||
put_nbi <- read.csv("put_nbi.csv", header=TRUE)
|
||||
get <- read.csv("get.csv", header=TRUE)
|
||||
get_nbi <- read.csv("get_nbi.csv", header=TRUE)
|
||||
amo <- read.csv("amo.csv", header=TRUE)
|
||||
ping_pong <- read.csv("ping_pong.csv", header=TRUE)
|
||||
|
||||
# slice out the commits
|
||||
start <- match(c(opts$changeset_a), put$Commit)
|
||||
end <- match(c(opts$changeset_b), put$Commit)
|
||||
# (start and end should be the same for all the frames) #
|
||||
put <- put[start:end,]
|
||||
put_nbi <- put_nbi[start:end,]
|
||||
get <- get[start:end,]
|
||||
get_nbi <- get_nbi[start:end,]
|
||||
amo <- amo[start:end,]
|
||||
ping_pong <- ping_pong[start:end,]
|
||||
|
||||
put <- set_right_order(put)
|
||||
put_nbi <- set_right_order(put_nbi)
|
||||
get <- set_right_order(get)
|
||||
get_nbi <- set_right_order(get_nbi)
|
||||
amo <- set_right_order(amo)
|
||||
ping_pong <- set_right_order(ping_pong)
|
||||
|
||||
# plot
|
||||
non_amo_ops <- list("put","put_nbi","get","get_nbi")
|
||||
sizes_to_subtitle_map <- list("b1"="1 byte",
|
||||
"b2"="2 bytes",
|
||||
"b4"="4 bytes",
|
||||
"b8"="8 bytes",
|
||||
"b16"="16 bytes",
|
||||
"b32"="32 bytes",
|
||||
"b64"="64 bytes",
|
||||
"b128"="128 bytes",
|
||||
"b256"="256 bytes",
|
||||
"b512"="512 bytes",
|
||||
"b1024"="1024 bytes",
|
||||
"b2048"="2048 bytes",
|
||||
"b4096"="4096 bytes",
|
||||
"b8192"="8192 bytes",
|
||||
"b16384"="16384 bytes",
|
||||
"b32768"="32768 bytes")
|
||||
for (op in non_amo_ops) {
|
||||
for (size in names(sizes_to_subtitle_map)) {
|
||||
plot_and_save(df=eval(parse(text=op)),
|
||||
xval="Commit",
|
||||
yval=size,
|
||||
title=op,
|
||||
subtitle=paste("Latency (us) for ",sizes_to_subtitle_map[[size]],sep=""),
|
||||
xlabel="Commit (older to newer)",
|
||||
filename=paste(opts$output,"/",op,"_",size,".pdf", sep="")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
amo_ops <- list("add","cswap","fadd","fcswap","fetch","finc","inc")
|
||||
for (op in amo_ops) {
|
||||
plot_and_save(df=amo,
|
||||
xval="Commit",
|
||||
yval=op,
|
||||
title=op,
|
||||
subtitle="Latency (us)",
|
||||
xlabel="Commit (older to newer)",
|
||||
filename=paste(opts$output,"/",op,".pdf", sep="")
|
||||
)
|
||||
}
|
||||
|
||||
plot_and_save(df=ping_pong,
|
||||
xval="Commit",
|
||||
yval="latency",
|
||||
title="ping_pong",
|
||||
subtitle="Latency (us)",
|
||||
xlabel="Commit (older to newer)",
|
||||
filename=paste(opts$output,"/","ping_pong.pdf", sep="")
|
||||
)
|
||||
}
|
||||
|
||||
## SCRIPT END ##
|
||||
@@ -0,0 +1,295 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import dictionary
|
||||
import log
|
||||
#import matplotlib.pyplot
|
||||
import numpy
|
||||
import csv
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
class Plot():
|
||||
def __init__(self, args, archives, changeset_to_build):
|
||||
self._args = args
|
||||
self._archives = archives
|
||||
self._changelog = dictionary.ChangelogToMostRecentBuild()
|
||||
self._changelog.generate(changeset_to_build)
|
||||
print(self._changelog.dump())
|
||||
|
||||
def abbreviate_changesets(self, changesets):
|
||||
return [changeset[0:8] for changeset in changesets]
|
||||
|
||||
@staticmethod
|
||||
def write_dict_to_file(tracker, field_names, file_name):
|
||||
with open(file_name, 'w') as csvfile:
|
||||
writer = csv.DictWriter(csvfile, fieldnames=field_names)
|
||||
writer.writeheader()
|
||||
writer.writerows(tracker)
|
||||
|
||||
@staticmethod
|
||||
def check_and_add_to_dict(dictionary, key, array):
|
||||
if len(array) > 0:
|
||||
dictionary[key] = array[0]
|
||||
else:
|
||||
dictionary[key] = 0
|
||||
|
||||
def changeset_slice(self):
|
||||
self._log_tracker = log.Tracker(self._args, self._archives)
|
||||
for changeset in self._changelog._all_changesets:
|
||||
if changeset in self._changelog.data.keys():
|
||||
build_id = self._changelog.data[changeset]
|
||||
self._log_tracker.add(changeset, build_id)
|
||||
print(self._log_tracker.dump())
|
||||
|
||||
"""
|
||||
separate out dictionaries based on operation
|
||||
and prepare them in a format that works with
|
||||
the csv module
|
||||
"""
|
||||
put_tracker = []
|
||||
put_nbi_tracker = []
|
||||
get_tracker = []
|
||||
get_nbi_tracker = []
|
||||
amo_tracker = []
|
||||
ping_pong_tracker = []
|
||||
prev_commit = list(self._log_tracker._data.keys())[0][0]
|
||||
amo_dict = {}
|
||||
for key, value in self._log_tracker._data.items():
|
||||
if (key[1] == "put.log"):
|
||||
put_tracker.append({'Commit':key[0][0:7],
|
||||
'b1':value.latency[0],
|
||||
'b2':value.latency[1],
|
||||
'b4':value.latency[2],
|
||||
'b8':value.latency[3],
|
||||
'b16':value.latency[4],
|
||||
'b32':value.latency[5],
|
||||
'b64':value.latency[6],
|
||||
'b128':value.latency[7],
|
||||
'b256':value.latency[8],
|
||||
'b512':value.latency[9],
|
||||
'b1024':value.latency[10],
|
||||
'b2048':value.latency[11],
|
||||
'b4096':value.latency[12],
|
||||
'b8192':value.latency[13],
|
||||
'b16384':value.latency[14],
|
||||
'b32768':value.latency[15]
|
||||
})
|
||||
if (key[1] == "put_nbi.log"):
|
||||
put_nbi_tracker.append({'Commit':key[0][0:7],
|
||||
'b1':value.latency[0],
|
||||
'b2':value.latency[1],
|
||||
'b4':value.latency[2],
|
||||
'b8':value.latency[3],
|
||||
'b16':value.latency[4],
|
||||
'b32':value.latency[5],
|
||||
'b64':value.latency[6],
|
||||
'b128':value.latency[7],
|
||||
'b256':value.latency[8],
|
||||
'b512':value.latency[9],
|
||||
'b1024':value.latency[10],
|
||||
'b2048':value.latency[11],
|
||||
'b4096':value.latency[12],
|
||||
'b8192':value.latency[13],
|
||||
'b16384':value.latency[14],
|
||||
'b32768':value.latency[15]
|
||||
})
|
||||
if (key[1] == "get.log"):
|
||||
get_tracker.append({'Commit':key[0][0:7],
|
||||
'b1':value.latency[0],
|
||||
'b2':value.latency[1],
|
||||
'b4':value.latency[2],
|
||||
'b8':value.latency[3],
|
||||
'b16':value.latency[4],
|
||||
'b32':value.latency[5],
|
||||
'b64':value.latency[6],
|
||||
'b128':value.latency[7],
|
||||
'b256':value.latency[8],
|
||||
'b512':value.latency[9],
|
||||
'b1024':value.latency[10],
|
||||
'b2048':value.latency[11],
|
||||
'b4096':value.latency[12],
|
||||
'b8192':value.latency[13],
|
||||
'b16384':value.latency[14],
|
||||
'b32768':value.latency[15]
|
||||
})
|
||||
if (key[1] == "get_nbi.log"):
|
||||
get_nbi_tracker.append({'Commit':key[0][0:7],
|
||||
'b1':value.latency[0],
|
||||
'b2':value.latency[1],
|
||||
'b4':value.latency[2],
|
||||
'b8':value.latency[3],
|
||||
'b16':value.latency[4],
|
||||
'b32':value.latency[5],
|
||||
'b64':value.latency[6],
|
||||
'b128':value.latency[7],
|
||||
'b256':value.latency[8],
|
||||
'b512':value.latency[9],
|
||||
'b1024':value.latency[10],
|
||||
'b2048':value.latency[11],
|
||||
'b4096':value.latency[12],
|
||||
'b8192':value.latency[13],
|
||||
'b16384':value.latency[14],
|
||||
'b32768':value.latency[15]
|
||||
})
|
||||
if (key[1] == "ping_pong.log"):
|
||||
ping_pong_tracker.append({'Commit':key[0][0:7],
|
||||
'latency':value.latency[0]
|
||||
})
|
||||
|
||||
# check to see if we have moved to a new commit
|
||||
# if we have, store the dict in the amo_tracker
|
||||
if (key[0] != prev_commit):
|
||||
amo_dict['Commit'] = prev_commit[0:7]
|
||||
amo_tracker.append(amo_dict.copy())
|
||||
amo_dict.clear()
|
||||
|
||||
prev_commit = key[0]
|
||||
|
||||
if (key[1] == "amo_add.log"):
|
||||
self.check_and_add_to_dict(amo_dict, 'add', value.latency)
|
||||
if (key[1] == "amo_cswap.log"):
|
||||
self.check_and_add_to_dict(amo_dict, 'cswap', value.latency)
|
||||
if (key[1] == "amo_fadd.log"):
|
||||
self.check_and_add_to_dict(amo_dict, 'fadd', value.latency)
|
||||
if (key[1] == "amo_fcswap.log"):
|
||||
self.check_and_add_to_dict(amo_dict, 'fcswap', value.latency)
|
||||
if (key[1] == "amo_fetch.log"):
|
||||
self.check_and_add_to_dict(amo_dict, 'fetch', value.latency)
|
||||
if (key[1] == "amo_finc.log"):
|
||||
self.check_and_add_to_dict(amo_dict, 'finc', value.latency)
|
||||
if (key[1] == "amo_inc.log"):
|
||||
self.check_and_add_to_dict(amo_dict, 'inc', value.latency)
|
||||
|
||||
# store the last commit's amo data
|
||||
amo_dict['Commit'] = prev_commit[0:7]
|
||||
amo_tracker.append(amo_dict.copy())
|
||||
|
||||
# write put results into a file:
|
||||
size_field_names= ['Commit','b1','b2','b4','b8','b16','b32','b64','b128','b256','b512','b1024','b2048','b4096','b8192','b16384','b32768']
|
||||
amo_field_names= ['Commit','add','cswap','fadd','fcswap','fetch','finc','inc']
|
||||
ping_pong_field_names= ['Commit','latency']
|
||||
|
||||
self.write_dict_to_file(put_tracker, size_field_names, "put.csv")
|
||||
self.write_dict_to_file(put_nbi_tracker, size_field_names, "put_nbi.csv")
|
||||
self.write_dict_to_file(get_tracker, size_field_names, "get.csv")
|
||||
self.write_dict_to_file(get_nbi_tracker, size_field_names, "get_nbi.csv")
|
||||
self.write_dict_to_file(amo_tracker, amo_field_names, "amo.csv")
|
||||
self.write_dict_to_file(ping_pong_tracker, ping_pong_field_names, "ping_pong.csv")
|
||||
|
||||
# make a directory and execute the R script to generate plots in that directory
|
||||
current_dir = os.getcwd()
|
||||
plot_dir = os.path.join(current_dir, 'plots')
|
||||
if not os.path.exists(plot_dir):
|
||||
os.makedirs(plot_dir)
|
||||
|
||||
changeset_a = list(self._log_tracker._data.keys())[0][0]
|
||||
changeset_b = list(self._log_tracker._data.keys())[-1][0]
|
||||
|
||||
# check if the provided changesets are correct
|
||||
if (self._args.changeset_range):
|
||||
found_changeset_a = False
|
||||
found_changeset_b = False
|
||||
for key, value in self._log_tracker._data.items():
|
||||
if (found_changeset_a and found_changeset_b):
|
||||
break
|
||||
if (not found_changeset_a):
|
||||
if (self._args.changeset_range[0] == key[0]):
|
||||
found_changeset_a = True
|
||||
if (not found_changeset_b):
|
||||
if (self._args.changeset_range[1] == key[0]):
|
||||
found_changeset_b = True
|
||||
|
||||
if ((not found_changeset_a) and (not found_changeset_b)):
|
||||
sys.exit("One of the specified changesets was not found. Please specify correct/complete commit IDs.")
|
||||
else:
|
||||
changeset_a = self._args.changeset_range[0]
|
||||
changeset_b = self._args.changeset_range[1]
|
||||
|
||||
r_command = "Rscript ./plotter.R -o ./plots -a " + changeset_a[0:7] + " -b " + changeset_b[0:7]
|
||||
|
||||
print(r_command)
|
||||
subprocess.check_call(r_command, shell=True)
|
||||
|
||||
|
||||
def one_changeset_plot(self):
|
||||
found_changeset = 0
|
||||
non_amo_tracker = []
|
||||
amo_tracker = []
|
||||
ping_pong_tracker = []
|
||||
for key, value in self._log_tracker._data.items():
|
||||
if (key[0] == self._args.one_changeset):
|
||||
found_changeset = 1
|
||||
if (key[1] == "put.log"):
|
||||
put_vals = value.latency
|
||||
if (key[1] == "put_nbi.log"):
|
||||
put_nbi_vals = value.latency
|
||||
if (key[1] == "get.log"):
|
||||
get_vals = value.latency
|
||||
if (key[1] == "get_nbi.log"):
|
||||
get_nbi_vals = value.latency
|
||||
if (key[1] == "amo_add.log"):
|
||||
amo_tracker.append({'op':'add',
|
||||
'latency': value.latency[0] if len(value.latency) > 0 else 0
|
||||
})
|
||||
if (key[1] == "amo_add.log"):
|
||||
amo_tracker.append({'op':'add',
|
||||
'latency': value.latency[0] if len(value.latency) > 0 else 0
|
||||
})
|
||||
if (key[1] == "amo_cswap.log"):
|
||||
amo_tracker.append({'op':'cswap',
|
||||
'latency': value.latency[0] if len(value.latency) > 0 else 0
|
||||
})
|
||||
if (key[1] == "amo_fadd.log"):
|
||||
amo_tracker.append({'op':'fadd',
|
||||
'latency': value.latency[0] if len(value.latency) > 0 else 0
|
||||
})
|
||||
if (key[1] == "amo_fcswap.log"):
|
||||
amo_tracker.append({'op':'fcswap',
|
||||
'latency': value.latency[0] if len(value.latency) > 0 else 0
|
||||
})
|
||||
if (key[1] == "amo_fetch.log"):
|
||||
amo_tracker.append({'op':'fetch',
|
||||
'latency': value.latency[0] if len(value.latency) > 0 else 0
|
||||
})
|
||||
if (key[1] == "amo_finc.log"):
|
||||
amo_tracker.append({'op':'finc',
|
||||
'latency': value.latency[0] if len(value.latency) > 0 else 0
|
||||
})
|
||||
if (key[1] == "amo_inc.log"):
|
||||
amo_tracker.append({'op':'inc',
|
||||
'latency': value.latency[0] if len(value.latency) > 0 else 0
|
||||
})
|
||||
if (key[1] == "ping_pong.log"):
|
||||
ping_pong_tracker.append({'latency': value.latency[0] if len(value.latency) > 0 else 0
|
||||
})
|
||||
|
||||
|
||||
if (not found_changeset):
|
||||
sys.exit("The requested changeset was not found. Please specify correct/complete commit IDs.")
|
||||
|
||||
index = 0
|
||||
for size in [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768]:
|
||||
non_amo_tracker.append({'size':size,
|
||||
'put':put_vals[index],
|
||||
'put_nbi':put_nbi_vals[index],
|
||||
'get':get_vals[index],
|
||||
'get_nbi':get_nbi_vals[index]
|
||||
})
|
||||
index = index + 1
|
||||
|
||||
# write results into a file:
|
||||
non_amo_field_names= ['size','put','put_nbi','get','get_nbi']
|
||||
amo_field_names= ['op','latency']
|
||||
ping_pong_field_names= ['latency']
|
||||
|
||||
self.write_dict_to_file(non_amo_tracker, non_amo_field_names, "non_amo_one_changeset.csv")
|
||||
self.write_dict_to_file(amo_tracker, amo_field_names, "amo_one_changeset.csv")
|
||||
self.write_dict_to_file(ping_pong_tracker, ping_pong_field_names, "ping_pong_one_changeset.csv")
|
||||
|
||||
# call the R script with an option that tells it to plot figures for
|
||||
r_command = "Rscript ./plotter.R -o ./plots -c " + self._args.one_changeset
|
||||
|
||||
print(r_command)
|
||||
subprocess.check_call(r_command, shell=True)
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import sys
|
||||
|
||||
class Report():
|
||||
def __init__(self, identifier, path, filename):
|
||||
self._identifier = identifier
|
||||
self._path = path
|
||||
self._filename = filename
|
||||
|
||||
def open(self):
|
||||
print('opening report for ' + self._identifier)
|
||||
try:
|
||||
report_path = self._path + '/' + self._filename
|
||||
print('report_path: ' + report_path)
|
||||
self._file_handle = open(report_path, 'w')
|
||||
except:
|
||||
sys.exit('failed to open report: ' + report_path)
|
||||
|
||||
def record(self, message):
|
||||
self._file_handle.write(message + '\n')
|
||||
@@ -0,0 +1,96 @@
|
||||
<?xml version='1.1' encoding='UTF-8'?>
|
||||
<flow-definition plugin="workflow-job@2.40">
|
||||
<actions>
|
||||
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobAction plugin="pipeline-model-definition@1.8.4"/>
|
||||
<org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction plugin="pipeline-model-definition@1.8.4">
|
||||
<jobProperties/>
|
||||
<triggers/>
|
||||
<parameters/>
|
||||
<options/>
|
||||
</org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction>
|
||||
</actions>
|
||||
<description></description>
|
||||
<keepDependencies>false</keepDependencies>
|
||||
<properties>
|
||||
<org.jenkinsci.plugins.workflow.job.properties.DisableConcurrentBuildsJobProperty/>
|
||||
<org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
|
||||
<triggers>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger plugin="gerrit-trigger@2.33.0">
|
||||
<spec></spec>
|
||||
<gerritProjects>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||
<compareType>PLAIN</compareType>
|
||||
<pattern>rsch/ec/shmem</pattern>
|
||||
<branches>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||
<compareType>PLAIN</compareType>
|
||||
<pattern>amd-master</pattern>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||
</branches>
|
||||
<disableStrictForbiddenFileVerification>false</disableStrictForbiddenFileVerification>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||
</gerritProjects>
|
||||
<dynamicGerritProjects class="empty-list"/>
|
||||
<skipVote>
|
||||
<onSuccessful>false</onSuccessful>
|
||||
<onFailed>false</onFailed>
|
||||
<onUnstable>false</onUnstable>
|
||||
<onNotBuilt>false</onNotBuilt>
|
||||
<onAborted>false</onAborted>
|
||||
</skipVote>
|
||||
<silentMode>false</silentMode>
|
||||
<enableTopicAssociation>false</enableTopicAssociation>
|
||||
<notificationLevel></notificationLevel>
|
||||
<silentStartMode>false</silentStartMode>
|
||||
<escapeQuotes>true</escapeQuotes>
|
||||
<nameAndEmailParameterMode>PLAIN</nameAndEmailParameterMode>
|
||||
<dependencyJobsNames>shmem_perf_check, </dependencyJobsNames>
|
||||
<commitMessageParameterMode>BASE64</commitMessageParameterMode>
|
||||
<changeSubjectParameterMode>PLAIN</changeSubjectParameterMode>
|
||||
<commentTextParameterMode>BASE64</commentTextParameterMode>
|
||||
<buildStartMessage></buildStartMessage>
|
||||
<buildFailureMessage></buildFailureMessage>
|
||||
<buildSuccessfulMessage></buildSuccessfulMessage>
|
||||
<buildUnstableMessage></buildUnstableMessage>
|
||||
<buildNotBuiltMessage></buildNotBuiltMessage>
|
||||
<buildAbortedMessage></buildAbortedMessage>
|
||||
<buildUnsuccessfulFilepath></buildUnsuccessfulFilepath>
|
||||
<customUrl></customUrl>
|
||||
<serverName>amd-gerrit</serverName>
|
||||
<triggerOnEvents>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedContainsEvent>
|
||||
<commentAddedCommentContains>!SHORT</commentAddedCommentContains>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedContainsEvent>
|
||||
</triggerOnEvents>
|
||||
<dynamicTriggerConfiguration>false</dynamicTriggerConfiguration>
|
||||
<triggerConfigURL></triggerConfigURL>
|
||||
<triggerInformationAction/>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger>
|
||||
</triggers>
|
||||
</org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
|
||||
</properties>
|
||||
<definition class="org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition" plugin="workflow-cps@2.90">
|
||||
<scm class="hudson.plugins.git.GitSCM" plugin="git@4.7.1">
|
||||
<configVersion>2</configVersion>
|
||||
<userRemoteConfigs>
|
||||
<hudson.plugins.git.UserRemoteConfig>
|
||||
<name>origin</name>
|
||||
<refspec>${GERRIT_REFSPEC}</refspec>
|
||||
<url>ssh://gerritgit/rsch/ec/shmem</url>
|
||||
</hudson.plugins.git.UserRemoteConfig>
|
||||
</userRemoteConfigs>
|
||||
<branches>
|
||||
<hudson.plugins.git.BranchSpec>
|
||||
<name>FETCH_HEAD</name>
|
||||
</hudson.plugins.git.BranchSpec>
|
||||
</branches>
|
||||
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
|
||||
<submoduleCfg class="empty-list"/>
|
||||
<extensions/>
|
||||
</scm>
|
||||
<scriptPath>internal/continuous_integration/short/Jenkinsfile</scriptPath>
|
||||
<lightweight>false</lightweight>
|
||||
</definition>
|
||||
<triggers/>
|
||||
<disabled>false</disabled>
|
||||
</flow-definition>
|
||||
@@ -0,0 +1,34 @@
|
||||
#!/tool/pandora64/.package/python-3.8.0/bin/python3
|
||||
|
||||
import pprint
|
||||
import report
|
||||
import sys
|
||||
|
||||
class Threshold():
|
||||
def __init__(self, maximum_threshold, violation_type):
|
||||
self._violations = {}
|
||||
self._maximum_threshold = maximum_threshold
|
||||
self._violation_type = violation_type
|
||||
|
||||
def check(self, value, changeset, filename):
|
||||
if value >= self._maximum_threshold:
|
||||
key = changeset + '|' + filename + '|' + self._violation_type
|
||||
self._violations[key] = value
|
||||
print(key + ': ' + str(value) + '%')
|
||||
|
||||
def provide_violations_to_report(self, report):
|
||||
if self.has_violations():
|
||||
report.record('FAILURE')
|
||||
report.record(self.dump())
|
||||
sys.exit(1)
|
||||
else:
|
||||
report.record('SUCCESS')
|
||||
sys.exit(0)
|
||||
|
||||
def has_violations(self):
|
||||
return bool(self._violations)
|
||||
|
||||
def dump(self):
|
||||
str_out = pprint.pformat(self._violations, width=120)
|
||||
str_out += '\n'
|
||||
return str_out
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
pipeline {
|
||||
agent { label 'sv-pdp-5' }
|
||||
environment {
|
||||
HSA_FORCE_FINE_GRAIN_PCIE = 1
|
||||
MPI_HOME="/home/resperf/mpich-4.0.1/install/global"
|
||||
PATH = "$MPI_HOME/bin:$PATH"
|
||||
LD_LIBRARY_PATH = "$MPI_HOME/lib:$LD_LIBRARY_PATH"
|
||||
build_dir = "builds/change-${GERRIT_CHANGE_NUMBER}-${GERRIT_PATCHSET_NUMBER}"
|
||||
CMAKE_PREFIX_PATH = "/opt/rocm/lib/cmake"
|
||||
}
|
||||
stages {
|
||||
stage('Synchronize Source Code') {
|
||||
steps {
|
||||
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: 'FETCH_HEAD']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CloneOption', depth: 0, noTags: false, reference: '', shallow: false]], submoduleCfg: [], userRemoteConfigs: [[name: 'origin', refspec: '${GERRIT_REFSPEC}', url: 'ssh://gerritgit/rsch/ec/shmem']]]
|
||||
}
|
||||
}
|
||||
stage('Make Build Directory') {
|
||||
steps {
|
||||
dir("library") {
|
||||
sh "mkdir -p ${build_dir}"
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Build Source Code') {
|
||||
parallel {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_SINGLE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi_wf_coal install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI_WF_COAL") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI_WF_COAL/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/RC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/rc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/RC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/RC_MULTI/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_SINGLE") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_single install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_SINGLE") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_SINGLE/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
//===================== LIBRARY =======================
|
||||
dir("library/${build_dir}/DC_MULTI") {
|
||||
sh 'mkdir -p install'
|
||||
sh '../../../build_configs/dc_multi install'
|
||||
}
|
||||
//===================== CLIENT ========================
|
||||
dir("clients/functional_tests/${build_dir}/DC_MULTI") {
|
||||
sh '../../../build_configs/release ${WORKSPACE}/library/${build_dir}/DC_MULTI/install'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Run Tests') {
|
||||
parallel {
|
||||
stage('RC_SINGLE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_SINGLE/rocshmem_example_driver single_thread ${build_dir}/RC_SINGLE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI_WF_COAL') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI_WF_COAL/rocshmem_example_driver multi_thread ${build_dir}/RC_MULTI_WF_COAL'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RC_MULTI') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/RC_MULTI/rocshmem_example_driver multi_thread ${build_dir}/RC_MULTI'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_SINGLE') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_SINGLE/rocshmem_example_driver single_thread ${build_dir}/DC_SINGLE'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('DC_MULTI') {
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh './driver.sh ${build_dir}/DC_MULTI/rocshmem_example_driver multi_thread ${build_dir}/DC_MULTI'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('RO_NET_BASIC') {
|
||||
// RO_NET controlled at runtime, no need for a new build. Use RC_MULTI
|
||||
steps {
|
||||
dir("clients/functional_tests") {
|
||||
sh 'mkdir -p ${build_dir}/RO_NET_BASIC'
|
||||
sh 'ROC_SHMEM_RO=1 RO_NET_CPU_QUEUE=1 UCX_TLS=rc ./driver.sh ${build_dir}/RC_MULTI/rocshmem_example_driver ro ${build_dir}/RO_NET_BASIC'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
<?xml version='1.1' encoding='UTF-8'?>
|
||||
<flow-definition plugin="workflow-job@2.40">
|
||||
<actions/>
|
||||
<description></description>
|
||||
<keepDependencies>false</keepDependencies>
|
||||
<properties>
|
||||
<org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
|
||||
<triggers>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger plugin="gerrit-trigger@2.33.0">
|
||||
<spec></spec>
|
||||
<gerritProjects>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||
<compareType>PLAIN</compareType>
|
||||
<pattern>rsch/ec/shmem</pattern>
|
||||
<branches>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||
<compareType>PLAIN</compareType>
|
||||
<pattern>amd-master</pattern>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.Branch>
|
||||
</branches>
|
||||
<disableStrictForbiddenFileVerification>false</disableStrictForbiddenFileVerification>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.data.GerritProject>
|
||||
</gerritProjects>
|
||||
<dynamicGerritProjects class="empty-list"/>
|
||||
<skipVote>
|
||||
<onSuccessful>true</onSuccessful>
|
||||
<onFailed>true</onFailed>
|
||||
<onUnstable>true</onUnstable>
|
||||
<onNotBuilt>true</onNotBuilt>
|
||||
<onAborted>true</onAborted>
|
||||
</skipVote>
|
||||
<silentMode>false</silentMode>
|
||||
<enableTopicAssociation>false</enableTopicAssociation>
|
||||
<notificationLevel></notificationLevel>
|
||||
<silentStartMode>false</silentStartMode>
|
||||
<escapeQuotes>true</escapeQuotes>
|
||||
<nameAndEmailParameterMode>PLAIN</nameAndEmailParameterMode>
|
||||
<dependencyJobsNames></dependencyJobsNames>
|
||||
<commitMessageParameterMode>BASE64</commitMessageParameterMode>
|
||||
<changeSubjectParameterMode>PLAIN</changeSubjectParameterMode>
|
||||
<commentTextParameterMode>BASE64</commentTextParameterMode>
|
||||
<buildStartMessage></buildStartMessage>
|
||||
<buildFailureMessage></buildFailureMessage>
|
||||
<buildSuccessfulMessage></buildSuccessfulMessage>
|
||||
<buildUnstableMessage></buildUnstableMessage>
|
||||
<buildNotBuiltMessage></buildNotBuiltMessage>
|
||||
<buildAbortedMessage></buildAbortedMessage>
|
||||
<buildUnsuccessfulFilepath></buildUnsuccessfulFilepath>
|
||||
<customUrl></customUrl>
|
||||
<serverName>amd-gerrit</serverName>
|
||||
<triggerOnEvents>
|
||||
<com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedContainsEvent>
|
||||
<commentAddedCommentContains>!SMOKE</commentAddedCommentContains>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.events.PluginCommentAddedContainsEvent>
|
||||
</triggerOnEvents>
|
||||
<dynamicTriggerConfiguration>false</dynamicTriggerConfiguration>
|
||||
<triggerConfigURL></triggerConfigURL>
|
||||
<triggerInformationAction/>
|
||||
</com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger>
|
||||
</triggers>
|
||||
</org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
|
||||
</properties>
|
||||
<definition class="org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition" plugin="workflow-cps@2.90">
|
||||
<scm class="hudson.plugins.git.GitSCM" plugin="git@4.7.1">
|
||||
<configVersion>2</configVersion>
|
||||
<userRemoteConfigs>
|
||||
<hudson.plugins.git.UserRemoteConfig>
|
||||
<url>ssh://gerritgit/rsch/ec/shmem</url>
|
||||
</hudson.plugins.git.UserRemoteConfig>
|
||||
</userRemoteConfigs>
|
||||
<branches>
|
||||
<hudson.plugins.git.BranchSpec>
|
||||
<name>FETCH_HEAD</name>
|
||||
</hudson.plugins.git.BranchSpec>
|
||||
</branches>
|
||||
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
|
||||
<submoduleCfg class="empty-list"/>
|
||||
<extensions/>
|
||||
</scm>
|
||||
<scriptPath>internal/continuous_integration/smoke/Jenkinsfile</scriptPath>
|
||||
<lightweight>false</lightweight>
|
||||
</definition>
|
||||
<triggers/>
|
||||
<disabled>false</disabled>
|
||||
</flow-definition>
|
||||
Reference in New Issue
Block a user