GPU 프로그래밍 - Warm up
GPU Warm up 1. 개요 GPU 커널을 짜서 빌드 후 돌렸을 때 초기 한번에 한 해 성능이 훅 떨어지는 문제가 있다. 완전 첫번째 실행시에만 발생하거나 혹은 완전 다른 커널을 실행시에 이런 문제가 발생하는데 이를 방지하기 위해서 Warm up이라고 하여 미리 GPU를 미리 예열하는 방식을 사용한다. 표현을 예열이라고는 했지만, 실제로 GPU...
GPU Warm up 1. 개요 GPU 커널을 짜서 빌드 후 돌렸을 때 초기 한번에 한 해 성능이 훅 떨어지는 문제가 있다. 완전 첫번째 실행시에만 발생하거나 혹은 완전 다른 커널을 실행시에 이런 문제가 발생하는데 이를 방지하기 위해서 Warm up이라고 하여 미리 GPU를 미리 예열하는 방식을 사용한다. 표현을 예열이라고는 했지만, 실제로 GPU...
병렬 분산 컴퓨팅 - OPENMP 1. 개요 Shared memory parallel 응용프로그램을 만드는 표준 API이다. (일반적으로 Data parallel model을 사용) 기본적으로 C와 C++, 포트란에서 명령어 세트를 지원하며, GCC에는 기본적으로 포함되어있다. OPENMP는 컴파일러 지시어(compiler directives),...
페이지 캐시와 파일 입출력 리눅스에서 파일을 읽거나 쓸 때 어떤 식으로 불러오고 쓰는지에 대한 포스팅이다. 1. 페이지 캐시(Page cache) 리눅스는 페이지 캐시라는 디스크 캐시가 구현되어있는데, 이 캐시는 디스크 접근이 필요한 데이터를 메모리에 캐싱시켜 DISK 접근을 줄이는 것이다. SSD를 사용하여 Disk 접근이 많이 빨라진 현 시대에도...
병렬 분산 컴퓨팅 - Pthread programming 1. Pthread programming 1) Posix(POSIX는 Portable Operating System Interface for Unix) Threads 그냥 흔히들 Pthread라고 불리는 thread이다. C언어 프로그램과 링크하여 사용할 수 있는 라이브러리형태로 제공되며, 멀티...
병렬 분산 컴퓨팅 - Parallel software & Performance 1. Parrallel software 1) Programming model 병렬 프로그래밍의 경우 실제로 구동되는 환경과 모델 사이의 추상화 부분에서 좀 상이할 수 있다. 이게 무슨 말이냐면 프로그래밍적으로는 분산 메모리를 가장하고 만들어질 수 있지만, 실제 구...
병렬 분산 컴퓨팅 - Parallel hardware 1. 개요 사실 대부분은 컴퓨터 구조 카테고리에 병렬 처리 및 병렬 처리 - Cache 일치 포스팅에 포함되어있다. 이번 포스팅에서는 해당 포스팅에서 포함되어있지 않은 내용을 커버해 볼 것이다. 2. UMA vs NUMA 1) UMA(Uniform Memory Access) 메모리에 접근하는 시간...
CAGRA: Highly Parallel Graph Construction and Approximate Nearest Neighbor Search for GPU 이전의 Graph 기반 Vector 검색은 CPU 기반이었다. 이번에 리뷰할 논문인 CAGRA는 NVIDIA에서 나왔는데 GPU를 이용해서 가속이 가능한 Graph 알고리즘이다. 이전에 다른 ...
문자열 검색 알고리즘 말 그대로 주어진 텍스트에서 특정 문자열을 찾는 알고리즘에 대한 간단한 포스팅을 할까한다. 찾아보니까 문자열 탐색 알고리즘은 좀 많고, 컴파일러에서 쓰이는 오토마톤 기반 매칭도 있지만 그런것들은 제외하고 단순구현, KMP, Boyer-Moore 방식만 포스팅해보도록 하겠다. 1. 단순 구현 사실 어떤 문제가 주어지면 가장 먼저...
유클리드 호제법(Euclidean algorithm) 그냥 기본 알고리즘 리마인드 겸 포스팅하는 것이다. 1. 개요 간단히 말해서 두 자연수 간의 최대공약수를 찾는 알고리즘이다. 명시적으로 기술된 가장 오래된 알고리즘으로서도 알려져 있으며, 기원전 300년경에 쓰인 《원론》 제7권, 명제 1부터 3까지에 해당한다. 2. 방법 방법은 매우 간단하...
LSM Tree(Log-structured merge-tree) 1. 개요 먼저 LSM Tree(Log-Structured Merge-Tree)를 한 마디로 표현하자면 데이터베이스 시스템에서 고속 쓰기(high insert volume) 워크로드를 효율적으로 처리하기 위해 설계된 디스크 기반 데이터 구조이다. 데이터 베이스의 구조로 그냥 B트리나 B...