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

OpenCL Architecture(4)

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

OpenCL Architecture

메모리 모델(Memory Model)

  • 4개의 메모리 영역

    • 글로벌 메모리
    • 컨스탄트 메모리
    • 로컬 메모리
    • 프라이빗 메모리
  • 글로벌 메모리(global memory)

    • 모든 워크 그룹의 모든 워크 아이템이 접근 가능한 메모리
    • 워크 아이템은 메모리의 임의의 위치에 읽기/쓰기 가능
    • 글로벌 메모리 캐싱
      • 디바이스의 캐시 메모리 유무에 따라
  • 컨스탄트 메모리(constant memory)

    • 커널 실행동안 변하지 않는 값(상수)으로 남아있는 글로벌 메모리 영역
    • 호스트가 할당하고 초기화
  • 로컬 메모리(local memory)

    • 워크 그룹별로 각각 존재하는 메모리
    • 한 워크 그룹 내의 워크 아이템들만 접근 가능
      • 워크 그룹 내의 워크 아이템들간 공유를 위해 사용
  • 프라이빗 메모리(private memory)

    • 워크 아이템별로 갖는 메모리
    • 한 워크 아이템의 프라이빗 메모리는 다른 워크 아이템이 접근할 수 없음

메모리 오브젝트

  • 버퍼 오브젝트
    • 일차원 데이터
      • 스칼라 타입, 벡터 타입, 사용자 정의 타입
    • 메모리에 순차적으로 데이터 저장
    • 커널에서 포인터로 접근 가능
    • 서브 버퍼
      • 버퍼 오브젝트의 일부 영역으로부터 생성
  • 이미지 오브젝트
    • 2차원또는 3차원의 데이터
      • 텍스처, 프레임 버퍼, 이미지
    • 포인터로 직접 접근할 수 없음

메모리 컨시스턴시

  • 릴렉스드 메모리 컨시스턴시 모델 사용
    • 메모리의 내용이 서로 다른 워크 아이템에게 항상 같게 보일 필요는 없음
    • 동기화 시 같게 보임
  • 워크 아이템 하나가 사용하는 메모리
  • 로컬 메모리
    • 워크 그룹 배리어에서 워크 그룹 내의 모든 워크 아이템간에 컨시스턴시 보장
  • 글로벌 메모리
    • 워크 그룹 배리어에서 워크 그룹 내의 모든 워크 아이템간에 컨시스턴시 보장
    • 서로 다른 워크 그룹 사이에는 메모리 컨시스턴시를 보장하지 않음
  • 커맨드 간 공유되는 메모리
    • 동기화 포인트에서 메모리 컨시스턴시 보장
      • clFinish()
    • 워크 그룹 배리어
    • 이벤트 동기화
반응형

'멀티코어 프로그래밍 > OpenCL' 카테고리의 다른 글

OpenCL Architecture(6)  (18) 2022.04.15
OpenCL Architecture(5)  (19) 2022.04.14
OpenCL Architecture(3)  (41) 2022.04.12
OpenCL Architecture(2)  (22) 2022.04.11
OpenCL Architecture(1)  (11) 2022.04.10

댓글