t-nissieの日記: 【電脳】FFTWのOpenMP並列でいまいち3次元r2c, c2rの速さが出ない 1
日記 by
t-nissie
FFTWのOpenMP並列でいまいち3次元r2c, c2rの速さが出ない。
planを作るとき並列化効率が上がらないと
thread数を指定より勝手に下げてしまうみたい。
そのときネストして並列化してやる必要があるのだろうか???
http://www.fftw.org/doc/How-Many-Threads-to-Use_003f.html
いやいや (スコア:0)
fftwはgccのOpenMP拡張にかなり早い時期から対応していたんだけど、OpenMP版は普通にThread使うより遅くなっちゃったのね。
丁度Linux2.6のPOSIX threadとか、hrtimerなんかの時期と重なっちゃったってのもあるけど、それが無くともOpenMP版はかなり残念な性能だったわけ。
なもんでtar玉makeすると、make時にその旨のメッセージを出してくれたりしてたんだけど
いつごろからか「OpenMPだからってthread使わない意味なくね? OpenMPとthread同時に使ったらかなり早くなるんじゃね?」みたいな方向転換してメッセージも出なくなり、両方使う今に至るわけよ。
残念な性能はそのままだけど、「もしこの先16コアCPUとか、32コアCPUとか出たらOpneMPの巻き返しあるかも?」と開発者の誰もが思っているのでOpenMPを棄てられないんだろう。
現状使うなら--enable-sse --enable-sse2 --enable-threadsだけして、OpenMPは--disable-openmpで使う方が良さげ。