From d1fca7213cc9f77f904dfa69bef42f7463fc34e4 Mon Sep 17 00:00:00 2001 From: Pietro Incardona <incardon@mpi-cbg.de> Date: Mon, 24 Oct 2016 12:19:30 +0200 Subject: [PATCH] Addin jenkins pipeline for pdata --- Jenkinsfile | 77 +++++++++++++++++++++++++++++++++ build.sh | 110 +++++++++++++++++++++++++++++++++++++++++++++++ openfpm_data | 2 +- openfpm_devices | 2 +- openfpm_io | 2 +- openfpm_vcluster | 2 +- run.sh | 87 +++++++++++++++++++++++++++++++++++++ 7 files changed, 278 insertions(+), 4 deletions(-) create mode 100644 Jenkinsfile create mode 100755 build.sh create mode 100755 run.sh diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 000000000..4aeccc056 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,77 @@ +#!groovy + +parallel ( + + +"nyu" : {node ('nyu') + { + deleteDir() + checkout scm + stage ('build_nyu') + { + sh "./build.sh $WORKSPACE $NODE_NAME" + } + + stage ('run_nyu') + { + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 1" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 2" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 3" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 4" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 5" + } + } + }, + + + + +"sb15" : {node ('sbalzarini-mac-15') + { + deleteDir() + env.PATH = "/usr/local/bin:${env.PATH}" + checkout scm + stage ('build_sb15') + { + sh "./build.sh $WORKSPACE $NODE_NAME" + } + + stage ('run_sb15') + { + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 1" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 2" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 3" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 4" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 5" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 6" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 7" + } + } + } + + +"gin" : {node ('gin') + { + deleteDir() + env.PATH = "/usr/local/bin:${env.PATH}" + checkout scm + stage ('build_gin') + { + sh "./build.sh $WORKSPACE $NODE_NAME" + } + + stage ('run_gin') + { + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 1" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 2" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 3" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 4" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 5" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 6" + sh "cd openfpm_vcluster && ./run.sh $WORKSPACE $NODE_NAME 7" + } + } + } + +) + diff --git a/build.sh b/build.sh new file mode 100755 index 000000000..01b313954 --- /dev/null +++ b/build.sh @@ -0,0 +1,110 @@ +#! /bin/bash + +# Make a directory in /tmp/OpenFPM_pdata + +echo "Directory: $1" +echo "Machine: $2" + +mkdir src/config + +git submodule init +if [ $? -ne 0 ]; then + echo -e "Configure\033[91;5;1m FAILED \033[0m" + exit 1 +fi + +git submodule update +if [ $? -ne 0 ]; then + echo -e "Configure\033[91;5;1m FAILED \033[0m" + exit 1 +fi + +mkdir openfpm_numerics/src/config + + +if [ "$2" == "gin" ] +then + echo "Compiling on gin\n" + source ~/.bashrc + module load gcc/4.9.2 + ./install -s -c "--prefix=/home/jenkins/openfpm_install" + make + if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; + fi + + make install + source $HOME/openfpm_vars + + if [ x"$3" == x"no_test" ]; then + exit 0; + fi + + if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; + fi + +elif [ "$2" == "wetcluster" ] +then + echo "Compiling on wetcluster" + +## produce the module path + + source ~/.bashrc + module load gcc/4.9.2 + module load openmpi/1.8.1 + module load boost/1.54.0 + + sh ./autogen.sh + ./install -s -c "--with-boost=/sw/apps/boost/1.54.0/ CXX=mpic++" + make + + if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; + fi + +elif [ "$2" == "taurus" ] +then + echo "Compiling on taurus" + + source /etc/profile + echo "$PATH" + module load eigen/3.2.0 + module load suitesparse/4.2.1-gnu-multimkl + module load boost/1.60.0 + module load gcc/5.3.0 + module load openmpi/1.10.2-gnu + module unload bullxmpi + + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/incard/PARMETIS/lib:/home/incard/METIS/lib:/home/incard/HDF5/lib" + + ./install -i "/scratch/p_ppm/" -s -c"CXX=mpic++" + make + + source $HOME/openfpm_vars + + if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; + fi +else + echo "Compiling general" + source ~/.bashrc + ./install -s + make + + if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; + fi + + if [ x"$3" == x"no_test" ]; then + exit 0; + fi +fi + +curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Info:\", \"color\": \"#00FF00\", \"text\":\"$2 completed succeffuly the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + diff --git a/openfpm_data b/openfpm_data index ff36fbed0..3a6df24b7 160000 --- a/openfpm_data +++ b/openfpm_data @@ -1 +1 @@ -Subproject commit ff36fbed0d2065ddab22dcba8cd47b9e02288f3a +Subproject commit 3a6df24b7a165824f8f6f8521aace31d2e51774e diff --git a/openfpm_devices b/openfpm_devices index ecadd99fa..f30adc139 160000 --- a/openfpm_devices +++ b/openfpm_devices @@ -1 +1 @@ -Subproject commit ecadd99fabe515ba06f00a5e7c656777c6bb9860 +Subproject commit f30adc1393b290e31ead7aad44974a9d1f1e03fe diff --git a/openfpm_io b/openfpm_io index 5cf769662..0f93dd4c0 160000 --- a/openfpm_io +++ b/openfpm_io @@ -1 +1 @@ -Subproject commit 5cf769662d6e57a7a2fd12d1cfc835fd2793bc7b +Subproject commit 0f93dd4c0ee82fce7b246e342c5f0c1d8f0c9374 diff --git a/openfpm_vcluster b/openfpm_vcluster index 05c42b118..0a806d052 160000 --- a/openfpm_vcluster +++ b/openfpm_vcluster @@ -1 +1 @@ -Subproject commit 05c42b118d23d3d1f7e7616c4054f88eed7751b8 +Subproject commit 0a806d052d206a4e4cdc3b77dc536f8b36e805ff diff --git a/run.sh b/run.sh new file mode 100755 index 000000000..37d85ac49 --- /dev/null +++ b/run.sh @@ -0,0 +1,87 @@ +#! /bin/bash + +# Make a directory in /tmp/OpenFPM_pdata + +echo "Directory: $1" +echo "Machine: $2" + +if [ "$2" == "gin" ] +then + source ~/.bashrc + module load gcc/4.9.2 + if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; + fi + + source $HOME/openfpm_vars + + if [ x"$3" == x"no_test" ]; then + exit 0; + fi + + mpirun -np $3 ./src/pdata + if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; + fi + +elif [ "$2" == "wetcluster" ] +then + echo "Compiling on wetcluster" + +## produce the module path + + source ~/.bashrc + module load gcc/4.9.2 + module load openmpi/1.8.1 + module load boost/1.54.0 + + source $HOME/openfpm_vars + + ## Run on the cluster + bsub -o output_run$3.%J -K -n 2 -R "span[hosts=$4]" "module load openmpi/1.8.1 ; module load gcc/4.9.2; module load boost/1.54.0; mpirun -np $3 ./src/pdata" + if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; + fi +elif [ "$2" == "taurus" ] +then + + source /etc/profile + echo "$PATH" + module load eigen/3.2.0 + module load suitesparse/4.2.1-gnu-multimkl + module load boost/1.60.0 + module load gcc/5.3.0 + module load openmpi/1.10.2-gnu + module unload bullxmpi + + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/incard/PARMETIS/lib:/home/incard/METIS/lib:/home/incard/HDF5/lib" + + source $HOME/openfpm_vars + + salloc --nodes=$4 --ntasks-per-node=$5 --time=00:15:00 --mem-per-cpu=1900 --partition=haswell bash -c "ulimit -s unlimited && mpirun -np $3 src/pdata --report_level=no" + if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; + fi + +else + source ~/.bashrc + + if [ x"$3" == x"no_test" ]; then + exit 0; + fi + + source $HOME/openfpm_vars + + mpirun -np $3 ./src/pdata + if [ $? -ne 0 ]; then + curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Error:\", \"color\": \"#FF0000\", \"text\":\"$2 failed to complete the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + exit 1 ; + fi +fi + +curl -X POST --data "payload={\"icon_emoji\": \":jenkins:\", \"username\": \"jenkins\" , \"attachments\":[{ \"title\":\"Info:\", \"color\": \"#00FF00\", \"text\":\"$2 completed succeffuly the openfpm_pdata test \" }] }" https://hooks.slack.com/services/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 + -- GitLab