Fortran Coder

查看: 135|回复: 5

[数学库] 调用MKL,调试显示"没有为 mkl_core.dll 加载的符号文件"

[复制链接]

7

帖子

3

主题

0

精华

入门

啥也不会的新手

F 币
41 元
贡献
15 点
发表于 2019-7-12 00:59:05 | 显示全部楼层 |阅读模式
环境是VS2017+Intel parallel studio2019,要做一个有限元-边界元算法,代码里分别调用了pardiso,dgemm,dgesv三个函数,配置选项如下:
链接库mkl_lapack95_ilp64.lib,  mkl_blas95_ilp64.lib,  mkl_intel_lp64_dll.lib,  mkl_intel_thread_dll.lib,  mkl_core_dll.lib,  libiomp5md.lib  (不知道是否齐全,求大家指点)
include位置:<mkl文件夹>/<include>      (此路径下还有ilp64文件夹,我不确定要不要写,求大家指点)
lib位置<mkl文件夹>/lib/intel64_win
用的是parallel模式
代码几千行,就不附了。。。。但是因为用的不是95接口下的函数,所以前面没有用include语句和use语句,不知道有没有关系。。。。
运行时,弹出如下图的错误,没有在某一位置间断,我在百度查了一下,也没有相关的答案,请教一下大家,谢谢!!!!!


IO7UEL5Y%9_G0@S6)8~Z{%Y.png
回复

使用道具 举报

1426

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
753 元
贡献
560 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2019-7-12 08:03:09 | 显示全部楼层
1、用77还是95接口,不影响。
2、你这个问题也是小问题。注意调试的时候不要步入到MKL函数内部就好。
3、发生异常是在MKL的内部(你没有MKL的源代码,当然不能调试到内部)(我也没有,别问我要)
4、异常虽然发生在MKL内部,但诱导出现异常的原因确是你。(99.99%的原因在于你,也不排除MKL有bug)
5、比如,你给出的数组大小超过了数组真实的大小,导致MKL误以为数组很大,读取了不该读取的内存。或者比如,某些函数对数组矩阵有要求(例如要求满秩、对称、正定等),你给出的并不满足使用条件等。

7

帖子

3

主题

0

精华

入门

啥也不会的新手

F 币
41 元
贡献
15 点
 楼主| 发表于 2019-7-12 17:20:24 | 显示全部楼层
fcode 发表于 2019-7-12 08:03
1、用77还是95接口,不影响。
2、你这个问题也是小问题。注意调试的时候不要步入到MKL函数内部就好。
3、发 ...

谢谢您的指点,再向您请教一下,这种情况我该怎么排查问题。。。
我研究了一天,反复确认了函数里传递的实参符合mkl用户手册的规范,因为计算有限元问题,所以数组阶数很大,我不确定哪出了问题。。。。

1426

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
753 元
贡献
560 点

新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2019-7-12 21:54:03 | 显示全部楼层
单步调试,找到出问题的地方,然后再分析传给MKL的数据如何

7

帖子

3

主题

0

精华

入门

啥也不会的新手

F 币
41 元
贡献
15 点
 楼主| 发表于 2019-7-13 13:47:19 | 显示全部楼层
fcode 发表于 2019-7-12 21:54
单步调试,找到出问题的地方,然后再分析传给MKL的数据如何

谢谢您,我单步调试的时候,发现问题出在调用dgesv上,请问一下,该怎么分析传给mkl的数据呢?

708

帖子

0

主题

0

精华

大师

F 币
737 元
贡献
410 点

规矩勋章元老勋章新人勋章水王勋章

QQ
发表于 2019-7-15 07:51:36 | 显示全部楼层
断点时查看传递给函数的各变量的值,是否正常,是否符合函数要求。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-9-19 14:47

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表