나는 말한다 오픈 CL에 대한 책을 읽고있다클래스 구성원의 OpenCL 컨텍스트 범위는 무엇입니까?
플랫폼과 장치, clCreateContextFromType 및 오류 코드 대신 clCreateContext 반환 cl_contexts을 만드는 기능과는 달리. 즉, 구조에 대해 메모리를 할당하고 할당을 해제 할 필요가 없습니다. cl_context가 로컬 변수로 선언되면 동봉 된 함수가 종료되면 해당 메모리가 자동으로 해제됩니다.
컨텍스트를 클래스 멤버로 유지합니다.
class MyOpenCL
{
private:
cl_context context;
};
그래서 클래스가 파괴 될 때까지 메모리에 남아 있습니까? 아니요 그렇다면이 대안은 무엇입니까? 참조 계산 메커니즘이 마음에 들지 않습니다.
C++을 처음 사용하는 경우 일반 cl.h 메소드 대신 "cl.hpp"를 사용하십시오. 그들은 다른 C++ 클래스처럼 할당 해제됩니다. 이러한 문제에 신경 쓰지 않아도됩니다. – DarkZeros
cl.hpp를 사용하려고했지만 내 환경에서 작동하지 않는 것 같습니다. AMD APP SDK를 사용하는 Win7 64 비트 OS에서 MinGW 32 비트 컴파일러. 문제는 일부 Visual C++ 헤더 파일입니다. –
@Cool_Coder Boost.Compute (https://github.com/kylelutz/compute)를 확인하십시오. 그것은 OpenCL 용 OpenGL C 인터페이스 (예 :'cl.h')에만 의존하는 OpenCL 용 C++ API (IMHO)와 많은 상위 레벨 기능을 제공합니다. 이 유스 케이스의 경우, Boost.Compute'context' 객체는 클래스 멤버로서 저장 될 수 있고 그 메모리는 자동으로 처리 될 것이다. –