Windows上での話という事でお願いいたします。
HTが出始めた頃の高級言語C++やDelphi等で作成した、マルチスレッドプログラムは、そのままでマルチコアに対応しているのでしょうか?
多くの記事やネット上の情報およびインテルのQuad coreのプロモーションを見る限り、プログラムがマルチスレッドならば、そのままマルチコアを有効に利用できるような事が書いてありますが、プログラミングにおいて、特別にマルチコアに対応するようなコードは必要ないのでしょうか?
C#用のQuad Core対応といったようなライブラリもあり、特別な処理が必要なのではという雰囲気がただよっているのですが・・・。
(ライブラリのソースまで見れたわけではないので、実態がよくわからない)
Quad Core対応のライブラリというのは、いったい何をしていると予想されますでしょうか。
4スレッドで動く事を前提に最適化されているだけなのでしょうか。
といった疑問なのですが、お暇がありましたら
ご回答いただければ幸いです。
No.1
- 回答日時:
HTはそれ以前のマルチプロセッサと違って演算器を共有していたので特別なチューニングをしないと使い物にならないほど性能が劣化する場合もありましたが、マルチコアは演算器も独立だし特別なチューニングは必須ではないと思います。
ただコア間でキャッシュを共有しているならキャッシュに気を使わないと性能が劣化しますし、4CPUともなるとバス競合が大きくなってくるのでチューニングするならバス利用率も考慮する必要がありますね。
Quad Core対応ライブラリが具体的に何をしているかは分かりませんが、チューニングするなら上記のような点を考慮することになるでしょう。
お忙しいところありがとうございます。
そういえば、キャッシュに関しては何かの記事で読んだ事があります。
なるほど。
聞いてみるといいものですね。
大変参考になりました。
No.2ベストアンサー
- 回答日時:
★アドバイス
>そのままでマルチコアに対応しているのでしょうか?
↑
対応しているが最適に対応しているかはソフトによります。
>特別にマルチコアに対応するようなコードは必要ないのでしょうか?
↑
処理によりマルチコアに見合うコードを書くことも必要でしょう。
>Quad Core対応のライブラリというのは、いったい何をしていると予想されますでしょうか。
>4スレッドで動く事を前提に最適化されているだけなのでしょうか。
↑
こちらの推測ですが、最適化というよりは次の API 関数に対応したライブラリを
用意しましたよ。という意味ではないでしょうか。
GetProcessAffinityMask
SetProcessAffinityMask
GetThreadAffinityMask
SetThreadAffinityMask
>特別にマルチコアに対応するようなコードは必要ないのでしょうか?
↑
必要な場合もある。
例えばある計算をした場合にマルチコア(4個)の場合、4つに均等に処理が割り振られます。
しかしプロセッサが切り替わるときにいろいろなデータなどの退避、復元などが起こります。
このプロセッサの切り替わりは OS が勝手に行いますが、1つのプロセッサにずっと処理を
任せたい場合は SetProcessAffinityMask、または SetThreadAffinityMask を使います。
これによりプロセッサが切り替わるときの無駄な処理を減らせる分だけ高速化します。
これがマルチコアに最適に対応したい場合です。
・単純なマルチスレッド・プログラムでは、マルチコアでも動きますが上記のような事を
考えていない分だけ最適化されていません。
上記の API 関数が Windows NT4.0 以降でサポートされているため、
Windows 95/98/Me のマルチスレッド・プログラムではマルチコアで動きますが、
最適に対応しているかは処理によって分かりません。
でもマルチコアを有効に利用してくれるでしょう。
参考URL:http://msdn.microsoft.com/ja-jp/library/cc429021 …
お忙しいところありがとうございます。
なるほど。プロセッサが切り替わる場合もあるんですね。
ライブラリにも上記のAPIはありました。
大変参考になりました。
今後どのあたりに重点を置いて調べればよいのか
明確になってきました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CPU・メモリ・マザーボード 2009年のHPのデスクトップPCはCPU交換等して活用できますか/する価値はありますか? 9 2022/09/27 16:43
- 労働相談 合意済み仕様の商品納入後における仕様変更要求への対応について 5 2023/04/19 09:41
- ビデオカード・サウンドカード ビデオカードの設定を落として使う場合の、モニター文字のぼやけについて 2 2022/08/22 22:41
- BTOパソコン メーカーパソコンと自作パソコンでソフトウェアの起動時間が違うのはなぜ? 6 2022/12/23 15:02
- Wi-Fi・無線LAN Windows10でWi-Fi6Eが使えない!?そもそもWi-Fi6Eってなんでしたっけ?教えて! 1 2023/01/27 20:48
- 国家公務員・地方公務員 公務員試験の作文対策です! 良ければ添削お願いします! ●大地震が起きた時、〇〇町職員として何をすべ 1 2022/10/01 12:32
- 仕事術・業務効率化 使用中のソフトで、インボイス制度に対応する為の作業料が30万以上。普通? 4 2023/06/15 21:26
- CPU・メモリ・マザーボード インテルCPUの世代ごとのデスクトップとノートのコア数についてこれで正しいですか?(*´ω`*) 1 2023/01/07 14:44
- デスクトップパソコン 動画編集やフォトショップ、イラストレーターなど、このスペックで問題ないですか? 7 2022/08/19 18:10
- 事件・犯罪 アクション映画によくあるシーン 4 2022/12/01 16:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Ps+のフリープレイでDestiny2の...
-
Windows Media Playerを開くと...
-
iCloudフォトライブラリ内の画...
-
Google ColaboでGUI作成
-
本格的なGUIを作るのにおすすめ...
-
scipy っていうのをいれようと...
-
標準ライブラリだけでgetch関数...
-
stricmp
-
cでなぜguiアプリが作成出来る...
-
declaration of 'index' shadow...
-
boostのアンインストールについて
-
python urlopen error について...
-
入出力ライブラリ
-
DOS上でTCP通信を行うプログラ...
-
unix-c と linux-c の違いは?
-
sleep関数
-
ラインでQRコードを受け取った...
-
【iTunes】CDをiPhoneに取り込...
-
MFCとWIN32API
-
マウスのクリックを自動で
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ps+のフリープレイでDestiny2の...
-
Windows Media Playerを開くと...
-
本格的なGUIを作るのにおすすめ...
-
python urlopen error について...
-
Google ColaboでGUI作成
-
scipy っていうのをいれようと...
-
システムコールと標準ライブラ...
-
ライブラリ作成時のグローバル...
-
強化学習の環境作成、AI。自動...
-
プログラマーで「使えない人」...
-
unix-c と linux-c の違いは?
-
C++ 標準ライブラリの実際の中...
-
マウスのクリックを自動で
-
C# EXCELセルの入力規則設定に...
-
LIBCMT.LIBをリンクしてコンパ...
-
gcc に mktemp 危険と怒られ...
-
Dreamweaverのライブラリが反映...
-
静的ライブラリから静的ライブ...
-
DLL読み込み時エラー
-
sleep関数
おすすめ情報