gpt4 book ai didi

macos - Aparapi 添加示例

转载 作者:行者123 更新时间:2023-12-02 22:05:59 27 4
gpt4 key购买 nike

我正在研究 Aparapi ( https://code.google.com/p/aparapi/ ),其中一个样本有一个奇怪的行为。示例是第一个,“添加”。构建并执行它,没问题。我还放了下面的代码,用于测试是否真的使用了GPU

if(!kernel.getExecutionMode().equals(Kernel.EXECUTION_MODE.GPU)){
System.out.println("Kernel did not execute on the GPU!");
}

而且效果很好。但是,如果我尝试将数组的大小从 512 更改为大于 999 的数字(例如 1000),则会得到以下输出:

!!!!!!! clEnqueueNDRangeKernel() failed invalid work group size
after clEnqueueNDRangeKernel, globalSize[0] = 1000, localSize[0] = 128
Apr 18, 2013 1:31:01 PM com.amd.aparapi.KernelRunner executeOpenCL
WARNING: ### CL exec seems to have failed. Trying to revert to Java ###
JTP

Kernel did not execute on the GPU!

这是我的代码:

  final int size = 1000;

final float[] a = new float[size];
final float[] b = new float[size];

for (int i = 0; i < size; i++) {
a[i] = (float)(Math.random()*100);
b[i] = (float)(Math.random()*100);
}

final float[] sum = new float[size];

Kernel kernel = new Kernel(){
@Override public void run() {
int gid = getGlobalId();
sum[gid] = a[gid] + b[gid];
}
};

Range range = Range.create(size);
kernel.execute(range);

System.out.println(kernel.getExecutionMode());
if (!kernel.getExecutionMode().equals(Kernel.EXECUTION_MODE.GPU)){
System.out.println("Kernel did not execute on the GPU!");
}

kernel.dispose();

我尝试使用指定大小

Range range = Range.create(size, 128);

按照 Google 群组中的建议,但没有任何改变。

我目前在 Mac OS X 10.8 和 Java 1.6.0_43 上运行。 Aparapi 版本是最新的 (2012-01-23)。

我错过了什么吗?有什么想法吗?

提前致谢

最佳答案

Aparapi 继承了 OpenCL 的“网格样式”实现。当您指定一个执行范围(比如 1024)时,OpenCL 会将这个“范围”分成大小相等的组。可能是 4 组 256,或者 8 组 128。

组大小必须是范围的一个因素(所以 assert(range%groupSize==0))。

默认情况下,Aparapi 在内部选择组大小。

但是您选择完全指定要使用的范围和组大小

范围 r= Range.range(n,128)

您有责任确保 n%128==0。

从错误来看,您似乎选择了 Range.range(1000,128)。

遗憾的是 1000 % 128 != 0 所以这个范围将失败。

如果你指定

范围 r = Range.range(n)

Aparapi 将通过找到 n 的最大公因数来选择有效的组大小。

尝试删除 128 作为第二个参数。

加里

关于macos - Aparapi 添加示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082235/

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