*プログラムに怪しいところがあったので記事を書き直します
プログラム時間を測るのに、ググって出てきたこれを使おうとしましたが、秒単位のものを測る時に使うものだそうです。
正しい時間測れてないです。秒で終わるはずがなかったんだ……
というわけで、このプログラムを使い、timeで測定した結果をどん!
4096次正方行列 8192次正方行列
引数なし -O3 引数なし -O3
real 0m2.765s 0m4.383s 2m30.874s 2m48.262s
user 0m1.935s 0m1.940s 0m3.273s 0m1.715s
sys 0m0.694s 0m1.512s 0m41.842s 0m45.441s
変化がとても些細だ……そして計算できてしまったけど問題ないのだろうか。
openMPの利用でどれだけ変わりますかねー……



課題のソースプログラム
単純に行列の掛け算を計算するだけのプログラムです。
ワーソンナノ学部1年デモ書ケルワー。
デモナンカオカシイワー。

4096次正方行列

すごく・・・大きいです・・・

汚いコピペすまん。でもほんとでっかい行列。要素を簡単にしてあるだけマシに見えます。
多分この課題を達成するためにやるべきこと。
・行列はstatic double型で宣言
・コンパイルに-O3を付ける
・openMPの利用
ひとまず上ふたつはやりました。
static変数にするかどうかで、セグメントエラーの有無が変わりました。staticにしないとセグメントエラーします。なんでや。正直分かってません。
-O3はゼロじゃなく大文字のオーです。これもゼミで「こうすると変わるよ」って言われただけで理由分かってません。
ちなみに、static型にした上で、コンパイルの際-O3を付けるか付けないかで起こる、2048次正方行列のときの実行時間の差は約2倍。

4096次正方行列実行時間はもうこれ失敗したのかってくらい放置していました。staticで-O3でしたとも。
2048次正方行列のときの10倍の時間がかかりました。
こんなことになってしまうと、openMPに手を付けたいのはやまやまですが、まーだ終わってないしとっかかりがつかめていない課題を少しでも進めるために、一旦置いておきます。

悲しいかなOpenGLに続いて尻切れトンボだ。


*追記
なんとびっくり同条件で8192次正方行列にすると、4096の時の20倍の時間がかかりました。絶対openMP必要だこれ。
openMPはforループなどを並列処理できるらしいです。使い方がまだ分からないから後日がんばる。




戻る