5.6.8 : 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 test de performance :
1 2 3 4 5 |
for tableSize in 10000 20000 30000 40000 50000 100000 500000 1000000 2000000 5000000 10000000 50000000 100000000 do echo "tableSize = ${tableSize}" ./test_hadamard_nvcpp ${tableSize} 1000 done |
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 21 22 23 24 |
#!/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 for tableSize in 10000 20000 30000 40000 50000 100000 500000 1000000 2000000 5000000 10000000 50000000 100000000 do echo "tableSize = ${tableSize}" ./test_hadamard_nvcpp ${tableSize} 1000 done |
Le fichier install_must.sh est disponible ici.