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 性能

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

NEW TOPICS

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

PGI Compiler Roadmap for Multi-platform

PGI Roadmap2

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)