Java aparapi getGlobalId是如何工作的?
我是Aparabi的初学者。我对getGlobalId有问题。我的代码非常简单。我只想添加两个数组,但结果是错误的。我调试了程序,发现getGlobalId没有使用正确的值Java aparapi getGlobalId是如何工作的?,java,eclipse,secondary-indexes,aparapi,Java,Eclipse,Secondary Indexes,Aparapi,我是Aparabi的初学者。我对getGlobalId有问题。我的代码非常简单。我只想添加两个数组,但结果是错误的。我调试了程序,发现getGlobalId没有使用正确的值 My code is: int size = 3; final float[] A = new float[size]; final float[] B = new float[size]; for (int i=0; i<size; i++) { A[i] =
My code is:
int size = 3;
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[] result = new float[size];
Kernel kernel = new Kernel() {
@Override
public void run() {
int i = getGlobalId();
result[i] = A[i] + B[i];
}
};
Range range = Range.create(result.length);
kernel.execute(range);
我的代码是:
int size=3;
最终浮动[]A=新浮动[大小];
最终浮动[]B=新浮动[尺寸];
对于(inti=0;i来说,听起来你在问两个问题
getGlobalId的工作原理:
getGlobalId()返回代码当前在GPU上运行的线程的索引将根据当前GPU线程返回0、1或2。通常使用此数字访问数组中的元素,就像您在示例中所做的那样。看起来您正确使用了getGlobalId()
错误原因:
看起来您可能没有正确安装OpenCL,或者根本没有安装。OpenCL驱动程序没有随Aparabi提供。它们必须从您个人的图形卡供应商网站下载。这只有在您有具有OpenCL功能的图形卡时才起作用。谢谢您的回答。我在哪里可以下载OpenCL。我是using ubuntu。我想通过控制台安装它。我建议您访问图形卡供应商的网站,搜索特定硬件的OpenCL驱动程序。或者,我在另一个论坛上发现了这一点:sudo apt get install nvidia OpenCL dev
,但这仅适用于nvidia GPU。