5.3.4 : Un exemple de script pour compiler sur MUST

Écrivons le script install_must.sh :

1
#!/bin/bash


On affiche sur quelle machine on tourne :
1
echo "Used machine is $(uname -a)"


On récupère la variable _CONDOR_Assignedgpus (c'est htcondor qui nous dit quel GPU utiliser) :
1
echo "Selected GPU is _CONDOR_Assignedgpus = '${_CONDOR_Assignedgpus}'"


On définit un dossier build unique pour que plusieurs jobs ne se marchent pas dessus :
1
2
3
4
5
6
7
8
9
10
BUILD_DIR="build_cmake_$(uname -n)"

if [ -d ${BUILD_DIR} ]
then
    	echo "Remove existing directory $BUILD_DIR"
        rm -fr ${BUILD_DIR}
fi

mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}


On créé les variables classiques pour trouver nos compilateurs :
1
2
3
export NVCPP=/opt/nvidia/hpc_sdk/Linux_x86_64/21.9/compilers/bin/nvc++
export CC=/opt/rh/devtoolset-11/root/usr/bin/x86_64-redhat-linux-gcc
export CXX=/opt/rh/devtoolset-11/root/usr/bin/x86_64-redhat-linux-g++


On appelle CMake noteC'est cmake3 sur les OS bancalsnoteBien entendu, si vous avez un OS qui tient la route, vous pouvez remplacer par cmake :
1
cmake3 .. -DCMAKE_CXX_COMPILER=${NVCPP} -DCMAKE_C_COMPILER=${CC}


Puis Make :
1
make


Et enfin, notre programme :
1
./test_nvcpp


Le fichier install_must.sh complet :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
echo "Used machine is $(uname -a)"
echo "Selected GPU is _CONDOR_Assignedgpus = '${_CONDOR_Assignedgpus}'"
BUILD_DIR="build_cmake_$(uname -n)"

if [ -d ${BUILD_DIR} ]
then
    	echo "Remove existing directory $BUILD_DIR"
        rm -fr ${BUILD_DIR}
fi

mkdir -p ${BUILD_DIR}
cd ${BUILD_DIR}

export NVCPP=/opt/nvidia/hpc_sdk/Linux_x86_64/21.9/compilers/bin/nvc++
export CC=/opt/rh/devtoolset-11/root/usr/bin/x86_64-redhat-linux-gcc
export CXX=/opt/rh/devtoolset-11/root/usr/bin/x86_64-redhat-linux-g++
cmake3 .. -DCMAKE_CXX_COMPILER=${NVCPP} -DCMAKE_C_COMPILER=${CC}
make
./test_nvcpp


Le fichier install_must.sh est disponible ici.