{事情により、再構築中}神奈川工科大学 情報工学科 山本研究室
 

マルチコアにも目を向けよう!(2016-6-28)

このタイトルですが、各自の使っているマシン(パソコン)の性能にあまり関心が向いていなように思われます。情報工学科であれば、こちらにも時々目を向けたいものです。
今回は、その一例として、現在の3年生(2014年度入学生)が、購入したノートPC(Panasonic)の内部性能の一端に触れてみましょう。

問題は、下図のように、パスの探索です。詳しいことは略しますが、上から下って赤い亀の持っているボーナス点をできるだけ多く獲得することです。最大の重みを持つパスを検出することになります。



さて、その解法プログラムですが、Javaで書きます。Java SE8です。そうです。Lambda式と並列Streamがその威力をいかんなく発揮します!最も素晴らしい点は、逐次版でも並列版でもただ1点を除き、全く同一ソースコードだということです。ただ1点というのは、ストリームに対して.parallelという中間ストリーム操作を入れるか否かなのです。
下図のとおり、逐次版では、4つのCPUも使われてはいますが、このプログラムの処理を(荒っぽく言えば)単に切り替えて実行しているようにしか見えません。一方、並列版では、見事に、4つのCPUが同時に完全燃焼しています!
この素晴らしさを味わってみようではありませんか!