OpenMPプログラミング

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
NGNG
オフィシャルサイト
http://www.openmp.org/

リンクなどは>>2以下で
2009/05/10(日) 21:24:42
そうか
2009/05/11(月) 16:23:48
フリーソフトウェア最高や!
ぷろぷらICCなんか最初からいらんかったんや!
2009/05/12(火) 09:56:25
OpenMPはいざ知らず、普通のプログラムでiccは随分賢いコードを吐くよ。
後はあれだ、MKLのOpenMP対応は生半可じゃなくリニアリティが高い(投入コア数とパフォーマンスがよく比例する)。
2009/05/12(火) 10:55:45
ifortで使ってるけど、16CPUくらいまでならいいよね。
経験的には32個過ぎるあたりからだんだん悪くなる(64CPUでだいたい48CPU相当)けどまあしょうがないか。
それ以上を厳しく要求される計算だとたぶんMPIと自前のソルバの組み合わせになってしまうのかも
しれないけど、まあ普段の用途には16か32倍も出れば御の字だろう。
2009/05/12(火) 18:55:41
OpenMPで16スレッドも使えるようなCPUなんて持ってるのか。羨ましい。
汎用だと4が限界だし
2009/05/12(火) 19:02:43
PCサーバなら、4core*2CPUはざらだと思うが。
# さすがに16とか32は見たことがない……
2009/05/12(火) 19:13:11
cell
209205
垢版 |
2009/05/13(水) 02:45:20
あまり使われていない altix の箪笥が使えるのです。
ふだんは 4core x 2 ですね。Xeon 8コアで、ちと古いItanium16個相当のパフォーマンスは出るので。
2009/05/14(木) 01:08:55
>>201

>>191です。

CLY[index_x]=CLY[(IDX[i][j][k])]はCLYのサイズが小さいため、
2ndキャッシュにキャッシュさせる目的で使っています。

> いずれにしてもコードいじるからなあ・・・。gccで幸せならそのまま、という手も。

これでコードをいじって30%くらい速くなるならやる価値はありそうですが、
おそらくそこまで行くような感じではないように思われます。
あと、GCCでもバージョンによって速さが違いますし、OSが32bitや64bitでも違いました。
「このコンパイラを使えばどの環境でも速くなる!」と言うのはないですかね。
2009/05/14(木) 02:01:54
ハンドアセンブル
2009/05/14(木) 09:53:37
>>210
VTuneは使っている? そのくらいシビアな話なら動的解析してみると何か分かるかもよ。
2009/05/15(金) 01:38:09
VC++2008のStdしか持ってないが
C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugOpenMP\vcomp90d.dll
というファイルが入ってる。これ使えるの?
2009/05/15(金) 02:44:45
>>210
非構造格子の格子形状の情報が格納されてるのかな?
それだとidx配列で引くのが不利より有理な点が多そうだね。
だったら200みたいにループの始めでクローン作ったほうがいいかも。
コードもそんなにいじらないだろうし。
>>213
ディレクトリは忘れたけど、その名前のダイナミックリンクライブラリは
使った記憶がある。どういう使いかただったかは忘れた・・・。
215デフォルトの名無しさん
垢版 |
2009/05/21(木) 22:25:36
ちょっと興味があるのだが
OpenMPってこれから並列プログラミングのスタンダードになっていくのかね
MPI+OpenMPのクラスタなんてなかなかだな、環境とプログラムの内容によっちゃあ
2009/05/22(金) 06:56:43
MPI使ったコードを既に持ってるなら、OpenMPはあまりいらないかもな。
OpenMP相当の事は自動並列かなりできるようだしMPI主体が大〜中規模計算の主流で、
マルチ・コアCPUが1〜2個くらいのシステムでお手軽並列が
これからのOpenMPの使いかたになるのではと勝手に予想するw

というかsgiが飛んだり、SUNがソフト屋に買収されたりNECが断念したりで今後のトレンドが読めんね。
217213
垢版 |
2009/06/02(火) 23:51:25
以下の2つのファイルをexeと同じフォルダに入れると使えました。
デバッグビルドでもOpenMPを使えるようです。

C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugOpenMP\vcomp90d.dll
C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugOpenMP\Microsoft.VC90.DebugOpenMP.manifest
2009/06/23(火) 01:54:45
PriusOnlineでOpenMP/VC8つかってるっぽい
どうしようクアッドコアにしようか
2009/06/23(火) 08:01:00
VC++2010にParallel Pattern Library(PPL)というマルチスレッドライブラリが
追加されるみたいだけどOpenMPとの住み分けはどうなるんだろう。
220デフォルトの名無しさん
垢版 |
2009/06/25(木) 06:30:55
いままでintel fortran 9.1使っていた。お試しで11入れてみた。
オプションはシェフお薦めの
ifort -fast -openmp
だけ。だいたい30%くらい速いようだ。コードにもよるだろうけど、いいね。
というか今までのはなんだったんだw

関係ないけどversion 8は挙動が変だ。なんじゃありゃ。
221デフォルトの名無しさん
垢版 |
2009/06/25(木) 06:31:45
あ、OSはlinux(版はよくわからんw)ね
222デフォルトの名無しさん
垢版 |
2009/06/25(木) 21:51:20
OpenMP3.0使った人いる?
223デフォルトの名無しさん
垢版 |
2009/09/11(金) 06:51:07
OpenMPを使ったループの中でrandを使うと、srandでseedを設定しても、毎回結果が変わってしまいます。
同じ結果を得るようにするにはどうしたらよいでしょうか?
2009/09/11(金) 08:54:45
>>223
スレッドセーフな擬似乱数生成器を使う。
2009/09/11(金) 15:00:32
スレッドセーフなだけじゃ駄目でしょ
226デフォルトの名無しさん
垢版 |
2009/09/12(土) 04:34:20
>>225
kwsk
2009/09/12(土) 04:42:35
実装にもよるんだろうけど、スレッド毎にシードを持つイメージになるんだっけ?
2009/09/12(土) 04:51:43
それ以前の問題で、ループの実行順が一定でないと、同じ乱数列は得られないでしょ。
ループで使う分の乱数を先にテーブルにでも入れておいたら?
2009/09/12(土) 08:18:27
>>228
OpenMPの意味ないじゃん
2009/09/12(土) 08:41:32
スレッドセーフとスレッドセーフじゃないの具体的な例を教えて
2009/09/12(土) 08:43:26
>>223
2009/09/12(土) 08:48:35
>>231
>>223の原因はそれだけじゃないとおもうYO
2009/09/12(土) 08:49:30
スレッドが絡んで意図したとおりに動かないのがスレッドセーフでない状態
234デフォルトの名無しさん
垢版 |
2009/09/12(土) 11:14:56
例えばsin関数は引数のみによって決まるので、スレッドセーフ。
一方、randは内部の状態を保存する変数に各スレッドからどの順序でアクセスされるかによって
結果が変わってくるので、スレッドアウト。
2009/09/12(土) 17:00:44
スレッド・・・アウト・・・??
2009/09/12(土) 18:47:26
きっとスレッドストライク、スレッドボーク、スレッドチェンジなどもあるに違いない。
2009/09/15(火) 01:13:35
!$omp thread out
238デフォルトの名無しさん
垢版 |
2009/09/19(土) 05:24:10
OpenMPとMPIで同じプログラムを書いたら、MPIの方が速かったんですが、どいういうこと??
使っているのは、omp parallel forだけです。
2009/09/19(土) 07:46:38
分散メモリじゃOpenMPはロクに働かないから共有メモリand/orマルチコアだろうけど、
ごくごく一般的に・・・
CPU/Core数が増えるとMPIが早い。OpenMPは効率が頭打ちする。なのでまあ当然ともいえる。
FirstTouchポリシー採用のシステムでは初期化ループで大まかな役割分担を教えてあげないとOpenMPはのろい。
OpenMPで一個でもShareかPrivateかを間違えるor書き忘れると途端に遅くなること有。
一次元配列の分割計算の場合、OpenMPだとUnrollingを抑制するコンパイラも多いのでそうなると結構遅くなる。
・・・などなど。
まあ、OpenMPはお手軽だから中規模な計算がメインな自分は頻繁に使うけど、
カリカリにチューンしたいとか大規模計算になるとMPIのほうが良いよ。
2009/09/19(土) 09:35:41
スレッドの生成の方が、MPIのプロセス間通信より軽いと思っていたのだけど
2009/09/19(土) 21:15:35
iclを使っているんだけど、forの中で初期化したい場合はどうすればいいのかな。

実際はもっともっと複雑なんだけど、イメージ的には下のような感じで
ループの外で共有のtlbを作ってからメインループでtlbを使いたいんだ。
しかし、parallel forの中ではbarrierやsingleが使用出来ない。

かといってtlbのサイズとかループ回数の兼ね合いから、
parallel forをメインループに持っていったりtlbを全スレッド分作るというのは出来れば避けたい。

#pragma omp parallel for
for (int j=0; j<m; ++j)
{
#pragma barrier
#pragma omp single
for (int i=0; i<q; ++i)
{ tlb[i] = foo(i, j); }

#pragma barrier
for (int i=0; i<n; ++i)
{ /* メインの処理 */ }
}
2009/09/19(土) 21:20:22
ミスった。barrierの前にompを付けて読んで下さい。

あとparallel forの中でbarrierやsingleが使用出来ないというのは
コンパイラがハネるという意味です。
OpenMPの仕様を読んでも使えないように読めます。
2009/09/20(日) 00:25:20
>>241
変数 tlb をスレッド間で共有しているのが問題なので、
a) tlb の定義を外側ループの中に移すか、
b) tlb の定義を tlb[スレッド数][q] に変えてスレッドごとに違う tlb[スレッド番号][i] を使う。
2009/09/20(日) 11:09:00
>>243
最初に書いた通り、無論その解決策は理解している上で
tlbのサイズと生成コストの理由から出来れば共有したい、
というのが今回の質問なのですが、OpenMPでは簡単には解決出来ないのでしょうか。

なんでbarrierがforの中で使えないんだろう。
2009/09/20(日) 11:23:57
jのループをparallel forで並行動作させると
たとえばj=0とj=1が同時に存在するよね
にも拘らずtlbを複数用意したくないというのは
tlb[i] = foo(i,0), tlb[i] = foo(i,1)
俺にはついていけない世界だ…
2009/09/21(月) 08:22:43
>>245
ああそうか!
なんて凡ミス、ありがとうございました。
2009/09/23(水) 01:18:05
>>238
なんか変数を各スレッドで共有しているんじゃない?
OpenMPも結構考えないとパフォーマンスは伸びないし、
CPUの利用率も高くなってしまう。
同一マシン上でMPIよりも遅くなるのは考えにくいなあ。
ただ、MPIだと明示的にスレッドを分割しているのに対して、
OpenMPはコンパイラ依存だからね。そういったこともあり得るかも。
2009/09/24(木) 23:57:35
fork-joinのコストがでかい
OpenMPを有効にするとコンパイラ最適化がきかなくなる(・・・というコンパイラが多い)
249デフォルトの名無しさん
垢版 |
2009/09/25(金) 07:43:37
遅くなる原因はこれかな???
http://olab.is.s.u-tokyo.ac.jp/~reiji/openmp.html
2009/10/06(火) 22:47:29
for(i=0;i<N;i++) {
for(j=0;j<N;j++) {
for(k=2;k<N&&i+k<=N&&j+k<=N;k+=2) {
for(n=1;n<=3;n++) {
ごにょ
if(addHash()) {
if((p=getPoint()) == N) goto End;
ごにょ
}
}
ごにょ
}
}
}
}
}
4重ループの中にgoto分使っているけど、こういう場合はどうすればいいの?
251デフォルトの名無しさん
垢版 |
2009/10/07(水) 04:35:58
>>250
gotoを取り除く
2009/10/10(土) 03:19:26
んだ。gotoあると並列処理されにくいよ。
並列化してると、途中で終了するのも最後までやるのも計算コストはかわらんし。
マスクの部分は
if((p=getPoint()) /= N){ごにょ} か if((p=getPoint()) < N){ごにょ}
にする・・・とかかな。
253デフォルトの名無しさん
垢版 |
2009/10/29(木) 11:34:56



岡田外務大臣キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
h‍ttp‍:‍/‍/‍q‍b5.2‍ch.net/t‍est/rea‍d.cgi‍/sak‍u2ch/1256‍630318/1



早く記念カキコしないと埋まっちゃうwww
2009/11/21(土) 02:59:22
OpenMPでスレッド間の1対1通信ってどうやんの
2009/11/23(月) 17:05:30
>>250 >>251
返事遅れてごめん。ありがとう。
2009/11/23(月) 17:07:10
>>252
なるほど。ありがとう。
257デフォルトの名無しさん
垢版 |
2010/01/10(日) 02:26:13
FortranをOpenMPで並列化したのですが、シリアルで実行した場合と結果が変わってしまって困っています。
たぶん共有変数の設定を間違って、書き込んではいけない変数に書き込みが発生してしまったのだと思うのですが、
どう直したらいいのかわかりません。
分かることがあれば教えて下さい。

[並列化したソースコード]http://gaatsu.ps.land.to/up/src/up_1444.png.html
[シリアルで実行した結果]http://gaatsu.ps.land.to/up/src/up_1445.png.html
[パラレルで実行した結果]http://gaatsu.ps.land.to/up/src/up_1446.png.html
z軸のプロットは、ソース中のloss_timeを描いています。
サブルーチンsubの中身は、関係する部分だけ書くと、以下のようになっています。
do i = 1, nend
  t=t+dt
  if (条件)
    loss_time = t
    return
  end if
end do
258デフォルトの名無しさん
垢版 |
2010/01/10(日) 02:29:09
すみません、最後の方で書いた内容、一部間違えました。

サブルーチンsubの中身は、関係する部分だけ書くと、以下のようになっています。
do i = 1, nend
  t=t+dt
  if (条件)
    loss_time = t
    return
  end if
loss_time = t
end do
2010/01/11(月) 10:56:24
多分原因はそこじゃないと思うけれど、共有変数の指定が間違っていると思うなら
privateもsharedも消してdefault(private)にしてみたらいいと思う。

あと基本的な質問だけど
「!$OMP parallel do」ではなくて
「!$OMP parallel」と「!$OMP do」
に分かれている必要性ってあるの?

parallelとdoを分ける文法を普段使わないから挙動が分からないんだけれど、
iのループが分担されずに-(maxGrid-1)から(maxGrid-1)のまま8つ生成されて、
jのループが分担されているのに1つのloss_timeを共有してそうな気がするんだけれど。
2010/01/12(火) 06:07:01
原因はそこじゃないな、おそらくアソコ。
261デフォルトの名無しさん
垢版 |
2010/01/14(木) 00:21:27
お返事ありがとうございます!

default(private)ではコンパイルは通っても、計算は動きませんでした。
(逐次領域→parallel領域で値が引き継がれないことが原因?)
なので、全ての変数をfirstprivateでやってみましたが、やはり間違った結果になりました。
!$OMP parallel doでiのループを並列化しても同じでした。


サブルーチンsubは、iやjによって計算時間が最大10000倍程度違うので、
iを分担すると負荷のバランスが偏るのでは?と思ったのでjを分担するようにしました。

>jのループが分担されているのに1つのloss_timeを共有してそうな
!$OMP parallel
の時点でメモリがスレッド数ぶん確保されるのではないんですか?
2010/01/14(木) 04:03:22
そういや、default(shared) をいったんprivateに変えてしまうと
同じ階層のメイン・副プログラム内でそれ以降全部のdefaultが変わるので面倒くさくなるんだよねぇ。
263259
垢版 |
2010/01/14(木) 10:33:17
>>261
> !$OMP parallel
> の時点でメモリがスレッド数ぶん確保されるのではないんですか?
そうだけど「!$OMP parallel」の時点で「do i」が「iの範囲が同じで」8つ生成される。まずこれが無駄でしょ?
次にloss_timeも8つ確保されているけれど、8つのスレッドでiが同じ動きをしているので「$OMP do」のjでの挙動がわかりにくい。

do jでloss_timeが共有されると言ったのは勘違いかもしれないが、よく分からないので時間があったら試してみる。

> !$OMP parallel doでiのループを並列化しても同じでした。
<中略>
> iを分担すると負荷のバランスが偏るのでは?と思ったのでjを分担するようにしました。
jを分担したいのだから、「!$OMP parallel do」を「do j」に設置する必要があると思うんだ。
2010/01/17(日) 10:42:45
OpenMP自身は共有メモリで使われる事を仮定してるから・・・
!$OMP parallel
にさしかかった時点ではメモリはいじらないとおもうよ。
全スレッドの同期確認作業(結構時間ペナルティがきつい)をするので
減らせるなら積極的に parallel 文を減らすようにするのがいい、と推奨されてるだけ。
265デフォルトの名無しさん
垢版 |
2010/01/22(金) 00:19:10
VisualStudio2008でなんだけど、
#pragma omp parallel for でfor文の中にbreakあるとダメだった気がしたんだけど、
WindowsSDK7.0入れてから久々に使ってみたらbreak入っててもコンパイルエラーにはならなかった。
もともと大丈夫だったっけ?
2010/01/28(木) 12:04:56
ダメとは聞かないけどな。intel の Fortran だと文句はいわれないと記憶。
でも、どのシステム&実装でも受け入れてもらえるように
break の条件を満たす場所を見つけたらそこでbreakするのではなく
フラグを立ててそのあとの for loop は制御の整数をインクリするだけで
担当の範囲は回すようにするといいのかも。

#pragma いろいろその0
for (i=0;i<imax;i++){
int ibreak=0;
if (ibreak == 0){
いろいろその1;
if (なんか条件) {ibreak = 1;}
いろいろその2;
} // end-if-ibreak
} // end-for-i

とか。
2010/01/28(木) 12:06:08
あ、これじゃダメだw
int ibreak=0;
は外にだしてね。
2010/02/11(木) 04:19:22
下記の様にOpenMPでタスク並列化を行う場合に、
スレッド数を動的に変化させたい場合はどのようにやるのでしょうか?

#include <omp.h>
int main(){
#pragma omp parallel sections
{
#pragma omp section
{
処理1
}
#pragma omp section
{
処理2
}
:
:
#pragma omp section
{
処理N
}
}
}
269デフォルトの名無しさん
垢版 |
2010/03/19(金) 17:06:32
CPUがHTかどうかによって並列数を変えたいのですが、物理的なコアの数を取得する方法はありませんか?
2010/03/19(金) 17:35:05
>>269
/proc/cpuinfo辺り見てなんとかならない?
2010/03/20(土) 05:26:30
Linuxなら
int cpu_num = sysconf(_SC_NPROCESSORS_CONF)
Windowsなら
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
で、sisinfoのdwNumberOfProcessorsメンバの中にはいっている。
ちなみにintな。
272デフォルトの名無しさん
垢版 |
2010/03/24(水) 08:25:08
Winだと NUM_OF_CPU みたいな環境変数があった気がするけどちがったかな?
2010/03/24(水) 23:12:52
NUMBER_OF_PROCESSORS
274272
垢版 |
2010/03/25(木) 03:13:10
それそれ、ありがと
275デフォルトの名無しさん
垢版 |
2010/03/30(火) 17:45:37
CPUのコア数以上にスレッドの数を増やすと急激にパフォーマンスが落ちるのだけどなぜなのでしょうか?
Phenom II X4ですが、5スレッドにしたとたん、全スレッドのパフォーマンスが半分以下(2倍以上時間がかかる)
ようになります。OSはubuntu9.04です。
2010/03/30(火) 18:43:55
スレッド数>コア数ってことはデスマーチ状態なので、
バタバタと戦友たちが倒れていってるんだろうな。
2010/03/30(火) 20:04:58
同時に二つのことをやるとき、一つのことだけをやるのと効率が変わらないとか、
どんな仕事でも 5 分割でパラレルになるように区分けできる
天才ってまれにいるけど、 >>275 はそういうタイプ。
278デフォルトの名無しさん
垢版 |
2010/03/30(火) 21:58:05
>>275
コンテキスト切り替え(スイッチ)
2010/03/31(水) 06:27:33
>>275
8スレッドにすると4のときと同じくらいの時間で終わる・・・かも。
2010/03/31(水) 07:36:37
>>275
当たり前の話だ。各スレッドがリソースを取り合っているんだよ。
物理コアが4つしかないのに、5スレッドが走っているわけだから、
物理コアたちが「俺が行くぞ」「ふざけんな俺が行くんだ!」とか「おまえ行けよ、いやおまえが行けよ」
ということをやっているわけだ。
本来ならセマフォで4スレッドに制限すればよいんだけど、OpenMPではどういう風にやるっけな?
まだ対応していないと思ったけどもしOpenMPでやるなら結構トリッキーな実装になりそうだな。
2010/03/31(水) 13:14:08
4プロセスのとき、4つのコアがそれぞれ100%がんばる
5プロのとき、1つのコアが2スレッド分を負担して100%がんばってるけど
ほかの3つが50%しかがんばれない。
がんばらない、じゃなくてがんばれない。同期取るからね。
>>279 のとおり8にすると4コアみんな100%の力を出せるようになる。
282デフォルトの名無しさん
垢版 |
2010/03/31(水) 13:54:11
>>279
>>281
8にしてみたけど、そんなことはなかった。
劇遅になった。
2010/03/31(水) 15:09:17
ちゃんとプロセスと計算コアを固定してる?
タダでさえ>>280 の理由で非効率な部分があるんだから・・
taskset dplace のどちらかだろう。なければこれに当たる奴みつけてね。
dplace 後者はSGIのだけの気がするけど自信はない。
2010/03/31(水) 15:10:32
プロセス、スレッド・・・OpenMPだとスレッドのほうがいいのかな?
あまり気にしてなかったので今気になった
2010/03/31(水) 16:47:05
スレッドの実行時間が短すぎるんじゃないか。
それでコンテキストスイッチの割合が大きくなりすぎているのでは。
286デフォルトの名無しさん
垢版 |
2010/03/31(水) 17:09:12
#pragma omp parallel for
for

凄い長い計算

でやって味噌。
2010/04/01(木) 03:41:12
ちゃんとprivateも設定しろな。
288デフォルトの名無しさん
垢版 |
2010/04/07(水) 17:43:00
Intel Cluster OpenMPのセットアップ方法ってどこにあるの?
とりあえずライセンスファイルのダウンロードして、それをインストールするところまではできたのだけど・・・
ネットワークとかホストとかはどこで設定するの?
289デフォルトの名無しさん
垢版 |
2010/05/12(水) 05:18:00
ubuntu 10.04にしたらRunning Processの数がOpenMP Threadの数+1になるのだけど、どうして?
うちだけ?9.04の時はこんなことはありませんでした。
2010/05/12(水) 06:30:33
全体を総括するあまり忙しくないプロセスがあるから一個多いのが正常。
2010/05/21(金) 11:41:54
>>289
topコマンドで調べてみれば?
Ubuntuだとbackend
Fedoraだとnautilus
がプロセス1個占有してるようだよ
2010/05/23(日) 21:53:46
Fortranで !$omp parallel do private(...)
のprivate変数が多いので文字数制限に引っかかって改行しないといけないのですが、
括弧中で改行すると & や!$omp& で繋げてもうまく動きません。
どうやったらいいんでしょうか。PGIコンパイラです。
2010/05/23(日) 22:44:30
PGIは知らないがIntelのは

!$omp parallel &
! & do

とかで出来た気がする。
2行目の行頭が!か!$か!$omp かは忘れた。
2010/05/31(月) 23:23:36
c++でOpenMPを使う時に

#pragma omp parallel for 文の後の
forループ内でnew演算子使っても計算は保障されるの?

保障されない場合は回避方法はあるの?
2010/06/01(火) 00:31:24
保障されなきゃ話にならんだろ
2010/06/01(火) 01:58:47
>>294
ちょっと計算っていうのがわかりにくいが、
要はnewで確保した領域で計算した結果が保証されるのか?
っていう意味なのかな?だとすればyesだろうけど、
atomicを考えるとめんどくさいような気がするなあ。
297294
垢版 |
2010/06/01(火) 22:42:21
回答どうも
コンパイルは通ったんだけど並列化されない
なぜ?

チェックし直して
うまく動いたら改めて書き込みします
2010/06/01(火) 23:35:00
コード晒さずに結果だけ書かれてもな
2010/06/01(火) 23:45:19
#pragma omp parallel for private(共用しない変数) num_threads(スレッド数)
2010/06/02(水) 00:00:30
まさかshare変数をnewしたの?
2010/07/15(木) 01:58:36
よってたかって new か・・・・恐いな。
というかどうなるんだろう?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況