Java aparapi 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] =

我是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] = (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。