NUMAのように思えますが、並列プログラミングには有望です。私が間違っていないのであれば、現在の最新のCPUにはi7のようなサポートが組み込まれています。CLRがすぐにNUMAに対応する予定ですか?
すぐにNUMAを適応させるCLRを期待していますか?
編集:これは私がそれをサポートし、それを利用することを意味します。
NUMAのように思えますが、並列プログラミングには有望です。私が間違っていないのであれば、現在の最新のCPUにはi7のようなサポートが組み込まれています。CLRがすぐにNUMAに対応する予定ですか?
すぐにNUMAを適応させるCLRを期待していますか?
編集:これは私がそれをサポートし、それを利用することを意味します。
NUMAはハードウェアアーキテクチャであり、必ずしもCLRに直接採用する必要はありません。詳細については、NUMA FAQ.
を参照してください。つまり、ソフトウェアにアーキテクチャを認識させることに利点があります。 CLRチームの皆さんは、キャッシュのコヒーレンシなどの問題を認識しているようですので、最適化がいくつかあると思います。また、C#4のタスク並列ライブラリのスケジューラの設計は、NUMAアーキテクチャの優れた利点を得るために有望なようです。
ある意味では、NUMAはCLRのメモリモデルと直交しています。言い換えれば、ハードウェア/ OSにはアクセス方法があり、CLRにはそのメモリモデルの要求があり、CLRの実装者は一緒に素敵なプレイをすることができます。実際には、これは難しく、there are flaws in the current implementationです。しかし、CLRはすでにNUMAをサポートしているハードウェア上で動作しているので、すぐに「NUMAをすぐに適応させる」とはどういう意味なのでしょうか?
私が知る限り、CLRは基礎となるOSが使用するのと同じ最初のタッチメモリ割り当て戦略を使用します。仮想ページに触れる最初のスレッドは、スレッドが発生しているCPUに対応するNUMAノードにマップされます(CLRではなくOSによって考えられます)。チャンスは非常に良いので、別のCPU上のスレッドは、アプリケーションの存続期間中に後で(同じNUMAノード上にある)同じメモリを使用します。 –
NUMAをハードウェアアーキテクチャとして強調しています。並行性とCLRでthis article by Joe Duffyとなるでしょう
NUMAの場合、基本的にプロセッサーごとにメモリコントローラがあります。Intel QuickPathとAMD HyperTransportを使用しています。私の知る限り、現在マザーボードはありません。 i7の場合もPhenomの場合も、複数のCPUをサポートするでしょう。
とにかく、これはCLRとは関係がない非常に低いレベルです。システムを利用することができます。
それは当てはまりません。 NUMAを認識するかどうかは、ヒープマネージャ(またはこの場合はCLRメモリマネージャ)の責任です。 OSはおそらく、WindowsとLinuxが使用している現在のファーストタッチ戦略よりも優れた意思決定を行うための十分な情報を持っていないでしょう。 http://stackoverflow.com/questions/9439402/array-memory-managementを参照してください。 –
「キャッシュコヒーレンシの問題を認識しているようです」および「スケジューラの設計...有望です...」の参照はありますか?私はもっと読むことが大好きです。 –
FYI: "キャッシュの一貫性"はソフトウェアの問題ではありません。主流のNUMAはすべてccNUMA(キャッシュコヒーレントNUMA)なので、これはIntelとAMDによって解決されました。しかし、どのソフトウェアが解決しなければならないのかは、どこのコア/ CPU(親和性)が実行されているかに応じてスレッド/プロセスのメモリをどこに割り当てるかです。 –