-
プログラム
-
OpenMPプログラミング
- コメントを投稿する
-
↑
-
産業的な視点から考えて需要はありますか?
-
NULL
-
>>3
ある -
OpenMPってなに?
-
共有メモリ型の並列計算のためのAPI。
対極にあるのが分散メモリ型のMPI。
いずれも計算用途。
pthreadやMPIより、OpenMPによる並列化ははるかに容易。
ただし共有メモリで並列計算するには、マシンのプロセッサ数が並列数以上でなくてはならない。
つまり、マシンのコストが高い。 -
gccにインストールできますか?
-
共有メモリ型のプログラミングって何十台というPCでできるものですか?
-
>>9
( ゚Д゚)ポカーン -
よい入門書があれば教えてください
-
初めてのMP
-
>>12
ドラクエやれ -
OpenMPとMPIどちらを勉強するのが得策ですか?
-
>>15
MPI -
OpenAL
-
OpenMPとpthreadの違いがわかりません。
効率、可搬性などどちらが優れているのでしょうか? -
Dualコア時代になるのに閑散としてるなこのスレ。
VisualStudio2005betaを使ってるヤツは少ないか。
所詮業務じゃ使えないしな。。
しかしDualコア+HyperThreadで、この年末には
家庭用PCですら4CPUになっちまうのかな。スゲエ。 -
OpenMPをVCで使う方法を教えてください
-
-
>>20
2005β使え。 -
LinuxでOpenMPを使いたいのですが、gccのほかに何をダウンロードすればよいのでしょうか?
-
OpenMPを使う利点を教えてください
-
共有メモリ型擬似4CPUは、もう普及へ向かっているわけだがw
CELLは分散メモリだからMPIか? -
gccに対応したフリーのOpenMPはどこからダウンロードできるのでしょうか?
-
PentiumD買ったので、手持ちのソフトをOpenMPで並列化しようと思ってる。
尼で見つけた "Parallel Programming in OpenMP" って本の評価はどんなもんですか?
http://www.amazon.co.../250-7296386-2789028
-
2000年の本だと古いんじゃないかなあ。
Intelのサイトで技術PDF探してみては? -
>>30
ですよねぇ。こういう方面の技術って、手詰まりなんですかね? -
OpenMPってpthreadと比較して何が違うのでしょうか?
-
逐次プログラムにちょっと書き足すだけで並列に動くお手軽さ。
-
質問
#pragma omp parallel for private(j)
for(i=0;i<100;i++)
for(j=0;j<100;j++)
何か演算
とした場合これはiを分割して実行していて
jはローカル変数として分割されたiの中で0〜99まで回してるってことですか?
それともjが分割されているってことですか? -
愛を分割してる方
-
インテルのコンパイラにはOpenMPはついてくるのですか?
-
Sunのソラリス落とせば
OpenMP付のSunのコンパイラも手に入るよ
高性能コンパイラが無料だなんてなあ -
Athlon系は分散メモリだからOpenMP使えないのかな?
-
簡単に並列処理を行わせるようにするためのもの?
将来的にはこういうのが普通に使われるようになるかもね。 -
GCCも4.2でOpenMP対応するみたいだね。
そしたらいよいよ知名度上がるんじゃないの? -
gccがないとOpenMP使えなかった環境てマックくらいじゃない?
Windowsもかな -
Intel コンパイラはサポートに熱心だよな。
今度Mac版も出るらしいから、Win、Mac、Linuxどの環境でもGCC、IntelコンパイラでOpenMP
できるようになる鴨。 -
OpenMPが使えるかどうかによってヘッダをインクルードするかどうかを条件分岐したいのですが
どのようにしたらコンパイラがOpenMPをサポートしているか調べられるでしょうか? -
>>43
VC++8は対応してるよ -
GOMPはどこのページからダウンロードできるのでしょうか?
-
C++相談室で教えてやっただろうが。
-
TextSS のWindowsXP(Professional)64bit化おながいします
もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
-
>>50
kwsk -
OpenMP初めて知りました。こんなに簡単にマルチスレッドプログラムが作れるなんて
時代が変わったようだな -
大きい単位で独立性の高いスレッドを切り出すのがパフォーマンスを上げるポイントなので、
細かい単位であっちこちで同期を取るようなプログラムが手軽に作れてしまえるOpenMPは痛し痒し。
激しくパフォーマンスが出なくてシングルで動かしたときより遅くなることも。
-
OpenMPってwindowsでできるの?
-
>>56
VC++ 2005 -
>>55
細粒度はパフォーマンスでないけど、お手軽並列化〜♪って感じなんでないかい。 -
OpenMPってお手軽だけど、効率はあまり良くないよね
-
モチロンソウヨ
-
ハイパースレッディングでOpenMP使うと激しく遅くなるよね。
-
それは論理CPUにスレッドをバインドすれば
なおるんじゃね?
どうやってバインドするかしらねーけど。
-
あまってる演算器や回路をつかって2CPUに見せかけるのがHTだから
行列の計算のような同じタイプの計算を並列化した場合遅くなるのは当たり前。
片方は整数もう片方で実数計算をさせると効果が出るかもしれない。 -
そうなると #pragma omp for が全滅・・・
-
同じ回路を使う場合でもレジスタが倍になって依存性が減るから、パイプラインのストールが減るよ。
あと実数がメインの場合、実数程の負荷は無いにせよアドレスの計算やループカウンタで整数も結構忙しい。
実数をメインにするとそこらへん上手く住み分け出来てると思った。
演算器を効率良く使えてウマー。 -
依存性が減るって表現はしっくりこないな
-
VS2005のC++でOpenMPを使おうと思って、コードを書きましたが、
プログラムが開始する前にエラーが起こります。
/openmp をつけてコンパイルしたり、マニフェストファイルに
<file name="vcompd.dll" hash="XXXX" hashalg="XXX"/>と入れ
たりしましたが、まったくピクリとも動いてくれません。
皆さんは普通にVS2005でOpenMP使ってますか? -
インストーラ用のマージモジュールがあったので、適当なプログラムでインストーラーを作って入れた。
\Program Files\Common Files\Merge Modules
Microsoft_VC80_OpenMP_x86.msm
Microsoft_VC80_DebugOpenMP_x86.msm
リリース版だけならvcregist_x86.exeでも導入できる。 -
>>67
うん、普通に使える。
>プログラムが開始する前にエラーが起こります。
ってのがどういう意味かよく分からんし(コンパイル時か実行時か)、
とりあえずエラーメッセージとかソースとか晒してみたら。
-
Pro以上なら普通に使えるが、実はStdやExpressでも使う方法がある。
足りないものはomp.h とvcomp(d).dllとインポートライブラリで、
これはPlatformSDK (for Win2003とかいう新しめの奴)を入れると付いてくる。
これをIDEの各検索パスに追加すればコンパイルは出来る。
ただし、WinSXSディレクトリにdllをインストールしないので実行時にDLLが無いためエラーになる。
この導入の仕方は>>68のとおり。
同じ方法でPGOもできないかと思ったがこれは無理でした。
ただ単純な/GL /LTCG オプションでのコンパイルは出来るからこれで我慢。 -
ありがとうございます。インポートライブラリを入れるとうまく動きました。
ためしに
for( i=1; i<=10000000; i++ ) {
double t1 = sin( i*3.14/10000000.0 );
double t2 = cos( i*3.14/10000000.0 );
s = s+t1*t1+t2*t2;
}
を計算すると、デバッグ版ではOpenMPの方が5倍くらい時間がかかるが、
リリース版では1割くらい早くなった。
ちなみに、ハイパースレッドのデュアル -
#pragma omp parallel for reduction(+:s)
for ( ...
そのプログラムだとこうですか?うちの環境だとHTの1CPUだからかずぶずぶの結果です。 -
その次のステップの入門書がほしい
-
72>> その意味で ずぶずぶ とはどこの方言?
-
>>75
東京 -
g++では利用できないのでしょうか?
-
Openマンコぽこちんか
-
OpenマンPのG☆SPOTに決まってるだろバカか
-
Sun SorilisとVC++(std)の組み合わせで、OpenMPできますか??
-
>>82
できない -
OpenMPでスレッド数を取得するには
#pragma omp parallel
{
cout<<omp_get_num_threads()<<endl;
}
でよいのでしょうか?もっと何かスマートな方法はないでしょうか? -
#pragma omp sectionsでfor構文でのdynamicスケジュールの様な動作をさせたいのですが、
どのように書けばよいのでしょうか? -
しらね
-
>>72-73
OpenMPによる並列プログラミングと数値計算法
http://www.amazon.co...p/product/4621077171
とかどーでしょ。
>>84
パラレルリージョンの中でなくてもよいはず。
#ifdef _OPENMP
cout<<omp_get_num_threads()<<endl;
#endif
などとすればよいかと。 -
omp_get_num_threads() はその時点でスレッドチームを構成しているスレッドの数を返すから
逐次実行部分で呼ぶと 1 を返す。 -
#pragma omp parallel
{
#pragma omp single
cout<<omp_get_num_threads()<<endl;
} -
program main
!$ use omp_lib
implicit none
character(len=4),parameter :: str(0:2) = ["hage","hoge","huge"]
print *, "Hello, World!"
!$omp parallel num_threads(3)
!$ print *, trim(str(omp_get_thread_num()))
!$omp end parallel
end program main -
レベルの低い人向けの商売ってあるじゃないですか
たとえば、カレーライス。子供の食い物ね。マクドナルド。通はモスバーガーでしょ?
野球だと、巨人。クルマだと、トヨタ。音楽だと、ミスチル。政治だと、自民党。
ビートルズだと、ポールの曲。音楽分かってる人はジョンですよね。
マンガだと、手塚治虫や藤子不二雄。今更読む必要もないw
小説だと、古本屋に山積されてる赤川次郎。小説マニアは読みませんねw
長嶋茂雄・新庄剛志・三浦カズ・ゴン。名前だけでむかつきますね。
DELLってつまりそういうレベルの低い人向けの商品ですよね。
歴史を作るのは我々マニアですから、記憶からはいつか消え去るんですよDELLはw
-
C++のクラスでstaticな変数を使いたいのですが、OpenMPの中で更新した場合、安全に更新されるのでしょうか?
-
されると思う?localな変数でも、ちゃんと明示しないと無理だし、
データ並列になっていないのでは意味無いと思わない? -
,ィ __
,. / |´ ̄`ヽー- 、 ト、 , -‐、/./.- 、 書き込みのはやきこと風の如く
/ | | ヽ l l ( 火◇風 ノ
/o ̄`ハ._.ゝ===┴=く.ノ- 、 ノ ◇ ◇ ( 他人と会話せざること林の如く
/o O / l´ ⌒ ⌒ lo ',ヽ ( 山◇ 林 }
\___/. ト、(●) (●) ハ ∧ `⌒/7へ‐´ ネットで煽ること火の如く
/ ,イ レ::::⌒(__人__)⌒l~T--‐彡 /./
/ ̄ ̄l. 彡、 |r┬-| ノ'l l::::::::::彡ー7⌒つ、 部屋から動かざること山の如し
彡:::::::::::l ト、__ `ー' /| l::::::::::::ミ {,_.イニノ
彡ソ/ノハ ト、 \ / ,イ 川ハ ヾー‐'^┴
-
祗園精舎の鐘の声
諸行無常の響きあり
娑羅双樹の花の色
盛者必衰の理をあらはす
おごれる人も久しからず
唯春の夜の夢のごとし
たけき者も遂にはほろびぬ
偏に風の前の塵に同じ -
一般論として、MPIよりもOpenMPの方が性能が低下する(遅くなる)ということはありえますか?
MPIのプログラムをOpenMPを使って書き換えたのですが、3割近く遅くなってしまいました。
-
一般論では遅くなります
-
きちんとチューニングされていれば、MPIの方が速い。
あとはpthreadを使って自分で書くという手もある。
-
OpenMPはお手軽。だからそれに伴って犠牲になっている部分もある。それが性能。
↑今すぐ読める無料コミック大量配信中!↑