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.