OpenCL 메모리 오브젝트
데이터 전달
3가지의 데이터 전달 방법
- Initiate read/write data transfer
- Map/Unmap memory
- Copy data between memory objects
커맨드 큐에 enqueue 하는 방식으로 구현
버퍼 쓰기
cl\_int clEnqueueWriteBuffer(cl\_command\_queue command\_queue, cl\_mem buffer, cl\_bool blocking\_write, size\_t offset, size\_t size, const void \*ptr, cl\_uint num\_events\_in\_wait\_list, const cl\_event \*event\_wait\_list, cl\_event \*event)
메모리 오브젝트에 값을 기록
blocking_write
- 동기화(CL_TRUE), 비동기화(CL_FALSE) 속성을 결정
- 비동기화 방식일 경우 쓰기가 제대로 완료되지 않아도 리턴 함
- 완료 시점을 파악하기 위해 이벤트 사용
offset
- ptr 포인트로부터의 시작 오프셋
size
- 쓰고자 하는 데이터의 크기
num_events_in_wati_list
- event_wait_list에 있는 이벤트의 수
event_wait_list
- 해당 쓰기 작업을 진행하기 전에 기다려야 하는(반드시 완료되어야 하는) 이벤트들
event
- 해당 쓰기 작업을 나타내는 이벤트
버퍼 읽기
cl\_int clEnqueueReadBuffer(cl\_command\_queue command\_queue, cl\_mem buffer, cl\_bool blocking\_read, size\_t offset, size\_t size, const void \*ptr, cl\_uint num\_events\_in\_wait\_list, const cl\_event \*event\_wait\_list, cl\_event \*event)
- 메모리 오브젝트에서 값을 읽음
- blocking_read
- 동기화(CL_TRUE), 비동기화(CL_FALSE) 속성을 결정
- 비동기화 방식일 경우 쓰기가 제대로 완료되지 않아도 리턴 함
- 완료 시점을 파악하기 위해 이벤트 사용
- offset
- ptr 포인트로부터의 시작 오프셋
- size
- 쓰고자 하는 데이터의 크기
- num_events_in_wati_list
- event_wait_list에 있는 이벤트의 수
- event_wait_list
- 해당 쓰기 작업을 진행하기 전에 기다려야 하는(반드시 완료되어야 하는) 이벤트들
- event
- 해당 쓰기 작업을 나타내는 이벤트
반응형
'멀티코어 프로그래밍 > OpenCL' 카테고리의 다른 글
OpenCL 메모리 오브젝트 (2) | 2022.04.25 |
---|---|
OpenCL 컨텍스트 (13) | 2022.04.22 |
OpenCL 디바이스 (9) | 2022.04.21 |
OpenCL 플랫폼 (10) | 2022.04.20 |
커널, 커맨드큐 (9) | 2022.04.19 |
댓글