일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- jhDNN
- Compression
- quantum_computing
- DRAM
- 쿠버네티스
- convolution
- HA
- 딥러닝
- GPU
- deep_learning
- POD
- Qubit
- cloud
- flash_memory
- 반도체
- C++
- SpMM
- jhVM
- 반도체기초
- CuDNN
- Semiconductor
- 클라우드
- dnn
- 양자역학의공준
- FPGA
- CUDA
- stl
- sycl
- kubernetes
- nvidia
- Today
- Total
목록Parallel | Distributed Computing (17)
Computing
Lease 개념과 lock과의 비교 분산컴퓨팅 분야에서 자주 사용되는 lease[1](리스, [ liːs ])란 개념은 lock과 유사한데, lease는 그것을 획득한 프로세스(=lease holder)에게 해당 lease와 연관된 자원의 독점을 보장해주는 도구[2]이다. lock과의 유일한 차이점이라면 주어진 시간 동안에만 holder에게 독점적 권한을 준다는 점이다. 주어진 시간이 만료되면(expired) lease는 자동으로 해제되고 다른 프로세스가 획득할 수 있게 된다. 전통적인 lock은 lock을 획득한 프로세스가 명시적으로 해제(release)할 때까지 유지된다. 이러한 전통적인 lock에게 치명적인 단점이 있으니, lock을 획득한 프로세스가 어떠한 오류에 의해 lock을 release하지..
이전글 2022.07.22 - [Parallel Computing/개념] - NCCL 개념 및 Ring 기반 집합 통신 최적화 이전 글에서 NCCL[1]에 대한 기본 개념에 대하여 정리하였다. 이번 글에서는 NCCL을 직접 설치해보고 NCCL API를 사용하여 행렬곱을 구현해 보고자 한다. NCCL 설치 NCCL[Nickel]은 NVIDIA에서 배포한 GPU간 최적화된 집합 통신(collective communicatio) library이다. 여러 GPU간의 데이터 전송 관련 primitives를 구현한 것으로, 가속화(최적화)된 GPU간의 데이터 통신 구현에만 초점을 맞춘 library이다. 이를 통해 NVIDIA는 쉬운 multi-GPU 애플리케이션 개발을 지원하고자 한다. NCCL은 library이..
이전글 2022.04.04 - [Parallel Computing/개념] - Collective communication 이전에 collective communication 집합 통신에 대하여 정리한 적이 있었다. 집합 통신은 여러 개의 프로세스(or thread) 간의 데이터를 전송하는 통신 패턴을 의미하는 것으로, 2개의 프로세스간 통신(Point-to-point communication)과 대비되는 개념이다. 오늘은 이 여러 개의 GPU들간의 집합 통신을 구현한 NVIDIA NCCL에 대하여 정리하면서, NCCL의 집합 통신 최적화의 기본 아이디어인 Ring 기반 집합 통신 최적화 방법에 대해서도 정리하고자 한다. Collective Communication 집합 통신 2개의 프로세스간의 통신 패턴..
MPI, OpenMPI MPI(Message Passing Interface, 메세지 전달 인터페이스)는 여러 컴퓨터 간의 정보 교환을 기술하는 표준[1]이다. 여러 컴퓨터를 이용한 분산 및 병렬 처리 시, 컴퓨터간의 데이터 전송의 표준(message-passing library interface specification)이다. 즉 구체적인 프로토콜, 구현이 아닌 어떤 기능들이 제공되어야 하는 지를 나타내는 기술서 정도의 개념이다. MPI는 여러 컴퓨터에서 프로세스(process)들이 실행될 때, 그 프로세스들간의 통신을 위해 사용된다. Fig 1.은 4개의 컴퓨터(노드, node)에서 실행되는 MPI 프로그램 예제를 보여준다. mpirun을 통해 ./myapp 프로그램을 실행하는 4개의 프로세스가 생성..
BLAS 란 BLAS는 Basic Linear Algebra Subprograms(BLAS)의 약자[1]로, 한국어로 해석하자면 기본 선형 대수 함수(subprogram을 어떻게 번역하는 게 좋을 지 모르겠다.)이다. 말 그대로 선형 대수 분야에서 사용되는 기본적인 연산자들의 일반화된 형태들의 집합을 나타낸다. High performance computing (HPC) 분야에서 성능을 측정하는 도구로도 사용되며, 기본적으로 선형 대수가 많은 산업 분야에서 사용되기에 최고의 성능을 내는 것을 목적으로 많은 연구가 진행되고 있다. 특히 SIMD 연산자를 이용한 병렬처리가 BLAS 연산 최적화에 많이 사용된다. 대표적으로 NVIDIA는 자신의 GPU에 최적화된 cuBLAS[2] library를, INTEL은 ..
문제 소개 Matrix transpose는 행렬의 행과 열을 교환하여 새로운 행렬을 얻는 operation[2]이다. 주대각축을 중심으로 반사 대칭을 하는 연산으로 Eq 1.과 같은 특징을 만족한다. Matrix transpose는 더하기, 곱하기와 같은 수 계산이 필요없는 operation으로, 단순히 원하는 위치의 데이터를 읽어와 원하는 위치에 쓰기만 하면 된다. 즉 memory operation이 대부분을 차지한다. Matrix transpose를 병렬화할 경우, matrix의 각 element는 다른 element와 관계 없이 독립적으로 읽고 쓰기가 되기에 쉽게 병렬화할 수 있다. 하나의 work-item은 [i,j]-번째 input 행렬의 element를 읽어와 [j,i]-번째 output 행렬..
Collective communication Collective operations, inter-process communication이라고도 하는데, multiple processes가 모두가 참여하는 통신(데이터를 전달) 패턴[1]을 의미한다. 즉 n개의 process가 있을 때, 1:1로 데이터를 전송하는 것이 아닌 하나의 데이터를 n개의 processes에게 나눠주거나 n개의 processes의 데이터를 하나로 모으는, 집단이 참여하는 기본 통신 패턴을 의미한다. SPMD 프로그램(data parallelism을 활용하는 프로그램)에서는 한 문제를 여러 개의 process가 나눠서 해결한다. 예를 들어, 한 덩어리의 데이터를 n개의 process에게 나눠주거나, 문제를 푸는 과정에서 서로 간에 데..
Compressed Sparse Row Format SpMM - 2 : Sparse Matrix Representation 이전 포스터에서 sparse matrix가 무엇인지를 정의하고 왜 필요한지를 알아보았다. SpMM - 1 : Introduction Sparse Matrix Multiplication Matrix multiplication은 우리가 흔히 아는 다음 그림과 같은 행렬곱.. computing-jhson.tistory.com 저번 포스팅을 통해 sparse matrix를 저장하기 위한 다양한 형식을 배웠으며, 오늘은 CSR, Compressed Sparse Row format을 어떻게 구현하는 지에 대하여 정리할 것이다. 특히 [1]를 참고하여, GPU 디바이스를 통한 CSR 변환 가속화..