CUDA C (4) 썸네일형 리스트형 [ CUDA 기반 GPU 병렬처리 프로그래밍 ] chapter 4-5 스레드 계층, 레이아웃과 인덱싱 2 이 글은 CUDA 기반 GPU 병럴처리 프로그래밍 책의 내용을 바탕으로 정리한 글이다. 저번 글에 이어서 오늘은 인덱싱에 대해 다루고자 한다. 여담이지만, 상용화 단계에 들어가기 위해 성능을 올리는 모델이 있다. 매번 느끼는 거지만, 데모 수준과 상용화 수준은 너무나도 큰 차이가 존재한다. 매우 지루한 과정이긴 하지만, 이번 역시 해내야겠지. 이번 상용화 솔루션이 나오고 나면 다음번에는 아키텍쳐를 조금 바꿔서 기존 상용화 상품의 모델을 바꾸는 일을 할 거다. 이제 슬슬 기초부터 탄탄히 잡고 가야할 시긴데, exponential하게 실력이 늘던 때와는 양상이 조금 달라 지루하기도 하지만 여튼 해야한다. 각설하고 인덱싱에 대해 한번 정리하겠다. 메모리 속 배열의 모습 우선 메모리에 대한 이해가 조금 필요하다.. [ CUDA 기반 GPU 병렬처리 프로그래밍 ] chapter 4-5 스레드 계층, 레이아웃과 인덱싱 1 이 글은 CUDA 기반 GPU 병럴처리 프로그래밍 책의 내용을 바탕으로 정리한 글이다. chapter 4 - 5 에서 핵심은 스레드에 대한 이해다. 기본적이지만 병렬처리를 하려면 반드시 암기하고 있어야 하는 내용이기도 하다. 어느 정도로? 1+1 =? 에 대한 대답정도로. CUDA 스레드 계층 사실 책에서는 쓰레드, 워프, 블록, 그리드로 나누어 설명한다. 그런데 그렇게 설명을 하면 한 가지 헷갈리는 부분이 생기게 된다. 사실 우리가 코딩에 필요한 부분은 고유 스레드 id를 부여하는 것이다. 그래서 내가 생각하는 계층은 아래와 같이 표현하는 것이 좋고, 실행 단위가 Warp 라는 것을 기억하면 된다. Tread -> Block -> Grid 참 간단하다. 이 구조를 설명하면, block은 Thread를 .. [ CUDA 기반 GPU 병렬처리 프로그래밍 ] chapter 2-3 CUDA 프로그램 구조와 흐름 이 글은 CUDA 기반 GPU 병럴처리 프로그래밍 책의 내용을 바탕으로 정리한 글이다. chapter 2 - 3에서 핵심은 프로그램 구조와 흐름이다. 시간을 쪼개서 쓰는 글이다보니, 뜨문 뜨문 올리긴하지만, 끝까지 다 정리는 할 예정이다. 물론 기본적인 문법이나, 예제는 다루지 않을 생각이다. CUDA 프로그램 구조 및 흐름 CUDA 프로그램 구조 ( Host vs Device ) 매우 기초적이지만 중요한 부분이다. cuda 프로그램은 host 코드와 device 코드로 나누어 진다. host는 cpu를 사용하고, system memory를 사용하고, device는 CUDA core를 사용하고 Device memory( video memory 등 여러 명칭이 있음 )를 사용한다. 이 그림을 반드시 기억하.. [ CUDA 기반 GPU 병렬처리 프로그래밍 ] chapter 1 GPGPU 및 병렬처리 개요 이 글은 CUDA 기반 GPU 병럴처리 프로그래밍 책의 내용을 바탕으로 정리한 글이다. 글을 정리하기에 앞서, CUDA_C 와 관련하여 기초적인 문법이나, 활용 등은 할 수 있다. 그럼에도 하나의 책을 잡고 다시 정리하는 데는, 현재 내 수준이 기초부터 탄탄하게 잡아야할 필요성을 느꼈기 때문이다. 설명이라기 보다는 내가 이해한 바를 적고자한다. 병렬 처리의 개념 병렬 처리는 영어로 parallel processing을 말합니다. 문제를 어떻게 해결한다는 말이냐 하면 하나의 문제를 여러 개로 나누고 그 각각의 문제를 하나의 연산 유닛이 감당해서 처리한다는 말이다. 간단한 예시를 들어보면, 예시) 1-15 까지 더하는 문제 가정 - 내 하드웨어는 5개의 연산 유닛을 가지고 있음 1. 15 개의 숫자를 5개의.. 이전 1 다음