Выбор платформы процессора OpenCL в Compute.scala - PullRequest
0 голосов
/ 25 сентября 2018

Я установил 3 разных среды выполнения OpenCL на своем ноутбуке:

  • NVIDIA CUDA OpenCL на графическом процессоре
  • Intel OpenCL SDK на CPU
  • POCL (также на CPU)

В результате, вот часть результата clinfo:

$ clinfo
Number of platforms                               3
Platform Name                                   Portable Computing Language
Platform Vendor                                 The pocl project
Platform Version                                OpenCL 1.2 pocl 1.1 None+Asserts, LLVM 6.0.0, SPIR, SLEEF, DISTRO, POCL_DEBUG
...
Platform Name                                   Intel(R) OpenCL
Platform Vendor                                 Intel(R) Corporation
Platform Version                                OpenCL 1.2 LINUX
...
Platform Name                                   NVIDIA CUDA
Platform Vendor                                 NVIDIA Corporation
Platform Version                                OpenCL 1.2 CUDA 9.0.282

Теперь я хочу использовать библиотеку Scala Compute.scala для выполнения вычислений NDArray на GPU и CPU (на основе библиотеки LWJGL.

Тип устройства выбирается с помощью следующей строки импорта в начале программы:

import com.thoughtworks.compute.gpu._ // for GPU
// OR
import com.thoughtworks.compute.cpu._ // for CPU

Послебыстрый тест, мой код работает нормально с обоими типами устройств. Однако, как я должен знать, какая платформа работает при выборе ЦП? Это платформа Intel OpenCL или POCL?

Посмотрев на кодбиблиотека, я подозреваю, она просто выбирает первую платформу ЦП в списке платформ.

Итак, мои вопросы:

  • Как мне узнать, какой процессор CPUorm используется?
  • Как выбрать платформу, которую я хочу использовать в Compute.scala?
  • Возможно, необходимо «отключить» одну из платформ.Если это так, как я могу это сделать?

Спасибо.

1 Ответ

0 голосов
/ 03 октября 2018

Я нашел быстрый и грязный способ переключения между платформами: я просто переименовал файл ICD в /etc/OpenCL/vendors/, чтобы «отключить» его, чтобы была обнаружена только нужная платформа (можно проверить с помощью clinfo).

Например, $ sudo mv /etc/OpenCL/vendors/pocl.icd /etc/OpenCL/vendors/pocl.icd_ для использования intel64 (другой доступной платформы ЦП) вместо pocl, и наоборот для использования pocl вместо intel64.

Если у кого-то более чистыйи программный способ решить эту проблему, их приветствуются!

...