OpenACC ディレクティブによるプログラミング

OpenACC Logo  コンピューティング環境が、従来の CPU だけで処理される時代から変化しようとしています。電力効率の問題を内在しメモリ帯域幅の制約から「CPU 自体の性能向上」が期待できない中で、GPU や DSP と言った、今まで特殊用途のプロセッサを利用し、汎用的な処理を行うソフトウェア環境が整備されつつあります。ここでは、こうした異種プロセッサを活用する「ハイブリッド・コンピューティング」のソフトウェア環境の一つである、OpenACC (Open Accelerator) の使用法に関して纏めます。OpenACCは、2008 年から PGI が取り組んだ PGI Accelerator Programming Model の考え方を踏襲し、2011 年に新しく標準規格化されたものです。OpenMP のようなディレクティブ・ベース(ソース上に指示行を挿入する形態)のプログラミング手法を採用し、GPU だけに限らずアクセラレータ・デバイス上の並列プログラミングを行うための標準規格です。2015年、PGI OpenACC は、GPU上だけではなく、マルチコア CPU 上でも動作するように拡張しました。これによって、OpenACC は CPU のマルチコアから GPU 等のアクセラレータまで対応出来る標準並列プログラミングモデルとなりました。まずは、次世代の「ハイブリッド・コンピューティング」環境を OpenACC を使って試してみることから始めてください。

OpenACC 性能

最終更新 2019 年 10 月初版 2014 年 1 月 Copyright © 株式会社ソフテック 加藤

NEW TOPICS

2019年3月27日 TIPS PGI 2019 update
2018年8月17日 TIPS OpenACC 3.0ドラフト true deep copy ディレクティブを実装しました
2018年8月17日 TIPS PGI 2018 (18.7) の変更事項を纏めました
2017年11月24日 TIPS スパース行列用 Linear Solver(直接法 cuSOLVERライブラリ)の利用
2017年11月8日 TIPS cuSolverDN: 特異ベクトル計算を含めた特異値分解(by Jacobi)
2017年11月6日 TIPS cuSolverDN: 特異ベクトル計算を含めた特異値分解(by QR)
2017年10月30日 TIPS cuSolverDN: LU分解を使った線形システムソルバー(cusolverDnDgetrs)
2017年10月30日 TIPS cuSolverDN: 対称正定値行列のコレスキー分解を使ったソルバー(cusolverDnSpotrs)
2017年10月27日 TIPS C 構造体データを使用したプログラムのポーティング・チュートリアル
2017年10月13日 TIPS スパース行列の CSR フォーマット変換と CUDA Linear Solver との連携
2017年9月 30日 TIPS cuSPARSE を使用した Bi-Conjugate Gradient Stabilized(BiCGStab)
2017年9月 23日 TIPS cuSPARSE を使用した Conjugate Gradient(CG) 共役勾配法
2017年9月 4日 TIPS cuSolverDN: QR分解による直交化
2017年9月 4日 TIPS cuSolverDN: QR分解による密行列線形ソルバー
2017年9月 4日 TIPS cuSolverDN: 対称行列の固有値ソルバー
2017年8月30日 TIPS cuSPARSE example from OpenACC Host code
2017年8月30日 TIPS cuRAND example with OpenACC Fortran (乱数発生)
2017年8月30日 TIPS cuFFT example with OpenACC Fortran
2017年8月28日 TIPS OpenACC における C++クラスデータ管理
2017年8月28日 TIPS OpenACC における C 構造体データ管理
2017年8月28日 TIPS OpenACC 非構造化データ領域のデータ管理(Fortran,C,C++)
2017年8月26日 TIPS CUDA Unified Memory with OpenACC に関して
2017年8月26日 TIPS OpenACC Fortran 派生型データのマネージメント
2017年8月26日 TIPS cuSolverSP: 並列ダイレクト・スパース・ソルバー(CSR QR分解)の使い方
2017年8月22日 TIPS cuSolverDN: dense LAPACK Function (エルミートの正定値行列のコレスキー分解)の使い方

NVIDIA Free OpenACC online Course のご案内 - OpenACC のプログラミング教室

 (スライド教材、サンプルプログラムをご利用ください)

OpenACCプログラムがマルチコアCPU上でも実行出来ます(PGI 15.10以降
PGI&OpenACC at GTC2018

OpenACCを使用しているユーザ/分野は?

世界中の研究者、科学者、エンジニアは、PGI コンパイラと OpenACC から GPU を使用して、分子動力学、CFD、量子化学、天気と気候、天体物理学などを含むさまざまな分野で 200 を超える最先端のコードを高速化しています。詳細はこちらへgoogle翻訳

Google softek.co.jpを検索

1章 アクセラレータを利用したコンピューティング

2章 OpenMP と OpenACC プログラミング・モデル

3章 並列依存性とコンパイル・メッセージ

4章 OpenACC を使って、まず始めてみよう

5章 OpenACC ディレクティブの概説

6章 Accelerator Compute 構文

7章 Data 構文とその他のデータに係わる構文

8章 loop 構文

9章 その他のディレクティブ

10章 OpenACC 2.0/2.5/2.6 の新しい機能、ディレクティブ概要

10 - 1章 Accelerator Compute 領域における Procedure call

10 - 2章 OpenACC 2.0 declare data ディレクティブによるハンドリング

11章 kernels 構文と parallel 構文の違い

12章 OpenACC と CUDA C/Fortran との相互運用性

12 - 1章 OpenACC 上での CUDA Library の利用
(2017.8 New)

12 - 2章 cuSPARSE/OpenACC を利用した線形方程式の反復解法プログラム
(2017.9 New)

12 - 3章 スパース行列の CSR フォーマット変換と CUDA Linear Solver との連携(反復法 BiCGStab)
(2017.10 New)

12 - 4 章 スパース行列用 Linear Solver(直接法 cuSOLVERライブラリ)の利用
(2017.11 New)

13章 非構造化データ領域のデータ管理
(2017.8 New)

14章 C構造体、C++クラス、Fortran派生型のデータ管理
(2017.10 update)

15章 CUDA Unified Memory with OpenACC
(2017.8 New)

16章 OpenACC with MPI

ソフテック PGI テクニカルコラム

PGI 無償コンパイラ
(Linux, Windows, macOS)