スパコンで約2時間36分かかったという、5×5の魔方陣の全解列挙をXeon Phiで試す

スパコン」ではなく「パソコン」だったらどうなのだろう、と思って試してみたら、10分でした(Core i7 4930K)

というのをXeon Phiで試してみたら5分でした

オリジナルは、YABUKI Taroさんのスパコンで約2時間36分かかったという、5×5の魔方陣の全解列挙を、パソコンで試す(C++)です。
記事中でも触れられている通り、Xeon Phiだと簡単なのか、という点があったので、Xeon Phi普及委員会兼、日本で一番Xeon Phiを無駄にしている系男子(*Yamada System調べ) の山田がひと肌脱ぎました
現在稼働中のYS10'号機のお披露目だ!とばかりに走らせます

コードは、YABUKIさんのところで公開されているものをcloneしてきました
時間計測部分のみをclockからgettimeofdayに置き換えている以外はオリジナルのままです
# gcc, iccだとclockは総和取っちゃうので、あまりにも巨大な数字が出てきて死ぬほどビビりました
# あと、Visual Studioだとclockは総和しないんですね、と手元で実験してみたらそうだったっぽいので驚いている今日この頃です

なーんにも考えず以下

$ icc magicsquare.cpp -O3 -openmp -lm -mmic
$ scp a.out mic0:~/

で、Xeon Phi側にバイナリを送って、必要になるOpenMPのランタイムライブラリを送って、sshXeon Phiにログインして

time ./a.out
num of threads: 228
...
num of solution: 275305224
time for count: 291.291 sec.

real    4m51.470s
user    1099m41.550s
sys     1m0.090s

はい。4930K比で約2倍となりました
魔法陣の解法っていうのは並列度が非常に高いので、こういうMassive Parallelなプロセッサで走らせるとキモチイイですね
このXeon Phiは3xxx系なので、実は5xxx系だともう少し速くなります。あと12スレッドぶんぐらい

……という話を昼ご飯を食べながら先輩と話してたら、
Xeon Phi使ったら1分にしないとダメじゃね?(いい笑顔」
と言われたので、ちょっと最適化します……