L'utilisation de la fonction rand() afin de générer un nombre aléatoire dans un programme parallèle C/C++ est à proscrire, car cette fonction bloque des ressources systèmes et vos processus doivent alors d'attendre la libération de ces ressources pour pouvoir poursuivre.
Il est préférable d'utiliser un autre moyen pour générer des nombres aléatoires pour pallier ce problème, et la librairie Intel Kernel Math nous en fournit un grand nombre dédié au processeur Itanium.
Pour compiler vos programmes utilisant la librairie mkl, vous devez inclure dans votre programme cette librairie :
#include<mkl.h>
Maintenant vous devez indiquer au compilateur où trouver cette librairie. Pour cela, on ajoute à la ligne de commande les paramètres suivants :
Par exemple :
Il sera parfois nécessaire d'ajouter les arguments -lkml_ipf et -lmk_lapack selon vos besoins.
Une fois votre programme compilé, vous allez vouloir l'exécuter, et une erreur indiquant que le programme ne trouve pas les librairies nécessaires à son fonctionnement apparaît. Nous devons modifier la variable d'environnement référençant les librairies afin de lui indiquer où elles se trouvent. Pour cela, tapez la commande suivante :
export LD_LIBRARY_PATH = opt/intel/cmkl/8.1.1/lib/64 : $LD_LIBRARY_PATH
Bien évidemment, à chaque nouvelle session, vous devrez taper cette commande. Pour éviter cela, nous allons modifier notre fichier .bashrc se trouvant à la racine de notre compte (voir listing 1)
Afin de savoir utiliser correctement cette librairie, je vous invite à consulter le Intel Math Kernel Library - Vector Statistical Library Notes (intel_vlsnotes.pdf) disponible sur le site http://cosy.univ-reims.fr/romeo2/.