2012-08-01 2 views
1

다차원 배열이 많은 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]); 
} 

같은 내가 읽은해야 할 때, 당신의 인덱스 커널에서주의 : 여기에

+0

* 다차원 배열을 일차원 배열로 변환해야합니다. * 대답은 분명합니다. 다차원 배열을 단일 차원으로 전개하고 JOCL로 전달한 다음 반환 할 때 결과를 다시 팽창시킵니다. 아니면 내가 보통하는 것처럼 명백한 것을 놓치고 있습니까? –

+0

@HighPerformanceMark 전체 배열을 복사하는 것 외에도 배열을 병합하는 다른 방법이 없다고 생각했습니다. 이 경우에는 OpenCL 커널이 대규모 루프에서 실행되고 배열 크기가 500M ~ 2GB이므로이 작업은 불가능합니다. 내가 잘못? – aaronqli

+0

JOCL이 무엇인지 모르지만 Java에는 다차원 배열이 없습니다. 배열의 배열뿐입니다. 그래서 당신은 효과적으로 편평한 배열을 가지고 있습니다. 이 플랫 배열의 각 요소는 배열입니다. –

답변

1

내가 다차원 배열이있을 때 나는 C++로 할 것입니다.

Java에서 같은 작업을 수행 할 수 없습니까?

+0

감사. 이것은 해결책입니다. 나는이 일을함으로써 cl_mem이 커널 인자에 전달되어 더 이상 호스트 포인터에 의존 할 수 없다고 추측한다. – aaronqli