- 瞭解 C/C++ 或 Fortran 語言和並行程式設計概念
- 計算機體系結構和記憶體層次結構的基礎知識
- 具有命令行工具和代碼編輯器的經驗
觀眾
- 希望瞭解如何使用 OpenACC 對異構設備進行程式設計並利用其並行性的開發人員
- 希望編寫可在不同平臺和設備上運行的可移植且可擴展代碼的開發人員
- 希望探索異構程式設計的高級方面並優化其代碼生產力的程式師
OpenACC 是異構程式設計的開放標準,它使代碼能夠在不同的平臺和設備上運行,例如多核 CPU、GPU、FPGA 等。OpenACC 提供了一個高級抽象,允許程式師使用指令和子句對代碼進行註釋,而無需修改原始代碼結構或語法。OpenACC 處理目標設備的並行化、數據移動和優化細節,同時保留代碼的可移植性和可讀性。
這種以講師為主導的現場培訓(遠端或遠端)面向希望使用 OpenACC 對異構設備進行程式設計並利用其並行性的初級到中級開發人員。
在培訓結束時,參與者將能夠:
- 設置一個開發環境,其中包含 OpenACC SDK、支援 OpenACC 的設備和 Visual Studio 代碼。
- 創建一個基本的 OpenACC 程式,用於在設備上執行向量加法並從設備記憶體中檢索結果。
- 使用 OpenACC 指令和子句對代碼進行註釋,並指定並行區域、數據移動和優化選項。
- 使用 OpenACC API 查詢裝置資訊、設置設備編號、處理錯誤和同步事件。
- 使用 OpenACC 庫和互操作性功能將 OpenACC 與其他程式設計模型(如 CUDA、OpenMP 和 MPI)集成。
- 使用 OpenACC 工具分析和調試 OpenACC 程式,並確定性能瓶頸和機會。
- 使用數據局部性、迴圈融合、內核融合和自動調優等技術優化 OpenACC 程式。
課程形式
- 互動講座和討論。
- 大量的練習和練習。
- 在現場實驗室環境中動手實施。
課程定製選項
- 如需申請本課程的定製培訓,請聯繫我們安排。
介紹
- 什麼是 OpenACC?
- OpenACC 與 OpenCL 與 CUDA 與 SYCL
- OpenACC 功能和體系結構概述
- 設置開發環境
開始
- 使用 Visual Studio 代碼創建新的 OpenACC 專案
- 探索項目結構和檔
- 編譯和運行程式
- 使用 printf 和 fprintf 顯示輸出
OpenACC 指令和條款
- 瞭解 OpenACC 指令和子句在主機和設備代碼中的作用
- 使用 OpenACC 並行指令和子句創建並行區域並指定 gang、worker 和 vector 的數量
- 使用 OpenACC 內核指令和子句創建內核區域,並讓編譯器決定並行性
- 使用 OpenACC 循環指令和子句並行化迴圈並指定迴圈分佈、摺疊、縮減和平鋪
- 使用 OpenACC 資料指令和子句管理數據行動和資料區域
- 使用 OpenACC 更新指令和子句在主機和設備之間同步數據
- 使用 OpenACC 快取指令和子句來改進資料重用和局部性
- 使用 OpenACC 例程指令和子句創建設備函數並指定函數類型和向量長度
- 使用 OpenACC wait 指令和子句同步事件和依賴項
OpenACC 介面
- 瞭解 OpenACC API 在主機程式中的作用
- 使用 OpenACC API 查詢設備資訊和功能
- 使用 OpenACC API 設定裝置編號和設備類型
- 使用 OpenACC API 處理錯誤和異常
- 使用 OpenACC API 建立和同步事件
OpenACC 庫和互操作性
- 瞭解 OpenACC 庫和互操作性功能在設備程式中的作用
- 使用 OpenACC 庫(如數學庫、隨機庫和複數庫)執行常見任務和操作
- 使用 OpenACC 互操作性功能(如 deviceptr、use_device 和 acc_memcpy)將 OpenACC 與其他程式設計模型(如 CUDA、OpenMP 和 MPI)集成
- 使用 OpenACC 互操作性功能(如 host_data 和 declare)將 OpenACC 與 GPU 庫(如 cuBLAS 和 cuFFT)集成
OpenACC 工具
- 瞭解 OpenACC 工具在開發過程中的作用
- 使用 OpenACC 工具分析和調試 OpenACC 程式,並確定性能瓶頸和機會
- 使用 OpenACC 工具(如 PGI 編譯器、NVIDIA Nsight Systems 和 Allinea Forge)來衡量和提高執行時間和資源利用率
優化
- 了解影響 OpenACC 程式性能的因素
- 使用 OpenACC 指令和子句來優化數據局部性並減少數據傳輸
- 使用 OpenACC 指令和子句來優化迴圈並行性和融合
- 使用 OpenACC 指令和子句優化內核併行性和融合
- 使用 OpenACC 指令和子句優化矢量化和自動調整
摘要和後續步驟
United Arab Emirates - GPU Programming with OpenACC
Qatar - GPU Programming with OpenACC
Egypt - GPU Programming with OpenACC
Saudi Arabia - GPU Programming with OpenACC
South Africa - GPU Programming with OpenACC
Brasil - GPU Programming with OpenACC
Canada - GPU Programming with OpenACC
中国 - GPU Programming with OpenACC
香港 - GPU Programming with OpenACC
澳門 - GPU Programming with OpenACC
台灣 - GPU Programming with OpenACC
USA - GPU Programming with OpenACC
Österreich - GPU Programming with OpenACC
Schweiz - GPU Programming with OpenACC
Deutschland - GPU Programming with OpenACC
Czech Republic - GPU Programming with OpenACC
Denmark - GPU Programming with OpenACC
Estonia - GPU Programming with OpenACC
Finland - GPU Programming with OpenACC
Greece - GPU Programming with OpenACC
Magyarország - GPU Programming with OpenACC
Ireland - GPU Programming with OpenACC
Luxembourg - GPU Programming with OpenACC
Latvia - GPU Programming with OpenACC
España - GPU Programming with OpenACC
Italia - GPU Programming with OpenACC
Lithuania - GPU Programming with OpenACC
Nederland - GPU Programming with OpenACC
Norway - GPU Programming with OpenACC
Portugal - GPU Programming with OpenACC
România - GPU Programming with OpenACC
Sverige - GPU Programming with OpenACC
Türkiye - GPU Programming with OpenACC
Malta - GPU Programming with OpenACC
Belgique - GPU Programming with OpenACC
France - GPU Programming with OpenACC
日本 - GPU Programming with OpenACC
Australia - GPU Programming with OpenACC
Malaysia - GPU Programming with OpenACC
New Zealand - GPU Programming with OpenACC
Philippines - GPU Programming with OpenACC
Singapore - GPU Programming with OpenACC
Thailand - GPU Programming with OpenACC
Vietnam - GPU Programming with OpenACC
India - GPU Programming with OpenACC
Argentina - GPU Programming with OpenACC
Chile - GPU Programming with OpenACC
Costa Rica - GPU Programming with OpenACC
Ecuador - GPU Programming with OpenACC
Guatemala - GPU Programming with OpenACC
Colombia - GPU Programming with OpenACC
México - GPU Programming with OpenACC
Panama - GPU Programming with OpenACC
Peru - GPU Programming with OpenACC
Uruguay - GPU Programming with OpenACC
Venezuela - GPU Programming with OpenACC
Polska - GPU Programming with OpenACC
United Kingdom - GPU Programming with OpenACC
South Korea - GPU Programming with OpenACC
Pakistan - GPU Programming with OpenACC
Sri Lanka - GPU Programming with OpenACC
Bulgaria - GPU Programming with OpenACC
Bolivia - GPU Programming with OpenACC
Indonesia - GPU Programming with OpenACC
Kazakhstan - GPU Programming with OpenACC
Moldova - GPU Programming with OpenACC
Morocco - GPU Programming with OpenACC
Tunisia - GPU Programming with OpenACC
Kuwait - GPU Programming with OpenACC
Oman - GPU Programming with OpenACC
Slovakia - GPU Programming with OpenACC
Kenya - GPU Programming with OpenACC
Nigeria - GPU Programming with OpenACC
Botswana - GPU Programming with OpenACC
Slovenia - GPU Programming with OpenACC
Croatia - GPU Programming with OpenACC
Serbia - GPU Programming with OpenACC
Bhutan - GPU Programming with OpenACC