Выбор платформы процессора OpenCL в Compute.scala

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

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

В результате, вот часть результата 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?

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

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

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

Спасибо.

1 ответ

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

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

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

Другие вопросы по тегам