2017年1月14日 星期六

安裝 OpenCL 程式框架 (七):AMD GPU - Mesa

在前文〝安裝 OpenCL 程式框架 (五):AMD CPU〞中提到,AMD 提供的顯示卡驅動程式都沒有支援 OpenCL 程式框架(至少在最近幾版的 Fedora 中是如此),只有 CPU 可以測試 OpenCL。
  最近在一個裝載 AMD 的 APU 處理器的電腦中,試著測試 OpenCL 程式框架。其中的 CPU 部份,依前文的步驟可以順利安裝 OpenCL 程式框架。不過,APU 中的 GPU 部份卻無法成功安裝,主要原因是 AMD 提供的驅動程式,不能成功安裝在最近幾版的 Fedora 中。
  找了一些資料,發現透過社群提供的 Mesa 函式庫,可以提供 OpenCL 程式框架。以下就是整個安裝、測試的整理。

一、安裝 OpenCL 程式框架

Mesa 函式庫是一個支援 3D 繪圖的函式庫,在安裝 Fedora 時通常會自動安裝這個函式庫,以提供顯示卡的 3D 繪圖功能。而基於 Mesa 的 OpenCL 執行時函式庫 mesa-libOpenCL,則是在 Mesa 函式庫上,再提供 OpenCL 程式框架,供執行 OpenCL 程式執行時縺結使用。
  由於 mesa-libOpenCL 已收錄在 Fedora 的套件資料庫中,用 DNF 就可以直接安裝。在「終端機」中先切換為 root 再下安裝命令,
[root@A10 ~]# dnf install mesa-libOpenCL
也會同時安裝 clang-libs libclc opencl-filesystem 這幾個套件。

二、查詢 OpenCL 程式框架

安裝後,就用 CLInfo 查詢安裝結果,
[SiB@A10-R7 ~]# clinfo
Number of platforms1
 Platform NameClover
Platform VendorMesa
Platform VersionOpenCL 1.1 Mesa 13.0.3
Platform ProfileFULL_PROFILE
Platform Extensionscl_khr_icd
Platform Extensions function suffixMESA



Platform NameClover
Number of devices1
Device NameAMD KAVERI (DRM 2.46.0 / 4.8.16-300.fc25.x86_64, LLVM 3.8.0)
Device VendorAMD
Device Vendor ID0x1002
Device VersionOpenCL 1.1 Mesa 13.0.3
Driver Version13.0.3
Device OpenCL C VersionOpenCL C 1.1
Device TypeGPU
Platform ProfileFULL_PROFILE
Max compute units8
Max clock frequency866Mz
 ·  ·  ·  ·  ·  ·
Address bits64, Little-Endian
 ·  ·  ·  ·  ·  ·
Device Extensionscl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_fp64
 ·  ·  ·  ·  ·  ·
NULL platform behavior
clGetPlatformInfo(NULL, CL_P ...)Clover
 ·  ·  ·  ·  ·  ·
ICD loader properties
ICD loader NameOpenCL ICD Loader
ICD loader VendorOCL Icd free software
ICD loader Version2.2.10
ICD loader ProfileOpenCL 2.1
由上例結果中可以看到,AMD 的 A10 中有 8 個 GPU 以 866Mz 運行。

後記:

  • 其它 OpenCL 程式框架的安裝,請參考〝OpenCL 程式框架與 CLInfo〞。
  • 目前尚未在 AMD 的顯示卡測試過,若有讀者測過請留言,將不勝感激。

已測試版本:

  • Fedora: 25, 24
  • AMD A10-7890K APU

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)