みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

マルチコアを有効利用するプログラミングについて

マルチコアを有効に利用するプログラムを作りたいと考えています。
マルチコア、マルチスレッドが、よく理解できていないところもありますが、ご容赦お願いいたします。
OSはWindows XP、開発環境はVisual C++ 6.0です。

1.マルチスレッド対応すれば、マルチコアを有効利用できるのでしょうか?(複数のコアの使用率を均等に上手く割り振ってくれるのでしょうか)
2.Windows APIにSetThreadAffinityMask()、SetThreadIdealProcessor()なるAPIがあるのですが、これらを使用しないと、割り振れないものなのでしょうか?
3.少し調べたのですが、OpenMP、MPIなる技術があるようなのですが、このような特殊な処理を加えないとダメなのでしょうか。

個人的には、マルチスレッド対応さえすれば、あとはOS(Windows)が上手くやってくれれば、、、と思っているのですが。

投稿日時 - 2008-07-07 00:35:18

QNo.4156976

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

スレッドハンドルをSetThreadIdealProcessor APIに渡してください。
スチームなどではシングルコア時代のゲームがWindows Vista/7/8対応で再販されてますが、近代のマルチコア対応ゲームと比較すると全コアを活かしきれていないです。

投稿日時 - 2014-01-06 00:28:09

ANo.1

1)
各スレッドの処理量が均等になるように割り振れれば、後はOSに任せてもそれなりにうまくやってくれます。

2)
別に使わなくてもOSが適当に割り振りますが、スレッドごとに処理量が大きく異なる等で割り振りかたを制御したいときに使います。

3)
MPIはスレッドレベルというよりプロセスレベルで並列化させるときに使う技術です。スレッドレベルでの並列化の場合は必要ありません。

投稿日時 - 2008-07-09 03:20:01

あなたにオススメの質問