나는 Aparapi (https://code.google.com/p/aparapi/)를 테스트 중이며 포함 된 샘플 중 하나의 이상한 동작을 보입니다. 샘플이 "add"입니다. 그것을 구축하고 실행하는 것은 괜찮습니다. GPU를 정말 Aparapi 샘플을 추가하십시오
if(!kernel.getExecutionMode().equals(Kernel.EXECUTION_MODE.GPU)){
System.out.println("Kernel did not execute on the GPU!");
}
를 사용하는 경우 또한 테스트를 위해 다음과 같은 코드를 삽입하고 그것을 잘 작동합니다. 하지만, 숫자 512에서 배열의 크기를 변경하려고하면보다 큰 999 (예 : 1000), 나는 다음과 같은 출력이 있습니다
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();
:
여기
!!!!!!! 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!
내 코드입니다
} 제안 내가
Range range = Range.create(size, 128);
를 사용하여 크기를 지정하려고
Google 그룹에서,하지만 아무것도 변경되지 않았습니다.
현재 Java 1.6.0_43을 사용하는 Mac OS X 10.8에서 실행됩니다. Aparapi 버전이 최신 버전입니다 (2012-01-23).
내가 누락 된 항목이 있습니까? 어떤 아이디어? 사전
답변 해 주셔서 감사합니다. 나는 Range.create()에 128을 버렸고 모든 것이 128의 배수를 'size'변수로 사용하여 잘 동작합니다. Aparapi는 그룹 크기를 내부적으로 선택한다고 말했 읍니다. 그룹 크기는 범위의 요소 여야합니다. 그렇다면 왜 코드가 크기 = 999를 선택 하는가?999 % 128 = 103이지만 오류없이 GPU에서 실행됩니다. 항상 내 지역 크기의 배수를 사용해야합니까? localsize 값을 어떻게 찾을 수 있습니까? 고마워요. – besil
Range.range (크기)의 단일 인수 버전 만 사용하십시오. Aparapi는 가장 큰 공통 요소를 선택합니다. 999의 경우 9 * 111과 같아야합니다. Aparapi가 Range.range (X, 128) 팩토리 메소드로 localsize 128을 사용하도록 제어하고 강요하는 것을 선택합니다. 여기 Aparapi는 귀하의 요청을 '존중합니다'. 그러나 OpenCL은 (당연히) 런타임시 요청을 거부하고 실행에 실패합니다. MacOSX에는 잘못된 그룹 크기를보고하는 장치 (GPU) 관련 문제에 대한 다양한 보고서가있었습니다. 당신이 이걸 때리고 있다고 확신하지 못합니다. 나는 Mac OSX를 가지고 있고 코드는 잘 작동한다. – gfrost