24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 2590  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

dexter337

铁杆木虫 (小有名气)

[交流] 最近碰到的一个Intel visual Fortran 计算精度的问题.大家的机器上是否也是这样? 已有5人参与

我 以前都是用compaq visual Fortran 6.6的imsl库进行计算的.但是近期需要加大计算的矩阵维数.因此需要改用Intel visual Fortran的mkl函数库.我的程序中用到了zgesv这个函数求解一个复系数的方程组.
       原来用compaq visual Fortran的时候用的是imsl中的dlsacg精度很好.但是在Intel visual Fortran上跑的结果误差很严重.于是开始查找出错原因.
       后来我发现一个奇怪的现象.就是用imsl手册中的一个计算例子,在Intel 上出的结果精度好像不够.希望大家提提意见,多多讨论,小虫不胜感激.
       Intel visual Fortran中程序例子如下:
               program main
        implicit none
        integer(8),parameter::n=3
        complex(8)::a(n,n),b(n)
        integer(8)::info,ipiv(n)
        a=reshape((/(3.0d0,-2.0d0),(1.0d0,1.0d0),(4.0d0,0.0d0),(2.0d0,4.0d0),(2.0d0,-6.0d0),&
        (-5.0d0,1.0d0),(0.0d0,-3.0d0),(1.0d0,2.0d0),(3.0d0,-2.0d0)/),(/n,n/))
        b=(/(10.0d0,5.0d0),(6.0d0,-7.0d0),(-1.0d0,2.0d0)/)
        call zgesv(n,1,a,n,ipiv,b,n,info)
        open(2,file='x.txt')
        write(2,5)b
5        format(2f20.16)
        end program main

       这个例子求解方程a*x=b这样的问题.结果是很整齐的解析结果是x=(1-i,2+i,3i).用compaq visual Fortran的结果是.
       1.0000000000000000 -1.0000000000000000
       2.0000000000000000  1.0000000000000000
       0.0000000000000000  3.0000000000000000
       基本上看不出误差.相应的dlsacg函数在我要计算的模型中工作的精度都很好.
       可是问题来了,在Intel中(也就是上面的程序.用mkl库给出的结果是.
      1.0000000000000024 -1.0000000000000004
      1.9999999999999987  1.0000000000000000
      -0.0000000000000039  2.9999999999999991
       这个结果有些出人意料,希望大家不要笑话我.因为我接下来用到这个函数的地方矩阵的性质比例子中的矩阵差的非常多.计算的结果精度非常不理想.
       想问问论坛里的虫友们,大家有没有遇到过这样的问题.有没有什么调节或者校准mkl或者Intel visual Fortran的方法或者设置呢?
       我使用的是 Intel visual Fortran 11.1.065专业版.自带的mkl是10.2版的.
       在这里先谢谢大家了,祝虫友们圣诞快乐!
回复此楼

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

todd0226

新虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
1、是不是数据类型不一致,我之前的程序因为这个原因结果有些误差。
2、当我在Use Intel Math Kernel Library中设置成Sequential (/Qmkl:sequential)时,release和debug模式下计算结果完全一样,而且多次计算结果一样。然而当我设置成Parallel (/Qmkl:parallel)时,release和debug模式下计算结果有些不同,多次计算的结果也有些微差别。
不知楼主的问题有没有可能是上面的原因。或者楼主能否解释一下第二个问题的原因呢?
4楼2014-12-26 09:17:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

pippi6

铁杆木虫 (著名写手)

工程和科学数值计算咨询


小木虫: 金币+0.5, 给个红包,谢谢回帖
我看了一下,似乎Intel 给出的数据也在双精度舍入误差允许范围内,如有差别也不显著。你没有具体说明这样的舍入误差是如何影响你后面的结果的。如果这样的误差能影响你后面的结果,那只能说明你后面的算法不太robust。这种量级的误差可能有各种原因引起,不一定是数学库的原因。比如你给的cvf数据结果里3.0000000000000000 有16位0,这显然不可能是一般的结果。变换数组在内存中的位置,对其他变量的赋值都可能会改变这一状况。
2楼2014-12-26 04:28:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
送红花一朵
3楼2014-12-26 08:43:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dexter337

铁杆木虫 (小有名气)

引用回帖:
4楼: Originally posted by todd0226 at 2014-12-26 09:17:54
1、是不是数据类型不一致,我之前的程序因为这个原因结果有些误差。
2、当我在Use Intel Math Kernel Library中设置成Sequential (/Qmkl:sequential)时,release和debug模式下计算结果完全一样,而且多次计算结果一 ...

感谢你的回复.
      我也怀疑过这个问题,首先设置了Fortran默认的数据存储类型.(默认是integer kind=4,real kind=4,complex kind=8),所以在最开始发现的问题是输入给函数的数据不同于compaq的.(此问题在发帖前已经排除).
      后来我也在服务器上实验了这个例子,结果和台式机上一样.用的是串行计算.我试验的结果是,串行和并行结果一样.
5楼2014-12-26 16:19:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 材料求调剂一志愿哈工大324 +6 闫旭东 2026-03-28 7/350 2026-03-28 04:36 by wxiongid
[考研] 求调剂推荐 材料 304 +15 荷包蛋hyj 2026-03-26 15/750 2026-03-28 04:13 by fmesaito
[考研] 331环境科学与工程求调剂 +3 熠然好运气 2026-03-27 3/150 2026-03-28 04:11 by fmesaito
[考研] 085701环境工程求调剂 +9 多久上课 2026-03-27 9/450 2026-03-28 03:58 by fmesaito
[考研] 265求调剂 +8 小木虫085600 2026-03-27 8/400 2026-03-27 22:16 by 无际的草原
[考研] 308求调剂 +6 墨墨漠 2026-03-27 6/300 2026-03-27 15:20 by caszguilin
[考研] 286求调剂 +4 lim0922 2026-03-26 4/200 2026-03-27 10:28 by guoweigw
[考研] 317求调剂 +7 蛋黄咸肉粽 2026-03-26 7/350 2026-03-27 02:29 by fmesaito
[考研] 求调剂 一志愿 本科 北科大 化学 343 +6 13831862839 2026-03-24 7/350 2026-03-26 22:57 by 不吃魚的貓
[考研] 生物学学硕,一志愿湖南大学,初试成绩338 +4 YYYYYNNNNN 2026-03-26 4/200 2026-03-26 19:00 by macy2011
[考研] 0856求调剂 +8 zhn03 2026-03-25 9/450 2026-03-26 13:42 by zzll406
[考研] 一志愿天津大学339材料与化工求调剂 +3 江往卖鱼 2026-03-26 3/150 2026-03-26 09:42 by 王小欠i
[考研] 0854电子信息求调剂 +7 α____ 2026-03-22 9/450 2026-03-25 13:37 by α____
[考研] 求调剂 +3 李李不服输 2026-03-25 3/150 2026-03-25 13:03 by cmz0325
[考研] 080500求调剂 +3 zzzzfan 2026-03-24 3/150 2026-03-24 16:38 by barlinike
[考研] 305分求调剂(食品工程) +5 Sxy112 2026-03-21 7/350 2026-03-24 12:27 by 544594351
[考博] 26申博自荐 +3 whh869393 2026-03-24 3/150 2026-03-24 09:55 by 21018060
[考研] 315分,诚求调剂,材料与化工085600 +3 13756423260 2026-03-22 3/150 2026-03-22 20:11 by edmund7
[考研] 求调剂院校信息 +6 CX 330 2026-03-21 6/300 2026-03-22 15:25 by 无懈可击111
[考研] 材料与化工(0856)304求 B区 调剂 +3 邱gl 2026-03-21 3/150 2026-03-21 13:47 by lature00
信息提示
请填处理意见