HPCって何だろう?
ちょっと他人に説明するのに困ったので、自分なりの解釈でカキコ。
High Performance Computing の略をさすことが多く、日本語にすると高性能計算です。
並列処理の必要性
HPC を語るのに必要なものとして並列処理が挙げられます。
これは、色々日常生活に置き換えて例示されることが多いです。
私がよく使うのが「田植えの速さを競う」ことに例えることです。
- 田植えをするのに二つ方式があったとします。
- 最新鋭田植え機を1日30万円で借りてくる。
- 田植えのできる人を「お弁当とお茶を出すから」と言って16人集めてくる。
- この二つの方法のどちらが速く田植えをできるでしょうか。
という問題があったときに、どちらを選べばいいでしょうか?
例えば、田植え機が10分で田植えを終えると仮定したときに、
人間1人でその田んぼを2時間かけて植え終わるとします。
1人で2時間ですが、2人なら最速で1時間、4人なら30分、8人で15分、16人で7.5分と
16人集めたら田植え機よりも速く終えることができるようになります。
うまくいけば松花堂弁当と玉露を出しても田植え機よりも安く速い時間で終わりにすることができます。
これが並列処理の基本です。
つまり、ひとつの仕事を速くすることを目的に、仕事を細分化してそれぞれに処理を割り当てることをさします。
HPCは何でもありの世界?
では、これを現実の計算機の世界で考えてみると、
・田植え機→超高級CPUを使った計算機。
・人手→安価なCPUをたくさん使った計算機。
なのです。
ですが、HPCは金に糸目をつけず田植え機を16台集めて並列処理をしているようなものです。
しかし、田植え機同士が田んぼの中を所せましと動くとどうなるか?もちろん相当広ければ話は別ですが、
狭い田んぼに16台も田植え機が走ると衝突して大変なことになりますよね?
そこで、必要なもののひとつが、うまく動かすための指示、つまりプログラムなのです。
…と、今日はここまで。続きはまた…。