본문 바로가기
멀티코어 프로그래밍/OpenCL

OpenCL 메모리 오브젝트(2)

by 기리의 개발로그 2022. 4. 26.

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

댓글