【问题标题】:Selecting OpenCL CPU platform in Compute.scala在 Compute.scala 中选择 OpenCL CPU 平台
【发布时间】:2018-09-25 08:37:20
【问题描述】:

我在笔记本电脑上安装了 3 个不同的 OpenCL 运行时:

  • GPU 上的 NVIDIA CUDA OpenCL
  • CPU 上的英特尔 OpenCL SDK
  • 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

现在我想使用Compute.scala Scala library 在 GPU 和 CPU 上执行 NDArray 计算(基于 LWJGL 库。

使用程序开头的以下导入行选择设备类型:

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

经过快速测试,我的代码在两种设备类型上都运行良好。但是,在选择 CPU 时,我应该如何知道运行的是哪个平台?是英特尔 OpenCL 平台,还是 POCL?

通过查看库的代码,我怀疑它只是选择了平台列表中的第一个 CPU 平台。

所以我的问题是:

  • 我如何知道正在使用哪个 CPU 平台?
  • 如何选择要在 Compute.scala 中使用的平台?
  • 也许有必要“禁用”其中一个平台。如果是这样,我该怎么做?

谢谢。

【问题讨论】:

    标签: scala opencl cpu lwjgl pocl


    【解决方案1】:

    我找到了一种在平台之间切换的快速而简单的方法:我只需将/etc/OpenCL/vendors/ 中的 ICD 文件重命名为“禁用”它,这样就只会检测到我想要的平台(可以通过clinfo 进行检查) )。

    例如$ sudo mv /etc/OpenCL/vendors/pocl.icd /etc/OpenCL/vendors/pocl.icd_ 使用 intel64(另一个可用的 CPU 平台)而不是 pocl,反之亦然使用 pocl 而不是 intel64。

    如果有人有更简洁和程序化的方式来解决这个问题,欢迎他们!

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 2012-04-12
      • 1970-01-01
      • 2016-02-21
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多