どのサイトを見てもイマイチわからない。"omp.h"が早く使いたい。私も本日やっと使えるように設定することができたので、ここに書いていきます。
事前準備
まずは、この下の記事の通り、順番に行ってください。
これできちんとできましたか?できた人は、おめでとうございます。
できなかった人は、私と同じ状況だと思いますのでこのまま読み進めましょう。
Fortran compiler...no
どこでできなかったかを考えると、
のところなんですよね。ここで順調に終わったかと思いきや、no no noと見えます。
????
Fortran program が動きません? ということでFortranを入れましょう。
Fortranを入れる
Mac OS XでFortranを使う - Y. Kawamoto
↑このサイトに飛びましょう。このサイトの
の後に、「sudo port install gcc49」と行うところがあるのですが、port がないと言われますか?言われた場合は、
ここで、2.2.2まで完了させると、portコマンドが使えるようになります。
そして、また
Mac OS XでFortranを使う - Y. Kawamoto
ここに戻って最後の5番まで実行します。(これでもportが使えないという人は、一度ターミナルを閉じて、また開いてください。そうすると使えるはずです。)
最後の
gfortran -v
で反応が返ってきたらfortranを入れることに成功したことになります。おめでとうございます。あとはまた、
ここに戻って、コンパイルしてインストールまで終わらせてください。その下の項目に「pathを通す」とありますが、私の場合は、すでにpathが通っていたためこの作業は行いませんでした。
確認用プログラム
omp.h は果たして入ったのか!?確認のために、このプログラムを実行してみてください。
#include <iostream>
#include <omp.h>
#include<time.h>int main(){
clock_t t1,t2,t3,t4;
double A = 0;
double B = 0;t3 = clock();
for(int i=0; i<100; i++){
for(int j=0; j<100; j++){
B+= (i+j);
}
}
t4 = clock();
printf("%f\n",(double)(t4-t3)/CLOCKS_PER_SEC);
t1 = clock();
#pragma omp parallel for private(j)
for(int i=0; i<100; i++){
for(int j=0; j<100; j++){
A += (i+j);
}
}
t2 = clock();
printf("%f\n",(double)(t2-t1)/CLOCKS_PER_SEC);
return (0);
}
これがちゃんと動けば、使用できています!
追記
OpenMPのomp_get_thread_num()こういうのを使う場合は、
c++ -fopenmp ~~~~.cpp
としてコンパイルしてください。詳しくは、ここに疑問と解決法があります。