Top  上へ  目次


 メニィ・コア(雑談)

 目安箱からの取り上げです。

>Ryzen Threadripper 3990Xで64コア、128スレッドという環境が出回り初めましたので発注しました。
>ときにWindowsの制限であるプロセッサー・グループという考え方を初めて知り、単純に全部のCPUコアが使えるわけではないことが浮き彫りになりました。
>As/Rはどのように対応しておりますでしょうか?


 私も報道で知りましたので、ちょっと調べてみましたが「良くわからんです」というのが本音の回答になります。
 というわけで、私に貸してくれてもいいんですよ?と言いたいところですが自宅のスペース的にも置く場所が無いので、貸してもらっても困ります(苦笑)


 ざっと見たところ、OpenMPを使っている部分に関しては、ライブラリが自動認識する「プロセスが使用できるスレッド上限」まで使っています。
 またPPLや並列STLを使っている部分はOpenMPが認識する「上限スレッド数」まで割り当てていますんで、概ねOpenMPの実装に依存すると思われます。
 少なくともプロセッサグループという概念の考慮はないので、タスクを分割する仕組みなんぞあるはずもなく、本体だけなら1個のプロセッサグループの上限までしか使えないでしょう。

 メモリや通信のI/Oの遅延を考慮しないという条件を付けるなら、抜け道は極めて単純かつ乱暴な手段が使えると思います。
 現在のモダンブラウザのようにプロセスを分割してしまえば良いだけであり、FireFox、Chrome、Edge、もっと話を広げれば秀丸エディタとかもそうですね。

 ところがプロセッサグループをまたいでCPUリソースを占有するとか、なんでプロセッサグループなんてものが存在するのか?という、考え方を全面否定するわけです。
 そもそもプロセッサグループとは、1個のプロセスがCPU全部を占有させることがないように、サーバーの安定稼働を目的としいるものであり、あえてOS側で設けている制限に過ぎません。
 だから、そんな大量のCPUを占有するなんて使い方を許しちゃダメなんじゃね?という気がします。OSのレベルで。

 暴論ですが先に挙げたソフトは、悪く言えば「これらはOSの想定以上にCPUを占有しうる危険なソフトウェア」ですし、良く言えば「大量のスレッドを(ある程度)使いこなせるソフトウェア」とも言えるでしょう。
 ハイエンドのRyzenは、Windows10の時代には早すぎる、本来のスペックを十分に発揮することが著しく困難かつ、用途もソフトも限られるハードウェアとも言えるでしょう。
 というわけで、この言葉を送りたいと思います。

 「腐ってやがる、早すぎたんだ」


 あとMicrosoft社の販売戦略に依存する話です。
 上で、ざっくりWindows10と書いちゃいましたが、Home/Pro/Enterprizeで制限の上限値が違いますし、32ビット/64ビットでも違います。
 もちろんサーバーOSなら上限値はもっと高く設定されてされています。
 ここまでくると、アプリケーションで考えるような話じゃないんですよね。

 エントリーモデルのPCまで、この辺りのコア数が落ちてくれば対応も検討しますが、その頃にはOSを取り巻く環境も変わって来ていると思います。
 いずれにせよ結論が出るまで数年は先の話でしょうね。