gpt4 book ai didi

installation - OpenCL 分发

转载 作者:行者123 更新时间:2023-12-04 14:50:20 32 4
gpt4 key购买 nike

我目前正在为一组非常异构的计算机开发 OpenCL 应用程序(具体使用 JavaCL)。为了最大限度地提高性能,如果 GPU 可用,我想使用它,否则我想回退到 CPU 并使用 SIMD 指令。我的计划是使用向量类型实现 OpenCL 代码,因为我的理解是这允许 CPU 对指令进行向量化并使用 SIMD 指令。

然而,我的问题是关于使用哪个 OpenCL 实现。例如。如果计算机有 Nvidia GPU,我认为最好使用 Nvidia 的库,但如果没有可用的 GPU,我想使用 Intel 的库来使用 SIMD 指令。

我如何实现这一目标?这是自动处理的还是我必须包含所有库并实现一些逻辑来选择正确的库?感觉这是一个比我面临的问题更多的人。

更新
在测试了不同的 OpenCL 驱动程序之后,这是我目前的经验:

  • 英特尔 : 当 JavaCL 试图调用 JVM 时使 JVM 崩溃。重新启动后,它没有使 JVM 崩溃,但也没有返回任何可用的
    设备(我使用的是 Intel I7-CPU)。当我编译
    OpenCL-code离线它似乎能够做一些
    自动矢量化,因此英特尔的编译器看起来相当不错。
  • 英伟达 :拒绝安装他们的 WHQL 驱动程序,因为它声称我没有 Nvidia 卡(那台计算机有 Geforce GT 330M)。什么时候
    我在另一台计算机上尝试过,我设法一直到
    创建一个内核,但在第一次执行时它使驱动程序崩溃
    (屏幕闪烁了一会儿,Windows 7 说它必须
    重新启动驱动程序)。第二次执行导致蓝屏
    死亡。
  • AMD/ATI :拒绝安装 32 位 SDK(我尝试过,因为我将使用 32 位 JVM)但 64 位 SDK 运行良好。这是唯一的
    我设法执行代码的驱动程序(重新启动后
    因为起初它在编译时给出了一个神秘的错误消息)。
    但是它似乎无法进行任何隐式矢量化
    因为我没有任何 ATI GPU 我没有得到任何性能
    与 Java 实现相比增加。如果我使用向量类型,我
    不过可能会看到一些改进。

  • TL;DR 似乎没有一个驱动程序已准备好用于商业用途。我可能会更好地使用编译为使用 SSE 指令的 C 代码创建 JNI 模块。

    最佳答案

    首先尝试了解主机和设备:http://www.streamcomputing.eu/blog/2011-07-14/basic-concept-hosts-and-devices/

    基本上,您可以完全按照您的描述进行操作:检查某个驱动程序是否可用,如果没有,请尝试下一个。你首先选择什么完全取决于你自己的喜好。我会选择我测试过我的内核最好的设备。在 JavaCL 中,您可以使用 JavaCL.createBestContext 和 CLPlatform.getBestDevice 选择最快的设备,在此处查看主机代码:http://ochafik.com/blog/?p=501

    知道 NVidia 不通过其驱动程序支持 CPU;只有 AMD 和 Intel 有。还针对多个设备(比如 2 个 GPU 和一个 CPU)有点困难。

    关于installation - OpenCL 分发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7751019/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com