aparapi getGlobalId 如何工作?
How does aparapi getGlobalId works?
我是 aparapi 的初学者。我对 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);
结果是:
28.15 + 85.24 = 0.00
74.07 + 80.04 = 0.00
15.51 + 98.64 = 0.00
并且控制台中的错误是:
com.aparapi.internal.opencl.OpenCLLoader 严重:检查您的环境。无法加载 codegen 本机库或可能无法找到 opencl 本机库 (opencl.dll/opencl.so)。确保 OpenCL 在您的 PATH (windows) 或 LD_LIBRARY_PATH (linux) 中。
我的问题有什么解决方案吗?
听起来你在问两个问题。
getGlobalId 的工作原理:
getGlobalId() returns 代码当前 运行 在 GPU 中的线程索引。如果您有一个大小为 3 的数组,就像在您的示例中一样,getGlobalId() 将 return 0、1 或 2,具体取决于当前的 GPU 线程。通常,您使用此数字来访问数组中的元素,就像您在示例中所做的那样。看来您正在正确使用 getGlobalId()。
错误原因:
看来您可能没有正确安装 OpenCL,或者根本没有安装。 Aparapi 不附带 OpenCL 驱动程序。它们必须从您的独立显卡供应商的网站下载。这只有在您拥有具有 OpenCL 功能的显卡时才有效。
我是 aparapi 的初学者。我对 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);
结果是:
28.15 + 85.24 = 0.00
74.07 + 80.04 = 0.00
15.51 + 98.64 = 0.00
并且控制台中的错误是:
com.aparapi.internal.opencl.OpenCLLoader 严重:检查您的环境。无法加载 codegen 本机库或可能无法找到 opencl 本机库 (opencl.dll/opencl.so)。确保 OpenCL 在您的 PATH (windows) 或 LD_LIBRARY_PATH (linux) 中。
我的问题有什么解决方案吗?
听起来你在问两个问题。
getGlobalId 的工作原理:
getGlobalId() returns 代码当前 运行 在 GPU 中的线程索引。如果您有一个大小为 3 的数组,就像在您的示例中一样,getGlobalId() 将 return 0、1 或 2,具体取决于当前的 GPU 线程。通常,您使用此数字来访问数组中的元素,就像您在示例中所做的那样。看来您正在正确使用 getGlobalId()。
错误原因:
看来您可能没有正确安装 OpenCL,或者根本没有安装。 Aparapi 不附带 OpenCL 驱动程序。它们必须从您的独立显卡供应商的网站下载。这只有在您拥有具有 OpenCL 功能的显卡时才有效。