J'ai écrit un code en C.le code C qui utilise blas, lapack et OpenMP travaillant avec gcc 4.9, mais donne exécuter erreur de temps avec gcc 6
Vous pouvez trouver le code source here. Il utilise les bibliothèques blas, lapack et openmp. J'ai compilé les bibliothèques blas et lapack suivantes these instrucions. J'utilise ces drapeaux pour indiquer au compilateur les bibliothèques qu'il doit lier: -lblas -llapack -fopenmp
J'utilisais gcc 4.9
et le programme peut s'exécuter correctement.
J'ai récemment mis à jour gcc gcc 6 et il montre beaucoup de msgs d'avertissement au sujet de la déclaration implicite des blas et fonctions LAPACK:
src/PSIRWLS-train.c:152:17: warning: implicit declaration of function 'dgemm_' [-Wimplicit-function-declaration]
dgemm_(&trans, &trans, &(dataset.l), &ncols, &size,&factorA, KSC, &(dataset.l), miZ, &size, &factor, miKSM, &(dataset.l));
Et quand je lance l'application d'une erreur de défaut de segmentation apparaît.
Je suis complètement perdu sur les différences de gcc 4.9 et gcc 6, savez-vous des explications à ce sujet?
Le lien vers votre code conduit à l'erreur 404 .. Vous pouvez être intéressé par [cblas] (http://www.netlib.org/blas/#_cblas) et [Lapacke] (http://www.netlib.org/lapack/lapacke.html) qui sont le C interfaces vers BLAS/LAPACK. Sinon, vous devrez peut-être décliner ['extern dgemm_ (...)'] (http://nicolas.limare.net/pro/notes/2014/10/31_cblas_clapack_lapacke/). Notez que déclarer des fonctions fortran de cette façon peut conduire à des problèmes de portabilité, car la convention de nommage change entre Linux et le W-thing ... L'utilisation de Cblas et Lapacke laisse ce problème (et quelques autres) aux développeurs de ces interfaces. – francis