thanks for your help. I fixed the problem!

best regards!




-----原始邮件-----
发件人:"Rasmus Munk Larsen" <[email protected]>
发送时间:2021-07-10 00:47:00 (星期六)
收件人: [email protected]
抄送:
主题: Re: Re: [eigen] dense matrix multiplication


Sorry, I had a typo. I meant UNsetting the macros for enabling external BLAS 
libraries. :-)


On Fri, Jul 9, 2021 at 1:20 AM 张瑞 <[email protected]> wrote:


dear Rasmus,

thanks for your reply, I tried to add the code  #define EIGEN_USE_BLAS, but it 
still doesn't work.

and I found actually multiplication was done, it failed to assignment to the x 
matrix




if the code is like this , it can be compiled successfully:

Matrix<double,8, 8>  b;

Matrix<double, 8, 1>  l;
Matrix<double, 8, 1>  x;
b.Zero();
l.Zero();
b*l;




-----原始邮件-----
发件人:"Rasmus Munk Larsen" <[email protected]>
发送时间:2021-07-09 04:57:30 (星期五)
收件人:[email protected]
抄送:
主题: Re: [eigen] dense matrix multiplication


It looks like your build of Eigen is set up to call the function gemv_ an 
external BLAS library for large matrices, possibly by setting the macro 
EIGEN_USE_BLAS. See the documentation here: 
https://eigen.tuxfamily.org/dox/TopicUsingBlasLapack.html




On Thu, Jul 8, 2021 at 2:57 AM 张瑞 <[email protected]> wrote:


dear all,




I'm a new user of Eigen, I want to get the multiplication of two matrix, and 
met a confusing problem, and the code is as bellows(for simplicity, all values 
are set to 0):




Matrix<double,8, 8>  b;
Matrix<double, 8, 1>  l;
Matrix<double, 8, 1>  x;
b.Zero();
l.Zero();
x = b*l;




Compiled under the windows platform and vs2019 environment, there is a fatal 
error LNK1120:

" Unresolved external symbol_dgemv,funticon "public: static void __cdecl 
Eigen::internal::general_matrix_vector_product_gemv<int,double,1,0,double,0>::run(int,int,double
 const *,int,double const *,int,double *,int,double)" 
(?run@?$general_matrix_vector_product_gemv@HN$00$0A@N$0A@@internal@Eigen@@SAXHHPBNH0HPANHN@Z)
 "




But if I Reduce the matrix dimension, it works, like:

Matrix<double,4, 4>  b;
Matrix<double, 4 1>  l;
Matrix<double, 4, 1>  x;
b.Zero();
l.Zero();
x = b*l;



very grateful for your help, thank you!

Reply via email to