ついでにOpenMPのライブラリを入れてみたので、どのくらいの性能が出るものなのかと思い、試してみました。
自分の環境では、後述するテスト方法で、実行時間が約85%に減りました。
しかし、プロセッサによって異なると思うので、みなさんにも実験に協力してもらいたいと思います。
実験に使用するのは、エラトステネスの篩により素数一覧を求めるプログラムです。
【検証方法】
1.添付したファイルをダウンロードする
●Windowsの場合
2.コマンドプロンプトを開き、解凍したフォルダに移動する
3.「run (整数)」というコマンドを打ち込む
整数は、できれば26~31までを全て試してもらいたいです。
実行すると、例えば次のような表示になります。
D:\(パス省略)>run 27
Normal mode
max: 134217728
Elapsed time: 5445 ms
OpenMP mode
max: 134217728
Elapsed time: 4715 ms
4.与えた整数と、Normal mode、OpenMP modeそれぞれのElapsed timeの値をセットにして報告してください。
●Windows以外の場合
2.sourceフォルダの中のソースコードを、適切にコンパイルする。
OpenMPを使用するバイナリと、使用しないバイナリの2通りを作ってください。
使用したコンパイラを書いてくれるとありがたいです。
3.それぞれのバイナリを、「(ファイル名) (整数)」というコマンドで実行する。
整数と出力の説明は上と同じです。
Normal modeとOpenMP modeは、作成した2通りのバイナリそれぞれに割り当てられます。
4.与えた整数と、Normal mode、OpenMP modeそれぞれのElapsed timeの値をセットにして報告してください。
【必須項目】
・計測された値(与えた整数、Normal modeのElapsed time、OpenMP modeのElapsed timeの組)
・OSの種類(Windows Vista SP2 32ビット、Windows 2000 SP4、Vine Linux 5.1など)
・CPUの種類と周波数
【推奨項目】
・メモリ容量
・自分でソースコードをコンパイルした場合、使用したコンパイラの種類
・その他報告した方がいいと思う情報
【注意】
・与える整数の値が大きいと、環境によっては非常に長い時間がかかります。
・整数が最大の31の時、約256MBのメモリを使用します。
メモリが足りない場合、致命的な事態になる可能性があります。万が一のことがあっても、責任は負いません。
ご協力よろしくお願いします。
【自分の結果】
OS:Windows Vista Home Premium SP2 32ビット
CPU:Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz 2.10GHz
メモリ:2.00GB
コンパイラ:gcc version4.7.0
計測結果(csv)