저는 해결하기 어려운 문제가 있습니다. 필자는 두 개의 배열을 가지고 있는데, 하나는 모든 커널 호출에 대해 고정 크기이고 1D 배열에 매핑 된 일반 3D 그리드입니다. 이 배열을 호출 할 수 있습니다. meshData 두 번째 배열은 x, y, z 좌표와 meshData 배열에 정렬되지 않은 점의 값을 저장합니다. 이 pointData를 호출 할 수 있습니다.opencl 커널의 배열을 반복합니다.
이제 OpenCL을 사용하여 meshData 배열을 실행해야하며 두 배열을 커널에 전달하고 pointData 배열에 저장된 점의 수를 전달합니다. 커널 내에서 x, y, z 좌표를 meshData의 현재 요소의 좌표 값으로 계산 한 다음 for 좌표를 사용하여 pointData 배열의 모든 점을 찾는 좌표를 사용합니다. 루프의 내부에서 나는
for (l = 0; l < points; l++) {
if(x1Cell <=pointdata[l*indexOffset] && x2Cell >= pointData[l*indexOffset &&
y1Cell <=pointdata[l*indexOffset + 1] && y2Cell >=pointdata[l*indexOffset + 1] &&
z1Cell <=pointdata[l*indexOffset + 2] && z2Cell >=pointdata[l*indexOffset + 2]){
}
}
문제가 나는 등 x1Cell, x2Cell에 대한 값을 하드 코딩하는 경우 다음 코드는 if 문 안에 얻을 수 있다는 것을 말하는 경우 문을 가지고,하지만 난에 대한 계산 된 값을 사용하는 경우 x1Cell 등 다음 조건은 결코 y1Cell을 지나치지 않습니다.
나는 전체 코드를 OpenCL이 아닌 코드로 사용하기 때문에 작동한다는 것을 알고 있습니다. OpenCL에 위와 같이 놓친 것이 있습니까?
"pointData [l * indexOffset &&"]에 "]"이 (가) 없습니다. – chippies
지적 해 주셔서 고맙습니다. 포스트에 대해 위의 내용을 작성 했으므로 실제로 문제가되지 않았습니다. 그러나이 문제는 완전히 무관합니다. 대답은 다음과 같습니다. – airtruk