[GPGPU Series 5] Scheduling Thread Blocks

GPGPU Series 4에서 Application, Kernel (Grid), Thread Block (TB or CTA), Thread에 대한 설명을 작성하였다. GPGPU Series 3에서는 대략적인 GPU 구조에 대한 설명을 하였다. 이번 글에서는 Kernel의 TB가 Streaming Multiprocessor (SM)에 Scheduling되는 방법에 대한 설명을 진행할 예정이다. 이전에 작성한 글에서 각 Application은 1개 이상의 Kernel로 구성되어 있고, 각 Kernel은 다시 1개 이상의 TB로 구성되어 있다고 설명하였다. … Read more

[GPGPU Series 4] GPGPU Application Thread Hierarchy

이번 글은 CUDA로 작성된 GPGPU Application의 Thread Hierarchy에 대한 설명을 정리하였다. GPGPU Application에서 Thread Hierarchy와 GPU Warp (Wavefront)의 개념을 이해하면 GPGPU의 개념의 절반 이상을 이해했다고 할 수 있다. 다시 말해서 Thread Hierarchy와 Warp 개념은 GPU에서 가장 중요한 부분이다. 보통 CUDA로 작성된 코드는 GPU에서 실행되는 함수와 CPU에서 실행되는 코드로 구분된다. CUDA로 작성된 코드 중 GPU에서 실행되는 … Read more

[GPGPU Series 3] GPU Architecture Overview

조금 고민을 하다가 GPGPU (CUDA) Application의 Thread Hierarchy에 대해서 작성하기 이전에 GPU Architecture에 대해 간단하게 설명을 먼저 작성하려 한다. 아주 간략한 용어들만 설명하는 단계이다. 부족한 부분은 뒤에 추가로 상세히 설명을 진행할 예정이다. 글에서 사용하는 GPU Architecture 용어는 NVIDIA White Paper에서 사용하는 것이다. 그림 1: GPU Architecture 앞글에서 짧게 설명했듯이 요즘 구매하는 GPU는 Fixed Function Unit과 Programmable … Read more

[GPGPU Series 2] General Purpose on GPUs

시작이 중요하다고 Index 다음으로 첫 글을 작성하였다. CUDA가 GPU에서 동작하는 순서를 알기 전에 General Purpose on GPU (GPGPU) 개념을 먼저 설명할 필요가 있다. GPGPU라는 개념이 생긴 이유는 개인적인 견해가 많이 들어간 부분이다. 2010년도 초반부터 공부했기 때문에 GPU 또는 GPGPU의 많은 과거사를 정확하게 알고 있지는 않다. 우선 가장 먼저 GPU의 긴 역사 중 중요한 몇 가지 … Read more

[GPGPU Series 1] Index of Articles

대학원을 다니면서 GPGPU-Sim을 사용하여 GPU에 대한 공부와 연구를 진행하였다. 그래서 GPU에 실행되도록 작성된 General Purpose on GPU (GPGPU) Application이 GPU에 어떻게 동작하는지 조금은 이해하고 있다. 항상 영어 사이트의 내용을 번역하는 수준으로 블로그 글을 쓰다가 우연히 OpenGL/Vulkan 등의 API로 작성된 Application이 GPU에서 실행되는 방법을 정리한 Article을 찾을 수 있었다. Article을 읽은 후 나도 한번은 아는 지식으로 … Read more

[GPU] The Bifrost Shader Core (Mobile GPU)

중요: 항상 그렇지만 이번 글을 특히 이해하지 못하는 부분이 많았다. Bifrost GPUs 그림 1: Bifrost GPU 구조 (출처 2) 글을 쓰는 현시점에 사용되고 있는 GPU Architecture이다. 2016년 Exynos 7872를 시작으로 최근 Kirin 980에도 사용되었다 (출처1). Mali-G30, Mali-G50, Mali-G70이 Bifrost를 사용한 GPU이다. 위 그림1은 Bifrost GPU Architecture이다. 기본적인 구조는 앞서 작성한 Midgard GPU와 거의 같다. 변경된 … Read more

[GPU] The Midgard Shader Core (ARM Mobile GPU)

Midgard GPUs ARM에서 최근에 만든 Bifrost GPU 이전 모델인 Midgard에 대해서 짧게 정리해보았다. Exynos 5250 (2012년 추정)에서 첫 세대 Midgard를 사용하였고, 마지막으로 3세대 Midgard가 Exynos 8890 (2016년 추정)에 생산되었다 (출처 1, 2). Midgard GPU는 Mali-T600, Mali-T700, Mali-T800 시리즈가 있다. Midgard GPU는 요즘 GPU의 기본인 Unified Shader Core를 사용한다. Unified Shader Core란 Vertex Shader 연산, Fragment Shader … Read more

[GPU] FlexRendering (Hybrid Deferred and Direct Rendering Mode)

며칠 전에 작성한 Tile-based Rendering을 공부하다가 Qualcomm Developer Guide에서 찾은 내용인데 Tile-based와 Immediate Mode Rendering을 자동으로 선택해주는 방법이 있는 것 같다. 해당 부분은 ARM Mali GPU에서는 지원하는지 모르겠다. Qualcomm (QTI) 의 경우 자동으로 Tile-based Rendering 또는 Immediate Mode Rendering을 선택하는 것 같다. 출처 1에 따르면 Tile-based Rendering을 Binned Rendering이라 표현하였고, Immediate Mode Rendering의 경우 Direct … Read more

[GPU] Tile-based Rendering (Mobile GPU)

ARM Mail GPU는 Tile-based Rendering 기술을 지원한다. Tile-based Rendering이란 Framebuffer를 작은 단위로 나누어서 Rendering 작업을 수행하는 것이다. Mail GPU의 경우 16 x 16 Pixel단위로 나누어서 Rendering 연산을 수행한다. 출처 1은 Tile-based Rendering의 장점, 단점을 정리한 글이다. 출처1의 글을 읽고 짧게 정리해보았다. Immediate Mode GPUs 기존 PC GPU는 Immediate Mode Rendering을 지원한다. Immediate Mode Rendering 이란 Command … Read more

[CPU/SoC] Kirin 980 (HiSilicon)

Kirin 980 설명 2018 IFA에서 Kirin 980이 발표되었다. 화웨이의 HiSilicon이라는 곳에서 제작하였다고 한다. 놀라운 건 7nm를 사용한 최초의 Mobile SoC Chip이라는 것이다. 이제는 최초라는 단어는 중국 회사가 먼저 사용하는 것 같다. 과거 Kirin Chip의 경우 상대적으로 다른 회사 Chip보다 성능적으로 뒤처져 있었던 것 같다. 예를 들어 Kirin 960의 경우 16nm 공정으로 제작되었는데, Qualcomm과 삼성의 경우 10nm … Read more