[Pascal Architecture] Unified Memory

Unified memory는 프로그램을 제작하는 프로그래머 입장에서는 아주 중요한 부분이다. Unified memory가 지원하지 않을 경우 같은 데이터를 CPU와 GPU에 동시에 저장해야 하는 경우가 있다. 그리고 Sparse memory access (random data access로 인해서 load 한 모든 데이터를 사용하지 않는 경우를 의미함)의 경우 많은 data를 loading하고 오직 적은 수의 random access만 발생하여 성능이 느려질 수 있다. 2009년에 (Fermi … Read more

[MPI + CUDA] An Introduction to CUDA-Aware MPI

Message Passing Interface (MPI) Message Passing Interface (MPI)는 distributed system에서 데이터 통신을 하기 위한 standard API이다. 주로 High Performance Computing (HPC) 시스템에서 사용된다. 현재 버전의 CUDA는 MPI와 호환이 가능하다고 한다.  MIP+CUDA를 사용하는 이유는 크게 아래와 같다. data size가 너무 커서 하나의 GPU로 실행이 불가능한 경우 (실행은 가능하나 시간이 오래 걸리는 경우) GPU를 사용하여 기존 MPI … Read more

[Window 10 + Visual Studio 2013] CUDA 컴파일 (Compile)

Visual Studio 2013을 기준으로 CUDA 컴파일 하는 과정을 정리하였다. 영어 버전 Visual Studio 2013을 사용하는 관계로 영어 버전으로 설명을 작성하였다. 컴파일 하는 과정의 아래의5개 그림을 따라하면 된다. 컴파일 과정은 어렵지 않은데 항상 linux에서 nvcc를 사용하여서 컴파일하다 보니 Visual Studio가 익숙하지 않다. 그림 1: Build (빌드) 항목 그림 2: Configuration Manager 옵션 그림 3: Solution Configuration 및 … Read more

[Artificial Intelligence] Foundation of AI

AI는 많은 분야와 연관이 있고, 다양한 분야에서 AI와 연관된 질문들에 대한 대답을 찾고 있다고 한다. Philosophy (철학) Can formal rules be used to draw valid conclusions? How does the mind arise from a physical brain? Where does knowledge come from? How does knowledge lead to action? 위와 같은 질문들을 대답하기 위해 많은 철학자가 노력했다고 한다. … Read more

[Window 10] 자동 시작 프로그램 설정

윈도우 10에서 자동 프로그램 관리하는 방법을 정리하였다. 기존의 윈도우에서는 시작프로그램 설정을 위해서는 윈도우 시작 버튼, 프로그램에 들어가면 쉽게 시작 프로그램 폴더를 찾을 수 있었다. 윈도우 10은 윈도우 시작 버튼에 들어가면 시작 프로그램 항목이 사라져서 설정하는 데 다소 어려움이 있었다. 뭐 그렇다고 어려워 진 것도 아니다. 내 컴퓨터에서 아래의 path로 이동하면 시작프로그램을 등록하고 지울 수 있다. … Read more

[Artificial Intelligence] AI Definition

요즘  Artificial Intelligence (AI)에 관련된 책을 찾아서 조금씩 읽고 있다. 상당히 어려운 주제라 introduction을 넘어가지도 못하고 있다. 우선 오늘은 AI의 definition에 대해서 작성 하려 한다. 책에 따르면 다양한 AI의 definition이 존재한다고 한다. 아래는 4개의 AI definition을 정리하였다. Action Humanly (The Turing Test Approach): 영어 해석 그대로 “얼마나 사람에 가깝게 행동하는지”를 의미한다. Turing test를 통해 얼마나 … Read more

[Neural Network] Multi-Layered Perceptron

지난번에 perceptron에 대해서 간단하게 설명하였다. 하나의 perceptron으로 점을 분류하는 간단한 예제를 확인해 보았다. 하나의 perceptron으로는 linearly separable 한 점을 분류할 수 있다. 아래 그림 1과 같이 AND와 OR gate는 하나의 perceptron만 사용하여 간한하게 결과값을 찾을 수 있다.   그림 1: AND/OR gate 결과 (출처)    반면 그림 2와 같이 XOR의 경우 하나의 라인으로 답을 분류할 … Read more

[Neural Network] Perceptron?

Perceptron의 개념은 1957년 Frank Rosenblatt가 제안하였다. Perceptron은 neural network를 구성할 수 있는 가장 작은 단위이다. 기본적으로 Perceptron은 여러 개의 input을 받아서 특정 연산(processor)을 수행 후 결과를 출력하는 형태이다. 그림 1은 Perceptron을 묘사한 그림이다. 그림 1과 같이 Perceptron은 2개의 input과 하나의 processor을 가지고 있다. 그리고 각 input에 해당하는 weight 값이 존재한다. Weight 값과 input을 사용하여 processor은 … Read more

[Pascal Architecture] NVLink (High Speed Interconnection)

NVLink는 NVIDIA사에서 소개한 high speed interconnection (NVHS: NVIDIA’s new High-Speed Signaling  interconnection)을 말한다. NVLink는 Tesla P100과 Pascal GP100 GPUs에서 지원한다. 가장 큰 목적은 GPU와 GPU 간의 data access 속도(대역폭)를 향상하려는 방법이다. NVLink를 지원하지 않을 경우 GPU 간에 data access를 하기 위해서는 PCIe를 사용하여 호스트(host)의 메모리에 저장 후 다시 PCIe를 사용하여 다른 GPU에 데이터 로딩을 진행한다. … Read more

[Machine Learning] Concept of Neural Network

사람의 뇌는 biological neural network (신경망)로 구성되어 있다고 한다. 각 neural이 독립적으로 동작하여 서로 signal을 주고받는 형태이다 (솔직히 뭔 말인지 모르겠다. 사람의 뇌가 어떻게 동작하는지는 정확히 이해하지 못하였다). 아래 그림은 사람의 neuron을 그려놓은 그림이다.   그림 1: 사람의 Neuron (출처)   1943년에 Warren S. McCulloch (neuroscientist)와 Walter Pitts (logician)이 처음으로 인공지능망이란 개념을 제안하였다고 한다 (출처). … Read more