回 帖 发 新 帖 刷新版面

主题:求助: 关于 imsl + openmp 并行

    大家好,我想用openmp对串行程序中的循环块进行并行。这些循环块中调用了imsl的子程序和子函数。我在源程序中加入openmp制导语句后发现在很多情况下并行效率很低,甚至总计算时间变多了。然而在有些情况下并行效率很高。我自己总结的情形是: 如果在循环中只调用了imsl的subroutine,那么并行效率很高;如果循环中调用了imsl的function,则并行效率很低。对这个问题感到非常疑惑[em10]。请高人指教。另 : 我调用的主要是样条函数的插值子程序 。下面附上用来测试的源程序:

program    openmp_imsl
    use imsl_libraries
    implicit none
    integer, parameter :: n=128
    real*8, parameter :: pi = 3.14159265358979d0
    real*8 :: x(n),y(n),z,cscoef(4,n),break(n)
    integer :: i ,j ,k,l
        do i=1,n
        x(i)=(i-1)*2.*pi/(n-1)
        y(i)=sin(x(i))
    end do
        y(n) = 0.d0
    call d_csper(x,y,break,cscoef)
    !$OMP PARALLEL             
    !$OMP DO FIRSTPRIVATE(i,j,k,break,cscoef,z)
    do i=1,1024
        do j=1,1024
        do k= 1,1024
           z = d_csval(1.d0,break,cscoef)
        end do
        end do
    end do    
    !$OMP END DO
    !$OMP END PARALLEL 
end program
编译参数:ifort $F90FLAGS test.f90  $LINK_FNL

这个简单的程序在区间{0,2pi}上,用样条函数逼近正弦函数。
这个程序我用一个线程和多个线程运行,时间消耗差不多。
奇怪的是 ,如果把循环中的函数换成一个子程序 ,
比如将  z = d_csval(1.d0,break,cscoef) 换成call d_csper(x,y,break,cscoef) ,那么程序的并行效率变的非常高!!




回复列表 (共11个回复)

沙发

我没看出来你究竟是想得到什么东西(我不用IMSL, 不清楚函数里面具体的东西), 要得到z?
而且这个程序的目的只是测试时间而已?

P.S. i,j,k 肯定不需要firstprivate. 不过应该无所谓, 其他几个不知道函数用法和你的目的就不好说了.

板凳

谢谢楼上的。 这个程序的目的只是用来测试时间的,call d_csper(x,y,break,cscoef),生成了三次样条函数,循环里的函数:  z = d_csval(1.d0,break,cscoef) 是计算在1.0处样条函数的值。遇到的问题是 并行几乎没有效率,计算时间没有显著减少,但如果在循环块中调用其他的函数:如:call d_csper(x,y,break,cscoef)  ,那么并行后计算时间显著减少。

3 楼

谢谢楼上的。 这个程序的目的只是用来测试时间的,call d_csper(x,y,break,cscoef),生成了三次样条函数,循环里的函数:  z = d_csval(1.d0,break,cscoef) 是计算在1.0处样条函数的值。遇到的问题是 并行几乎没有效率,计算时间没有显著减少,但如果在循环块中调用其他的函数:如:call d_csper(x,y,break,cscoef)  ,那么并行后计算时间显著减少。

4 楼

随手写几个建议和疑问吧, 有兴趣你再回帖续一下.
1. 要具体看被调用的函数是否支持并行的. 就是要查它是否thread save.
2. 你计时如果用cpu_time函数的话, 这个函数是计算所有cpu时间, 而不是程序运行时间的. 不清楚你计时是另外单独, 还是用其他函数(例如system_clock)
3. 如果函数计算量太少, 并行是没价值的, 打开线程和关闭线程本身开销也不小.
4. 你确认已经是多线程运行?

5 楼

感谢yeg001的建议。

1. 要具体看被调用的函数是否支持并行的. 就是要查它是否thread save.
==================================
imsl库的说明中声称是线程安全的:
The IMSL Fortran Numerical Library allows users to leverage the high-performance technology of shared memory parallelism (SMP) when their environment supports it. Support for SMP systems within the IMSL Library is delivered through various means, depending upon the availability of technologies such as OpenMP, high performance LAPACK and BLAS, and hardware-specific IMSL algorithms.

2.关于计时。
我计算的是进程运行的时间,不是cpu_time,就是在程序开始前和结束后,查看操作系统的时间差。

3.单个函数的计算量应该还是挺大的。然而更重要的是循环的次数非常多,在我的程序中每推进一个时间步长,嵌套的循环总共有大约500万次,串行的话每一时间步大约需要消耗五分钟的时间。

4.确认是多线程运行,查看了CPU的占用率,运行时稳定在1600%左右。

我自己的猜测的原因是:这些函数虽然是线程安全的,但是他们在运行时需要创建私有的WORKSPACE, 用来存放计算中的临时变量,但是由于IMSL库中的些函数不能显式的指定WORKSPACE的地址,因此所有线程在调用同一个函数的时候,可能会使用同一块WORKSPACE,所以造成了线程之间的竞争。

但这只是我的推测,希望高手指点。

6 楼

私有的工作空间不应该是有IMSL创建的, 既然他文档声称是支持OMP那它就不应该在函数内部发生数据竞争.
线程不安全的程序改成线程安全有几种方法, 按理来讲IMSL是卖钱的东西, 他应该采用修改算法的方式实现线程安全, 那样的话才能最安全.
给我的感觉还是跟函数有关, IMSL不是开源的, 不知道他代码怎么实现. 或者贴一下这个函数的说明看看能不能找到原因?

7 楼

谢谢!

函数说明的网页:
csval:
http://www.roguewave.com/Portals/0/products/imsl-numerical-libraries/fortran-library/docs/6.0/math/default.htm?turl=csval.htm

bs2dr:

http://www.roguewave.com/Portals/0/products/imsl-numerical-libraries/fortran-library/docs/6.0/math/default.htm?turl=bs2dr.htm

bs2dr说明中有关于workspace的问题

IMSL中workspace的说明:
http://www.roguewave.com/Portals/0/products/imsl-numerical-libraries/fortran-library/docs/6.0/math/deprecatedfeaturesandrenamedroutines.htm

8 楼

函数只有变量说明, 没办法知道是什么回事.
后面workspace我看了一下文档, 应该只是函数或者子程序的工作空间. 好比lapack里面就有最小工作空间, 性能优化空间等等, 这些跟并行没有什么关系. 就是函数/子程序下的临时数组.

这个问题可以向IMSL的技术支持那边发邮件问一下.

9 楼

好的 谢谢你!

10 楼

NOT all that Mrs. Bennet, however, with the assistance of [url=http://www.timberlandforyou.com/]mens timberland boots[/url] her five daughters, could ask on the subject was sufficient to draw from her husband any satisfactory description of Mr. Bingley. They attacked him in various ways; with [url=http://www.timberlandforyou.com/]timberland 6 inch boots[/url] barefaced questions, ingenious suppositions, and distant surmises; but he eluded the skill of them all; and they were at last obliged to accept the second-hand intelligence of their [url=http://www.timberlandforyou.com/]timberland roll top[/url] neighbour Lady Lucas. Her report was highly favourable. Sir William had been delighted with him. He was quite young, wonderfully [url=http://www.timberlandforyou.com/]timberland roll top boot[/url] handsome, extremely agreeable, and, to crown the whole, he meant to be at the next assembly with a large party. Nothing could be more delightful! To be fond of dancing was a certain step towards [url=http://www.timberlandforyou.com/]timberland roll top boot[/url] falling in love; and very lively hopes of Mr. Bingley's heart were entertained.;If I can but see one of my daughters happily settled at Netherfield,; said Mrs. Bennet to her husband, ;and all the others [url=http://www.timberlandforyou.com/]Womens 14-Inch Premium Waterproof Boots[/url] equally well married, I shall have nothing to wish for.;In a few days Mr. Bingley returned Mr. Bennet's visit, and sat about ten minutes with him in his library. He had entertained [url=http://www.timberlandforyou.com/]shop timberland boots[/url] hopes of being admitted to a sight of the young ladies, of whose beauty he had heard much; but he saw only the father. The ladies were somewhat more fortunate, for they had the advantage [url=http://www.timberlandforyou.com/]timberland men boots[/url] of ascertaining, from an upper window, that he wore a blue coat and rode a black horse.An invitation to dinner was soon afterwards dispatched; and already had Mrs. Bennet planned the courses that were [url=http://www.timberlandforyou.com/]timberlands boots[/url] to do credit to her housekeeping, when an answer arrived which deferred it all. Mr. Bingley was obliged to be in town the following day, and consequently unable to accept the honour of their [url=http://www.timberlandforyou.com/]timberland boots on sale[/url] invitation, c. Mrs. Bennet was quite disconcerted. She could not imagine what business he could have in town so soon after his arrival in Hertfordshire; and she began to fear that he might [url=http://www.timberlandforyou.com/]cheap timberland boots[/url] be always flying about from one place to another, and never settled at Netherfield as he ought to be. Lady Lucas quieted her fears a little by starting the idea of his being gone to London only to [url=http://www.timberlandforyou.com/]timberland boots on sale[/url] get a large party for the ball; and a report soon followed that Mr. Bingley was to bring twelve ladies and seven gentlemen with him [url=http://www.timberlandforyou.com/]womens timberland boots[/url] to the assembly.
[url=http://www.timberlandforyou.com/]timberland 14 inch boots[/url] 
[url=http://www.timberlandforyou.com/]timberland working boots[/url] 
[url=http://www.timberlandforyou.com/]mens timberland boots[/url] zxj

我来回复

您尚未登录,请登录后再回复。点此登录或注册