많은 빈 매개 변수를 사용하여 빈 커널을 시작하려고하지만 enqueueNDRangeKernel 함수에서 메모리 액세스 위반이 있습니다. 내 코드를 확인하십시오. 아마도 뭔가를 놓쳤거나 알지 못했을 것입니다.OpenCL enqueueNDRangeKernel에서 액세스 위반 오류
호스트 코드 : https://dl.dropboxusercontent.com/u/71256314/main.cpp 처음에는 초기화를 한 다음 버퍼를 만든 다음 인수를 설정합니다. 오류가 나오지 않습니다. 첫 번째 enqueueNDRangeKernel 함수 호출에서 충돌합니다.
커널 코드 : https://dl.dropboxusercontent.com/u/71256314/baum_kernel.cl 커널이 비어 있어도 작동하지 않습니다.
버퍼에 문제가 있지만 오류가 반환되지 않습니다.
버전 : AMD APP SDK v2.8 버전 - 12.10 GPU (9.002) ™ AMD 촉매 : ATI 모빌리티 라데온 HD 5650
컴파일 링 및 라이브러리 연결을 확인하십시오. 프로그램이 OpenCL에 제대로 연결되어 있지 않은 것 같습니다. API는 그런 식으로 절대로 충돌해서는 안됩니다. – DarkZeros
@DarkZeros이게 문제라고 생각하지 않습니다. VS 2012에서 프로젝트를 설정 한 것처럼 여기에 (x64 시스템 용) : http://kode-stuff.blogspot.ru/2012/11/setting-up-opencl-in-visual-studio_1.html I 이 구성으로 간단한 helloworld 예제를 실행하려고 시도했지만 제대로 작동했습니다. –
Hello World 예제는 쓸모가 없다고 말하면서 아무것도 실행하지 않는 OpenCL의 함수를 호출합니다 (일부 ID 만 리턴). 작동하더라도 링크가 잘못되었을 수 있습니다. 발생하는 오류의 일반적인 문제는 잘못된 라이브러리 버전으로 연결하거나 잘못된 방식으로 동적으로로드하는 것입니다. – DarkZeros