[GPU] Clipped vs. Culled

Rendering 연산을 하면서 불필요한 연산을 줄이는 2가지 (Clipped/Culled) 방법이 있어서 정리해보았다. 아래 2가지 방법 모두 불필요한 삼각형을 제거하거나, 크기를 조절하여 Rendering 연산량을 최소화하는 기술인 것 같다. Clipped 특정 물체의 전체가 화면에 표시되는 것이 아니라 특정 부분만 화면에 표시될 때 연산을 줄이는 방법을 의미하는 것 같다. 물체 전체가 Rendering 되지 않는 경우 특정 부분만을 작은 삼각형으로 … Read more

[GPU] 그래픽스 파이프라인 (Graphics Pipeline)

대부분 물체 (Mesh)는 3D 형태이지만 우리가 보는 모니터는 2D만을 디스플레이(표시) 할 수 있다. 그래서 OpenGL/Vulkan 등의 그래픽 파이프라인(Graphic Pipeline)은 3D 좌표를 모니터에 출력 가능한 2D 형태로 변경하는 작업이다. 출처 1에서는 Graphics Pipeline은 특정 물체 (Mesh)의 포인트 및 색감(Texture)등을 입력으로 받아서 픽셀(Pixel) 단위로 표시하는 작업의 순서라고 정의하였다. (The graphics pipeline is the sequence of operations that … Read more

[Linux/Android] CPU Usage (사용량) 계산 방법

Application의 CPU Usage (사용량)을 계산하는 방법이 궁금하여 인터넷에서 검색한 결과를 정리해보았다. 물론 top, htop과 같은 명령어를 사용하면 이 모든 것을 할 필요가 없다. 먼저 Application의 PID (Process ID)를 정보가 필요하다. 예를 들어 Application의 이름이 co.kr.mkblog.text라고 하면 “pidof” 명령어를 사용하여 예제 Application의 PID를 확인 할 수 있다. Android ADB와 Linux에서 아래 명령어를 입력하면 Application의 PID 번호를 … Read more

[GPUs] Swap Chain

그림 1. A graphical depiction of a triple-buffered swap chain (출처 2) Swap Chain은 모니터에 Display 할 때 사용되는 Buffer (Framebuffer를 의미하는 듯)의 모음이라고 한다 (A swap chain is a collection of buffers that are used for displaying frames to the user). 여러 개의 Framebuffer가 있는데 이중 Display 되는 이미지 정보를 가지고 있는 Buffer를 Front Buffer라고 … Read more

[GPU] Double Buffering, Triple Buffering, and VSync

GPU (그래픽스)에서 설명하는 Buffer라는 단어는 GPU (컴퓨터)가 연산을 마무리하고 모니터에 Display되야 하는 데이터를 저장하는 공간을 의미한다. 예전에는 보통 1개의 Buffer를 사용하여 컴퓨터가 연산한 결과를 Buffer에 작성함과 동시에 모니터에 Display 하는 작업을 수행하였다. 1개의 Buffer를 사용하면 Flicker, Tearing과 같은 문제가 있어서 Double, Triple Buffers, VSync 기술을 사용하여 문제를 해결하였다. Buffering 예제 위키피디아 (출처1)에 Buffering에 대한 예제 … Read more

[Article] In-Datacenter Performance Analysis of a Tensor Processing Unit (ISCA 2017)

본 논문은 2017 International Symposium on Computer Architecture (ISCA 2017)에 발표된 논문이다. Google에서 개발한 Tensor Processing Unit (TPU)에 관련된 내용을 포함한다. TPU는 Machine Learning (Neural Network) Application 성능 향상을 위해 제안된 가속기이다. NN에 대한 지식이 부족해서 논문 내용을 단순히 정리하는 작업을 진행하였다. (Introduction) 본 논문에서는 Deep Neural Networks (DNNs)가 유명해진 이유로 Large Data Sets (Big … Read more

[NVIDIA GPU] Volta (GV 100) Introduction

그림 1: Volta GPU Concept 사진 2017년 Annual GPU Technology Conference에서 Volta GPU가 최초로 공개되었다. 2013년에 처음으로 NVIDIA에서 Volta GPU Architecture 이름을 공개하였다. 공개 당시 Maxwell 다음 Volta GPU architecture가 공개될 예정이었지만, 실제로는 Maxwell, Pascal, Volta 순서대로 GPU Architecture가 공개되었다. 현재 공개된 정보에 따르면 Volta GPU는 Highend Computing 특히 Machine Learning에 최적화된 제품인 듯하다. 그림 … Read more

[Article] Acceleration of Wireless Channel Simulation Using GPUs

본 논문은 2010 European Wireless Conference에서 공개되었다. 현재 진행하고 있는 과제와 관련되어 읽고 정리하였다.   Introduction 모바일 기기(핸드폰, 태블릿 등)의 개수가 증가하면서 더 정확한 wireless simulation환경이 필요하다. 기존에는 Maxwell’s equation을 사용한 statistical model기법을 사용하였다. Statistical modeling의 경우 장해물이 없는 환경에서는 정확한 modeling이 가능하나 건물이나 장애물이 많이 존재하는 환경에서는 정확한 modeling이 불가능하다. 이런 문제를 해결하기 위해 해당 … Read more

[NVIDIA GPUs] PASCAL GPU SPEC 비교

NVIDIA Pascal GPU의 스펙이 궁금하여 정리를 해보았다. 그림 1: NVIDIA Pascal GPU 스펙 비교표 위 그림(표) 1은 현재 출시된 총 9개의 제품군의 간단한 스펙을 정리한 것이다. 높은 사양 제품일수록 CUDA core의 개수가 증가하였다. Clock speed의 경우 GTX 1050에서 GTX 1080까지는 증가하다가 다시 내려가는 경향을 확인할 수 있다. 아마 CUDA core의 개수가 많이 늘어 CUDA core … Read more

[NVIDIA GPU] Multi-GPUs CUDA 코딩 방법

과제로 CUDA 코딩을 연습하고 있는데 Multi-GPUs를 사용하는 코딩 방법이 크게 2가지 정도 있어 정리하였다. 아래 방법 이외 다른 게 있을 수도 있으나 공부하면서 이해한 방법은 크게 아래의 2가지 정도인 듯하다. Inter Process Communication (IPC)를 사용한 Multi-GPUs 사용 간단하게 설명하면 1개의 process가 1개의 GPU를 사용한다. 여러 개의 GPU를 사용하기 위해 여러 개의 process를 만들어야 한다. 그림 … Read more