Bonjour à tous,

J'ai cherché si je ne trouvais pas mon problème quelque part, il me semble que ce n'est pas le cas et j'espère que je poste au bon endroit.


Je vous expose le problème : Il s'agit de l'exécution d'un programme C++. La compilation se passe très bien. Lors que je lance un programme sur une machine A, tout se passe bien. Lors que je lance le programme sur la machine B, (machine virtuelle construite de la même manière que la machine A), le programme plante sur une multiplication de matrice :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
cx_mat sFe = V_(fr-1) * conj ( V_ * Yf_ ) ;
Le programme est identique sur la machine A et sur la machine B (quand je fais tourner le programme qui a été généré sur la machine B sur la machine A, il fonctionne bien).
Je suis mathématicien à la base, les matrices sont correctes, je ne remets pas en cause la formule. J'ai le message d'erreur "Instruction non permise (core dumped)" et les traces m'indiquent :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
#0  0x00007fb47651be61 in zgemv_kernel_4x4 () from /usr/local/lib/libopenblas.so.0
#1  0x00007fb47651c82b in zgemv_n () from /usr/local/lib/libopenblas.so.0
#2  0x00007fb476224105 in zgemv_ () from /usr/local/lib/libopenblas.so.0
#3  0x000000000043d7e7 in gemv<std::complex<double> > (out=<value optimized out>, A=<value optimized out>, B=<value optimized out>, alpha=<value optimized out>)
    at /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include/armadillo_bits/blas_wrapper.hpp:46
#4  apply_blas_type<std::complex<double>, arma::Mat<std::complex<double> > > (out=<value optimized out>, A=<value optimized out>, B=<value optimized out>, alpha=<value optimized out>)
    at /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include/armadillo_bits/mul_gemv.hpp:374
#5  apply<arma::Mat<std::complex<double> > > (out=<value optimized out>, A=<value optimized out>, B=<value optimized out>, alpha=<value optimized out>)
    at /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include/armadillo_bits/mul_gemv.hpp:478
#6  arma::glue_times::apply<std::complex<double>, false, false, false, arma::Mat<std::complex<double> >, arma::Mat<std::complex<double> > > (out=<value optimized out>, A=<value optimized out>, B=<value optimized out>,
    alpha=<value optimized out>) at /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include/armadillo_bits/glue_times_meat.hpp:599
#7  0x00000000004e33ec in apply<arma::Mat<std::complex<double> >, arma::Mat<std::complex<double> > > (this=0x7fffbd3e5a10) at /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include/armadillo_bits/glue_times_meat.hpp:38
#8  apply<arma::Mat<std::complex<double> >, arma::Mat<std::complex<double> > > (this=0x7fffbd3e5a10) at /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include/armadillo_bits/glue_times_meat.hpp:96
#9  apply<arma::Mat<std::complex<double> >, arma::Mat<std::complex<double> > > (this=0x7fffbd3e5a10) at /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include/armadillo_bits/glue_times_meat.hpp:318
#10 apply<arma::Mat<std::complex<double> >, arma::Mat<std::complex<double> > > (this=0x7fffbd3e5a10) at /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include/armadillo_bits/glue_times_meat.hpp:412
#11 Mat<arma::Mat<std::complex<double> >, arma::Mat<std::complex<double> >, arma::glue_times> (this=0x7fffbd3e5a10) at /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include/armadillo_bits/Mat_meat.hpp:4736
Manifestement cela vient de la librairie openblas. Et là je ne sais plus trop ou chercher.
J'ai regardé au niveau de la compilation de ce programme en C++ : elle est basique, comprenant les librairies openblas, et armadillo. Il y a aussi certaines options :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 g++ -c -O2 -g -DARMA_DONT_USE_WRAPPER -DARMA_USE_BLAS -I /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include -I ../INCS  -I /usr1/LYNX/src/LIBEXT/armadillo-5.100.2/include -I ../INCS  -lopenblas
Les librairies sont fraîches et à jour, j'ai ré-installé ce qu'il fallait, de plus j'ai comparé ce que j'avais sur ma machine A et ma machine B, aucune différence de ce côté là...


Voilà, je coince :-)

Avez vous quelques idées ?

Merci d'avance