前回に引き続き、拡散方程式のプログラムを例として、OpenACCの使い方を学びます。 コンパイラのメッセージを確認しよう図1:拡散現象のシミュレーションの疑似OpenACCコード 図1は前回作成した疑似コードです。 なお、実際のコードはこちらよりダウンロードできます。 では、PGIコンパイラ (ver. 19.10) を用いて、このプログラムをコンパイルしてみましょう。 コンパイル時に出力されるメッセージが図2です。 図2:PGI compilerによるコンパイルコマンドと、コンパイル時に出力されるメッセージ 実は、OpenACCのプログラムを実装する上で非常に重要なのが、コンパイル時に出力されるメッセージの確認 です。 これにより、OpenACCプログラムが意図したとおり並列化されているかどうかを確認します。 順番に説明します。 まずは1行目のコンパイルコマンドについて。
次に、2行目以降のコンパイラが出力するメッセージについて。
図3:data指示文を入れ子にした場合(左)と入れ子にしない場合(右)。
図4:PGI compilerが自動で行ったループの分割戦略 … おわかりいただけましたでしょうか。
今回は、コンパイラが出力するメッセージを元に、内部的にはどのようなことが行われているのかについて触れました。 これらはCUDAで実装する場合にはすべて自分で行う必要があるものです。 従って、ゆくゆくは理解した方が良いことではあります。 意図したとおりに並列化されているか確認するため、またOpenACCについての理解を助けるためにも、コンパイラのメッセージを必ず確認しましょう。 < 1ヵ月間有効のスパコンお試しアカウント > 東京大学情報基盤センターでは、教育の一環として、制限はあるものの一ヵ月の間有効なスパコンアカウントを提供しています。 現在3つのスパコンが運用されていますが、そのうちReedbushと呼ばれるスパコンには、一世代前のものではありますがGPUが搭載されていて、OpenACCを使える環境も整っています。 自分でどんどん自習したい場合は、ご利用を考えてみてください。 トライアルアカウント申し込みページ https://www.cc.u-tokyo.ac.jp/guide/trial/free_trial.php < 過去の講習会の資料やプログラム公開中 > 東大センターが行った過去のOpenACCに関する講習会の資料やプログラムも公開されていますので、自習する場合にはぜひご利用ください。 講習会ページ ※オンライン講習会 定期開催中! https://www.cc.u-tokyo.ac.jp/events/lectures/ 講習会で用いているプログラム https://www.dropbox.com/s/z4fmc4ibdggdi0y/openacc_samples.tar.gz?dl=0 コメントはクローズされています。
|
著者東京大学 |