다차원 배열이 많은 Java로 작성된 프로그램이 있습니다. JOCL (OpenCL)을 사용하여 병렬 처리하려고하지만 다차원 배열을 OpenCL에 전달하기 전에 단일 차원 배열로 변환해야합니다.Java : 다차원 배열을 단일 차원 배열로 변환 또는 참조
1 차원 배열을 사용하여 전체 프로그램을 다시 작성하는 것 외에 다른 해결책이 있습니까?
for (int i = 0 ; i < n ; i++) {
queue.enqueueWriteBuffer(buffer, CL_FALSE, i*m*sizeof(int), m*sizeof(int), data[i]);
}
같은 내가 읽은해야 할 때, 당신의 인덱스 커널에서주의 : 여기에
* 다차원 배열을 일차원 배열로 변환해야합니다. * 대답은 분명합니다. 다차원 배열을 단일 차원으로 전개하고 JOCL로 전달한 다음 반환 할 때 결과를 다시 팽창시킵니다. 아니면 내가 보통하는 것처럼 명백한 것을 놓치고 있습니까? –
@HighPerformanceMark 전체 배열을 복사하는 것 외에도 배열을 병합하는 다른 방법이 없다고 생각했습니다. 이 경우에는 OpenCL 커널이 대규모 루프에서 실행되고 배열 크기가 500M ~ 2GB이므로이 작업은 불가능합니다. 내가 잘못? – aaronqli
JOCL이 무엇인지 모르지만 Java에는 다차원 배열이 없습니다. 배열의 배열뿐입니다. 그래서 당신은 효과적으로 편평한 배열을 가지고 있습니다. 이 플랫 배열의 각 요소는 배열입니다. –