matlab blas加载错误,【求助】在MATLAB中通过MEX调用BLAS

本人正在学习在MATLAB中调用BLAS,好不容易把MATLAB中的一个dgemm的例子编译通了,但是在MATLAB中使用这个函数时,不论输入是什么,输出都是0,很郁闷。请各位大牛多多指点!

以下是我的MEX文件,文件名是“test_MKL.for”, 用FORTRAN写的:

subroutine mexFunction(nlhs, plhs, nrhs, prhs)

integer*8 plhs(*), prhs(*)

integer nlhs, nrhs

integer*8 mxcreatedoublematrix, mxgetpr

integer mxgetm, mxgetn

integer m, n, p

integer*8 A, B, C

real*8 one, zero, ar, br

character ch1, ch2

ch1 = 'N'

ch2 = 'N'

one = 1.0

zero = 0.0

A = mxgetpr(prhs(1))

B = mxgetpr(prhs(2))

m = mxgetm(prhs(1))

p = mxgetn(prhs(1))

n = mxgetn(prhs(2))

plhs(1) = mxcreatedoublematrix(m, n, 0.0)

C = mxgetpr(plhs(1))

call mxcopyptrtoreal8(A, ar, 1)

call mxcopyptrtoreal8(B, br, 1)

call dgemm (ch1, ch2, m, n, p, one, %val(A), m,

+            %val(B), p, zero, %val(C), m)

return

end

我在mexopts.bat中添加了MKL相应的库函数路径之后,对上面的例子进行了编译,最终生成了“test_MKL.mexw64”的MEX文件(我用的是win7 64)。但是当我用下面的例子对上述函数进行测试时,就出问题了。没有报错,但不管输入是什么,输出一直是0。

以下是我在MATLAB中进行测试时的代码:

M=2;

N=3;

K=4;

a=1.0;

b=0.0;

X=ones(N,K)*10.0;

Y=ones(K,M)*20.0;

Z=zeros(N,M);

test_MKL('N','N',N,M,K,a,X,N,Y,K,b,Z,N)

输出结果是:

ans =

0

谁能告诉我是为什么啊?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值