C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

Intel® Parallel Studio XE 2011とハードチーズと謎の高級中国茶と

インテルが「インテル® ソフトウェア開発製品を使って、アプリケーションを並列化、高速化しましょう!キャンペーン」とか言う事で2012年3月30日までキャッキャウフフなノベルティが貰えるよとかやっていた(・∀・)

いや・・・、そんなノベルティに釣られたクマーできるほどインテルさんはお安くなくて、長期熟成したハードチーズがホールで幾つも買えちゃうほどえくすぺんしぶなので、そんなにお気軽には商用ライセンス買えませんけど。

まあ、良いものはお高い。当然の事です。本当に良いものなのかは、計算時間が掛かるサイエンスなプログラムなんかでは有意でしょう。

例えば通常よく訓練されたC++erが書いたコードを5%、いや3%でも高速化しようとなれば神憑ったC++erと場合によっては変態的な邪悪なフォース唯一神アセンブラのお力も必要になるやもしれません。しかし、コンパイラーを換えるだけで計算時間が3%短縮できるとなれば、必要なのはICCを買うお金だけです。

実際にはみなさんそんなブルジョワジーではないですね?チーズをホールで買ったり、ダージリンの初物や謎の高級中国茶に手を出したりしないといけませんし、最低でも…(ry ・x・

さてまあ、体験版で試すという手もありますが、それはそれで30日間どうのこうの再配布あばばとか面倒臭いですね。そこで、

はい、こんなものがあります。C++er技術的な興味非商用(図らずも)コードを書いて遊ぶ事が嗜みの1つという方も多いと思います。「ICCとかゆーのすっごいらしーにゃー、でも、お高いんでしょう?」はい、そんな時にはコレですよ、オクサン!これでハードチーズも謎の高級中国茶も心置き無く買えますね!(・∀・)

 

f:id:USAGI-WRP:20120307133919p:plain

どう見ても for Linuxしかありませんが、一般的なC++erはLinuxくらい普通に使いこなしていると思われるので特に困ったりしませんネ!

 

さてさて、それはさておき、3%の高速化なんて、と思うかも知れません。実際に東方シリーズがMSVC++ではなくICCでビルドされたとしてもエンドユーザーには恩恵よりも些細ではあるがデメリット(ICCのランタイムはWindowsに標準添付されないなど)の方が大きいかもしれない。仮にCPUの計算がボトルネックになっているゲームがあり、ある環境で30.0FPSしか性能発揮できていなかったとして、3%高速化される効果は30.0[frames/sec]×(1.00+3.33e-2)[-]=31.0[frames/sec]、つまり1[FPS]上がる程度(´・ω・`)

(※一部のFPSゲーマーには1フレームの性能差があれば余裕で勝てる( ー`дー´)キリッかもしれませんが・w・;)

しかし、大域照明レンダリングによる美しい3DCGアニメーションビデオを作ろうとか、そういった事で3%の高速化は大きな効果があります。例えば、算術平均で180[sec/frame]=3.00[min/frame]のレンダリング時間を要し、60.0[frames/sec]=1.80e+3[frames/min]で30.0分間([min])のアニメーションビデオを作りたいとしましょう。すると、1.80e+3[sec]×1.80e+3[frames/min]×3.00[min/frame]=3.24e+5[min]=5.40e+3[hours]=2.25e+2[days]=7.50[month]、という事で7ヶ月半を要する事になります。

この時、他のボトルネックだとかはさておき全体で3%高速化されたと仮定すると、225日間も掛かっていた計算なんと6日と18時間も速く終わる…。速く…終わる…。

・・・。

まあ、とにかく速いは正義って事で( ・`д・´)

(※ICCの実際のところはコンピュータビジョニングなどいわゆるOpenCV使ったりする様な事だとか、動画からの3次元形状復元など、わりと何気に最初に挙げたゲームでの例にもしかして近いんじゃってところで使われて居たり、ケミカル屋さんが分子のコンポジットを計算したり粒子挙動をシミュレーションする多体問題を解くのに使ったりする例が多いと思います。)