저는 OpenCL을 처음 사용하는데 문제가 있습니다. 내 프로그램에서 2 차원 배열이 필요합니다. 그래픽 카드에 1 차원 배열을 복사했습니다. 1 차원 배열이 필요 없기 때문에 shoudl이 모든 needes 값을 초기화하는 메서드를 작성했습니다. 2 차원 배열은 __global이어야합니다 ---이 배열에 대한 읽기 작업 만 있습니다. 여기OpenCL 전역 배열
내 코드입니다
typedef struct{
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char a;
} ColorRGBA;
__constant ColorRGBA array[4096];
__kernel void marchingCubes(__global unsigned char* output)
{
// DO SOMETHING WITH array
}
__kernel void initValues(__global unsigned char* input){
// FILL array MAKE 1-dimensional to 2-dimensional (4096,4)
array = (ColorRGBA*) input;
}
의 OpenCL 프로그램을 컴파일, 나는 다음과 같은 오류 얻을 :
:28:8: error: array type 'ColorRGBA __attribute__((address_space(2))) [4096]' is not assignable
array = (ColorRGBA*) input;
가 어떻게 모든 스레드에서 고쳐 배열에 액세스 할 수 있습니까?
감사 Glethien
입력 길이가 배열입니다 : 16384 서명되지 않은 문자. 이것을 이것을 모양 배열 (4096,4)로 변환하여 전역 배열에 저장하고 싶습니다. 내가 길을 사용한다면 모양이 (0, x, y) 인 배열을 만들지 않겠습니까? – glethien
@glethien 나는 내 대답에 약간의 수정을했고, 그것이 당신이 찾고있는 것이라면 알려주겠습니까? –
실제로 .... 파이썬에서는 이렇게하면됩니다. self.grid = numpy.load ("./ testData.npy") self.grid = self.grid.reshape ((4096,4)) 원래 입력에서 4의 각 블록은 하나의 ColorRGBA – glethien