NVIDIA (輝達) 今天宣布推出 17.7 版 PGI 2017 編譯器與工具,協助高效能(néng)運算系統開(kāi)發(fā)者針對(duì)搭載多核 CPU 與異質化 GPU 加速器的系統,開(kāi)發(fā)出效能(néng)更高的軟體,同時大幅簡化程式設計流程。
即日釋出的 PGI 17.7 編譯器與工具的關鍵特點包括:
支援Tesla V100 GPU: PGI OpenACC 與CUDA Fortran現已支援新款NVIDIA Volta GV100 GPU,提供更多記憶體頻寬、串流多重處理器、新一代NVIDIA NVLink以及全新微架構功能(néng),堆砌出更好(hǎo)的效能(néng)與可編程功能(néng)。
OpenACC支援CUDA整合記憶體:PGI 17.7 版編譯器能(néng)利用 CUDA 整合記憶體,簡化針對(duì) GPU 加速系統程式的編譯流程。藉由開(kāi)啓簡易編譯器選項,OpenACC 即可在 CUDA 整合記憶體中配置資料的存放位置,而不需撰寫資料移動程式碼或指令。
支援多核 CPU 的 OpenMP 4.5 :初始針對(duì) OpenMP 4.5 語法與功能(néng)的支援,即可針對(duì)大多數運行于多核CPU系統中的 OpenMP 4.5 平行處理進(jìn)行編程。程式中的目标區塊(TARGET)在預設支援條件設定後(hòu),會(huì)將(jiāng)多核系統當成(chéng)目标,而PARALLEL 以及DISTRIBUTE等程式迴圈則能(néng)分散到所有OpenMP執行緒進(jìn)行平行處理。
對(duì)Fortran語法的衍生類别進(jìn)行深層複製: 透過(guò) OpenACC 指令能(néng)在CPU主控端與GPU元件記憶體之間搬移匯整或深層巢狀Fortran資料物件,包括指标型物件的巡行與管理作業。
C++ 語言方面(miàn)的改良:PGI 17.7 C++ 編譯器内含許多逐次擴增的 C++17 功能(néng),并將(jiāng)其彙整到 CUDA 9.0 NVCC 主編譯器的支援範圍内。在 LCALS 迴圈處理性能(néng)量測指标中效能(néng)平均提升了20%。
在 OpenACC 程式區段中使用 C++14 Lambdas 函數:C++ 語言的lambdas函數,能(néng)在匿名函式物件被(bèi)唿叫(jiào)或是以參數形态被(bèi)傳遞時,提供一種(zhǒng)便利的方法來定義其物件。從 PGI 17.7 版開(kāi)始,C++語言撰寫程式的 OpenACC 運算區段都(dōu)支援 lambdas 函數,包括針對(duì)不同編程模型或平台生成(chéng)對(duì)應的程式碼。 C++14 則引進(jìn)更多lambdas函數用法,尤其是多類型的 lambdas函數。上述這(zhè)些功能(néng)都(dōu)可運用在 OpenACC 程式中。
與cuSOLVER 函式庫互通:透過(guò)使用 PGI 提供的介面(miàn)模組與 PGI 17.7 内建的 PGI 版 cuSOLVER 函式庫,即可唿叫(jiào)包括 CUDA Fortran、OpenACC Fortran、C 以及 C++ 等語言的最佳化 cuSolverDN 函式。
支援 NVIDIA Tesla GPU與多核 CPU 處理的 PGI Unified Binary:使用 OpenACC 編譯出的程式不僅支援 GPU 加速,還(hái)能(néng)在多核CPU上支援平行處理。在搭載GPU的系統上運行時, OpenACC 支援區段分載以及在GPU上執行程式。當在沒(méi)有安裝GPU的系統上運行時,OpenACC 的程式區段能(néng)分散到系統中所有CPU核心上同步處理。
全新分析功能(néng)支援 CUDA 整合記憶體與OpenACC :PGI 17.7 Profiler現已加入多項全新 OpenACC 分析功能(néng),包括支援有連結 GPU 與無連結 GPU 的兩(liǎng)種(zhǒng)多核 CPU 平台,另外還(hái)新增全新的摘要(summary)檢視功能(néng),能(néng)顯示處理每種(zhǒng) OpenACC 程式碼結構所耗費的執行時間。新增的 CUDA 統合記憶體功能(néng),能(néng)追蹤出每項 CPU 分頁錯誤對(duì)應到哪些程式碼,以及這(zhè)些程式碼所涉及的資料所在位置,并支援全新 CUDA 整合記憶體分頁頻繁的置換、節流、遠端對(duì)應事(shì)件、NVLink以及其他諸多功能(néng)。
PGI 17.7的其他功能(néng)與改良包括所有支援全方位平台環境模組、預製熱門開(kāi)源函式庫與程式,以及新推出的《運用 OpenACC 執行平行運算》的教學(xué)系列影片 。