intel mkl库里fft函数是否上锁?

nanfangbeimu 2012-07-03 11:21:58
我遇到这样的一个问题,我的原程序是func(input1,output1),func(input2,output2).....func(input10,output10)。程序调用的函数是一样的,输入和输出的数据量也是一样的。改写成#pragma omp parallel for for(int i=0;i<10;i++){func(plan[i].input,plan[i].output)}。plan是定义的结构体。计算出的结果也正确。发现的问题:
1、原程序每次的时间只有30ms左右。2、改用openmp后,函数运行的时间大概变成150ms左右,整体运行时间是200ms左右。我反复测时,情况都是这样。所以我想问下,是不是因为intel mkl 库里fft考虑线程安全加了锁,所以并行执行的时候,要等上一个线程把fft调用完,下一个线程才能调用。另外针对这样的问题,是不是我哪里时设置不对,请高人指教,感谢!
...全文
417 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
intel_cyu 2012-07-23
  • 打赏
  • 举报
回复
是如何连接MKL 库的: 连接的串行库还是并行库?
Intel MKL内部使用了OpenMP 实现的多线程。 如果程序上层实现了多线程的并行,建议连接串行的MKL 的库。 Intel MKL 内部的多线程,与上层调用的多线程同时存在的时候, 有可能造成线程过多的情况,使程序性能下降。
nanfangbeimu 2012-07-03
  • 打赏
  • 举报
回复
补充一下 我的函数调用了intel mkl库里的fft函数
nanfangbeimu 2012-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

肯定不是这个原因
[/Quote]
呵呵 可不可以指点一下啊
w20120125 2012-07-03
  • 打赏
  • 举报
回复
肯定不是这个原因
w20120125 2012-07-03
  • 打赏
  • 举报
回复
我测试看看先

603

社区成员

发帖
与我相关
我的任务
社区描述
异构开发技术
社区管理员
  • OpenCL和异构编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧