- CLHandleType
- CLGetInfoInteger
- CLGetInfoString
- CLContextCreate
- CLContextFree
- CLGetDeviceInfo
- CLProgramCreate
- CLProgramFree
- CLKernelCreate
- CLKernelFree
- CLSetKernelArg
- CLSetKernelArgMem
- CLSetKernelArgMemLocal
- CLBufferCreate
- CLBufferFree
- CLBufferWrite
- CLBufferRead
- CLExecute
- CLExecutionStatus
OpenCL 작업
OpenCL프로그램은 OpenCL 1.1이상을 지원하는 비디오 카드에 계산을 수행하기 위해 사용됩니다. 최신 비디오 카드에는 수신 데이터 스트림과 함께 간단한 수학적 연산을 동시에 수행할 수 있는 수백 개의 소형 전문 프로세서가 포함되어 있습니다. OpenCL 언어는 병렬 컴퓨팅을 구성하고 특정 종류의 작업에 더 빠른 속도를 제공합니다.
일부 그래픽 카드에서는 기본적으로 double 유형 번호로 작업할 수 있습니다. 이로 인해 컴파일 오류 5105가 발생할 수 있습니다. double 유형 번호에 대한 지원을 활성화하려면 OpenCL 프로그램에 #pragma OPENCL EXTENSION cl_khr_fp64 : enable 명령을 추가하십시오. 그러나 그래픽 카드가 double을 지원하지 않는 경우 이 명령문을 활성화하는 것은 도움이 되지 않습니다.
OpenCL에 대한 소스 코드를 별도의 CL 파일에 쓰는 것이 좋습니다. 이 소스 코드는 나중에 리소스 변수를 사용하여 MQL5 프로그램에 포함될 수 있습니다.
OpenCL프로그램에서 핸들링 에러
OpenCL 프로그램에서 발생한 마지막 오류에 대한 정보를 얻으려면CLGetInfoInteger및CLGetInfoString함수를 사용하십시오. 이 함수들은 오류 코드와 설명을 가져옵니다.
OpenCL 마지막 에러 코드: 최근에 발생한 OpenCL 에러를 알아보기 위해서는 CLGetInfoInteger를 호출하십시오, 호출은 handle 매개변수가 무시되는 동안 이루어져야 합니다 (0으로 설정 가능). 에러 설명:https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
알 수 없는 오류 코드의 경우 "알 수 없는 OpenCL 오류 N"이란 문자열이 반환되며 여기서 N은 오류 코드입니다. 예:
//--- 첫 번째 'handle' 매개변수는 마지막 오류를 가져올 때 무시됩니다.code
|
OpenCL 오류에 대한 텍스트 설명: 최근의 OpenCL 에러를 가져오려면 CLGetInfoString을 호출하세요. 에러 코드는 반드시 핸들매개변수로 전달되어야 합니다.
에러 설명:https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. 에러 코드 대신 CL_LAST_ERROR가 전달되면 함수는 마지막 에러에 대한 설명을 반환합니다. 예시:
//--- 마지막 OpenCL 에러 코드 가져오기
|
지금까지는 내부 열거형의 이름이 에러에 대한 설명으로 제공되었습니다. 여기에서 디코딩을 찾을 수 있습니다:https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. 예를 들어 CL_INVALID_KERNEL_ARGS 값은 "일부 커널 인수가 설정되지 않았거나 유효하지 않은 경우 커널을 큐에 더할 때 반환됨"을 의미합니다.
OpenCL에서 프로그램을 실행하는 함수:
함수 |
기능 |
---|---|
ENUM_OPENCL_HANDLE_TYPE 열거값으로 OpenCL 핸들 유형을 반환합니다 |
|
OpenCL 개체 또는 디바이스에 대한 정수 속성 값을 반환합니다 |
|
OpenCL 컨텍스트를 생성합니다 |
|
OpenCL 컨텍스트를 제거합니다 |
|
OpenCL 드라이버로부터 장치 속성 수신 |
|
소스 코드에서 OpenCL 프로그램을 생성합니다 |
|
OpenCL 프로그램을 제거합니다 |
|
OpenCL 시작 함수를 생성합니다 |
|
OpenCL 시작 기능을 제거합니다 |
|
OpenCL 함수에 대한 매개 변수를 설정합니다 |
|
OpenCL 버퍼를 OpenCL 함수의 매개 변수로 설정합니다 |
|
로컬 버퍼를 커널 함수의 인수로 설정합니다 |
|
OpenCL 버퍼를 생성합니다 |
|
OpenCL 버퍼를 삭제합니다 |
|
OpenCL 버퍼에 배열을 씁니다 |
|
OpenCL 버퍼를 배열로 읽습니다 |
|
OpenCL 프로그램을 실행합니다 |
|
OpenCL 프로그램 실행 상태를 반환합니다 |
참고 항목