感謝您提交詢問!我們的一位團隊成員將在短時間內與您聯繫。
感謝您提交預訂!我們的一位團隊成員將在短時間內與您聯繫。
課程簡介
介紹
- 什麼是 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 指令和子句優化矢量化和自動調整
摘要和後續步驟
最低要求
- 瞭解 C/C++ 或 Fortran 語言和並行程式設計概念
- 計算機體系結構和記憶體層次結構的基礎知識
- 具有命令行工具和代碼編輯器的經驗
觀眾
- 希望瞭解如何使用 OpenACC 對異構設備進行程式設計並利用其並行性的開發人員
- 希望編寫可在不同平臺和設備上運行的可移植且可擴展代碼的開發人員
- 希望探索異構程式設計的高級方面並優化其代碼生產力的程式師
28 時間: