インテルコンパイラー11.1でOpenMPを使う&当然makeもする
研究室に64コアの並列マシン(32コア×2)が来てて(来ちゃってて)あるもんは使おうとしているのに、最初は
「makeってなにー!」
「shってなにー!」
「CVTってなにー!」
って感じでシックハック
OpenMP自体はすごく便利でWindows時代(思えば遠くへ来たものだ)からVC++でお世話になっていた。
CPUを100%使う喜び……。:.゚ヽ(*´∀`)ノ゚.:。+゚アハハ
といった感じで楽しんでいたのだが今度の相手はLinuxでありインテルコンパイラーでありそっち系素人の自分。
「まあ、もう素人とか言ってらんないんだけどね…」
(´;ω;`)ぶわっ
なんだかよくわからないけど自分のググリビリティーではなかなかOpenMPを使ったmakeの設定方法なんかが見つからなかった。
でも色々検索して解決したのでご報告。
結論として以下の用にmakeを書けば通ったし実行結果も並列になるようになった。
(当然プログラム自体はOpenMPで動くように書いている必要がある)
TARGET=exe CC=icc CFLAGS= -openmp -parallel -O3 -m64 LIB=-lguide -pthread OBJGROUP=main.o hoge.o fuga.o all:clean $(TARGET) $(TARGET): $(OBJGROUP) $(CC) $(CFLAG) $(OBJGROUP) -o $@ $(LIB) clean: \rm -f *.o main.o: main.c global.h hoge.o: hoge.c nantoka.h fuga.o: fuga.c global.h nantoka.hきっとつっこみどころ満載なんでしょうからつっこみ待ちです。でもこれで一応プログラムは動いているんで最低限の満足は得ました。
ただ自分みたいにわからない人がつまづいているとあれなので掲載しておきます。
わからない人は解読してみてください。わかっている人は怒って下さい。
よろしくお願いします<(_ _)>