最近どうっすか?

コンピュータをメインに技術系の話題について書いていけたらいいなぁ。

並列計算

結構前にOpenMPの説明をセミナーだったかな?で聴いたときに思ったのだけど。。。

CPUの各コアの負荷状態が均等な場合であれば、CPUのコア数だけスレッドを作って均等に回すというのはよく分かるのですが、マルチスレッド化されていないプログラムが1つのコアだけを握りしめて高負荷になっていて、実際に使い物になるコア数は全コア数より1個少ない状態であった場合でも、コア数分だけのスレッドを作って回すんだとしたらパフォーマンスに影響しないの?

とか思ってしまいました。
まぁ、よく分からないし、自分で調べるのも大変だし、仕事でマルチスレッドのプログラム書くわけじゃないし、と思って疑問を持ったままにしていました。

そんなことを「ふと」思い出してしまい、OpenMPのCPUのスケジューリングってどうなってるんだろう?と検索してみることにしました。

どうやら、スケジューリングには、static, dynamic, guided, runtimeと、いくつもの方式が選べるようでした。
各々の動作やメリットは調べきれていませんが、いろいろなケースによってプログラムの中でスケジューリング方式を記述するようになっているみたいです。

もうちょっと時間があれば真面目に調べてみようと思いました。

ではでは。