일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- POD
- flash_memory
- 쿠버네티스
- dnn
- CUDA
- CuDNN
- jhDNN
- cloud
- GPU
- kubernetes
- 반도체기초
- nvidia
- 딥러닝
- deep_learning
- 반도체
- stl
- 클라우드
- HA
- DRAM
- convolution
- FPGA
- SpMM
- Qubit
- quantum_computing
- 양자역학의공준
- Semiconductor
- Compression
- jhVM
- sycl
- C++
- Today
- Total
목록Parallel | Distributed Computing/개념 (8)
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개의 프로세스가 생성..
Collective communication Collective operations, inter-process communication이라고도 하는데, multiple processes가 모두가 참여하는 통신(데이터를 전달) 패턴[1]을 의미한다. 즉 n개의 process가 있을 때, 1:1로 데이터를 전송하는 것이 아닌 하나의 데이터를 n개의 processes에게 나눠주거나 n개의 processes의 데이터를 하나로 모으는, 집단이 참여하는 기본 통신 패턴을 의미한다. SPMD 프로그램(data parallelism을 활용하는 프로그램)에서는 한 문제를 여러 개의 process가 나눠서 해결한다. 예를 들어, 한 덩어리의 데이터를 n개의 process에게 나눠주거나, 문제를 푸는 과정에서 서로 간에 데..
Parallelism Parallelism은 한국어로 뭐라 번역해야 할 지 잘 모르겠지만 (병렬성?), 프로그램의 병렬화된 상태라고 생각하면 좋을 것 같다. 프로그램이 parallelism을 가진다는 것은 해당 프로그램이 병렬로 실행됨을 의미하고, parallelism을 가지는 프로그램에 대하여 일들을 어떻게 병렬로 실행하는 지에 대해서도 얘기할 수 있다. Parallelism의 종류에는 일반적으로 data parallelism, task parallelism, pipeline parallelism이 존재한다. 일반적으로 data parallelism과 task parallelism을 비교하여 설명하는데, 최근 FPGA를 공부하면서 관심을 가지고 있는 pipeline parallelism도 추가하였다. ..
프로그램 성능 높이기 Sequential 프로그램 실행 성능을 높이기 위해서 다음 같은 2 가지 접근법이 있다. Sequential program optimization : 알고리즘 고도화, 불필요한 코드 제거, 컴파일러를 통한 최적화 등등 Parallelzation : multi-core CPU, GPU, FPGA, multi node system 등을 이용한 계산 병렬처리 일반적으로 프로그램의 성능 향상시키기 위해서는 Sequential 프로그램 최적화를 먼저 진행하고, 목표 성능이 달성되지 않았다면 병렬화를 진행한다. 이때 병렬화 시 미리 어느 정도 성능 향상을 달성할 수 있는 지 예측할 수 있는 2가지 법칙이 있다. 암달의 법칙 (Amdahl's law) 일의 양이 정해졌을 때, 병렬화하면 이 일..
Memory (Consistency) Model 이란 A formal specification of how the memory system will appear to the programmer, eliminating the gap between the behavior expected by the programmer and the actual behavior supported by a system.” [Adve’ 1995] Multiple threads program에서 shared data가 어떻게 작동할 지에 대한 명세. Memory consistency model에 따라 (완벽히 squential할 것인가? relaxed한 memory consistency를 허용할 것인가 등) multiple thr..