본문 바로가기

멀티코어 프로그래밍/OpenCL20

OpenCL 프로그램 OpneCL 프로그램 프로그램과 커널 프로그램 오브젝트 프로그램 소스 또는 바이너리 각 디바이스별 실행 코드 커널 오브젝트의 리스트 커널 오브젝트 디바이스에서 실행되는 하나의 함수 프로그램 내의 하나의 커널에 해당 __kernel이 사용된 함수 커널의 파라미터 정보 호스트 프로그램이 지정한 실제 값을 저장 기타 커널 정보 커널명, 메모리 사용량, 속성 정보 등 프로그램(Program) cl_program clCreateProgramWithSource(cl_context context, cl_uint count, const char **strings, const size_t *lengths, cl_int *errocode_ret) 소스코드로부터 프로그램을 생성 count 만들고자 하는 프로그램의 개수 st.. 2022. 4. 18.
OpenCL Architecture(6) OpenCL Architecture opencl 프레임 워크 opencl 어플리케이션 개발과 실행을 지원하는 소프트에어 시스템 호스트와 하나 이상의 opencl 디바이스를 단일 시스템처럼 사용 구성 opencl 플랫폼 레이어 opencl 디바이스 및 디바이스 정보 제공 opencl 런타임 컨텍스트 조작 및 opencl 프로그램 실행 opencl 컴파일 opencl C로 작성된 커널 코드 컴파일 2022. 4. 15.
OpenCL Architecture(5) OpenCL Architecture 프로그래밍 모델 데이터병렬 프로그래밍 모델 OpenCL의 기본 프로그래밍 모델 메모리 오브젝트의 데이터에 적용되는 명령어의 순서를 정의 SPMD 인덱스 공간은 워크 아이템과 데이터의 매핑을 정의 워크 아이템이 어떤 데이터를 이용해 계산을 수행하는지 정의 clEnqueueNDRangeKernel 태스크 병렬 프로그래밍 모델 인덱스 공간에 관계없이 하나의 커널 인스턴스만 실행 하나의 워크 아이템만 갖는 워크 그룹 한개를 디바이스에서 실행하는 것과 같은 의미 사용할 수 있는 병렬성 커널에서 벡터 타입 사용 여러 태스크를 동시에 실행 동기화 워크 아이템간의 동기화 하나의 워크 그룹 내에서만 가능 워크 그룹 배리어 이용 워크 그룹 간의 동기화 지원하지 않음 커널의 시작과 종료로.. 2022. 4. 14.
OpenCL Architecture(4) OpenCL Architecture 메모리 모델(Memory Model) 4개의 메모리 영역 글로벌 메모리 컨스탄트 메모리 로컬 메모리 프라이빗 메모리 글로벌 메모리(global memory) 모든 워크 그룹의 모든 워크 아이템이 접근 가능한 메모리 워크 아이템은 메모리의 임의의 위치에 읽기/쓰기 가능 글로벌 메모리 캐싱 디바이스의 캐시 메모리 유무에 따라 컨스탄트 메모리(constant memory) 커널 실행동안 변하지 않는 값(상수)으로 남아있는 글로벌 메모리 영역 호스트가 할당하고 초기화 로컬 메모리(local memory) 워크 그룹별로 각각 존재하는 메모리 한 워크 그룹 내의 워크 아이템들만 접근 가능 워크 그룹 내의 워크 아이템들간 공유를 위해 사용 프라이빗 메모리(private memory.. 2022. 4. 13.
OpenCL Architecture(3) OpenCL Architecture 실행 모델(Execution Model) 호스트 프로그램이 커널 실행을 위해 "N-차원의 인덱스 공간"을 지정 인덱스 공간은 같은 크기의 하나 이상의 그룹으로 분할됨 그룹은 디바이스의 CU에서 실행됨 커널은 인덱스 공간의 각 지점에서 실행됨 각 지점은 하나 이상의 PE에서 실행됨 커널 인덱스 공간(Kernel Index Space) NDRange N 차원의 인덱스 공간(N : 1,2,3,) 전체 워크 아이템(work-item)의 수를 지정 N 차원 튜플로 지정 워크 아이템은 커널 인스턴스 워크 아이템은 CUDA에서 스레드로 불림 각 워크 아이템은 인덱스 공간의 각 지점에서 실행 모든 워크 아이템은 병렬로 실행(모두 동시에 실행) 워크 그룹(Work-group) 워크 아.. 2022. 4. 12.
OpenCL Architecture(2) OpenCL Architecture 플랫폼 모델 실행 모델 메모리 모델 프로그래밍 모델 OpenCL 프레임워크 플랫폼 모델(Platform Model) 호스트(host) + 하나 이상의 계산 디바이스 계산 디바이스(compute device) OpenCL 디바이스 하나 이상의 계산 유닛으로 구성 계산 유닛(compute unit, CU) 하나 이상의 Processing Element로 구성 Processing Element (PE) (Core와 비슷) 디바이스 내에서 실제 계산을 수행 가상 스칼라 프로세서 OpenCL 애플리케이션 호스트 프로그램 + OpenCL 프로그램 호스트 프로그램(host program) 호스트 프로세서에서 실행 OpenCL 프로그램의 실행을 조정 일반 프로그래밍 언어로 작성 C,.. 2022. 4. 11.
728x90