IT_Study55 [Parallel Computing] (13) MPI MPI(Message Passing Interface)는 Cluster의 node 간의 통신을 수행한다. Symmetric multiprocessing 혹은 SMP(Shared-memory multiprocessing)는 여러 개의 프로세서들을 포함하고 있으며 각 프로세서는 각자의 메모리 가지고 있고, 프로세서들이 모두 사용하는 공유 메모리를 가지고 있고, 모든 프로세서들은 모든 영역에 대해서 접근할 수 있다. 예를 들어 프로세서 'A'의 메모리 영역에 프로세서 'B'가 접근하여 데이터를 가져올 수 있다. 프로세서 'B'는 바로 프로세서 'A'의 메모리 영역에 접근할 수 없고, MPI와 같은 Interface를 통해서 프로세서 'A'에 요청하여 접근할 수 있다. MPI는 현재 Parallel Comput.. 2024. 4. 21. [Parallel Computing] (12) Caches 가장 최근에 사용되었거나 근처의 데이터나 Instruction들은 다시 사용될 확률이 높다. 시간 관점에서 현재 접근했던 데이터는 가까운 시점에 다시 쓰일 수 있다. 이 부분을 Temporal locality라고 한다. 공간 관점에서 사용된 데이터가 저장된 공간 근처의 다른 데이터들은 가까운 시점에 다시 쓰일 수 있다. 이 부분을 Spatial locality라고 한다. 예를 들어, 아래와 같은 코드를 보면 알 수 있다. sum = 0 for (i = 0; i sum = sum + A[0] i = 1 -> sum = sum + A[1] i = 2 -> sum = sum + A[2] 해당 Loop.. 2024. 4. 21. [Parallel Computing] (11) OpenMP OpenMP는 Sharedf-memory parallelism을 수행하기 위한 API로, C, C++ 그리고 Fortan 프로그램에서 수행가능하다. 병렬 프로그래머를 위한 컴파일러 지시자, 환경 변수 등을 제공한다. 컴파일러는 스레드 프로그램과 동기화를 생성하는데, 이를 자동으로 수행하지는 않는다. OpenMP에서의 스레드는 실행 단위로 스레드마다 Stack, thread-private memory로 불리는 associated static memoy를 가진다. Thread-safe routine은 앞 글에서도 언급했었지만, 특정 함수를 여러 스레드가 동시에 수행해도 정확하게 수행되는 것을 말한다. OpenMP 실행 모델은 Fork-join parallelism 형태로 수행된다. Fort는 Master 스.. 2024. 4. 20. [Parallel Computing] (10) Synchronization 동기화(Synchronization)는 스레드 간이나 프로세서 간 실행되는 순서를 정하고, 상호 배제(Mutual Exclusion)를 달성하기 위하여 필요하다. 스레드 관점에서의 상호 배제(Mutual Exclusion)는 특정 스레드가 수행하고 있는 코드 부분을 다른 스레드가 수행할 수 없을 때, 즉 하나의 스레드만 해당 코드 영역을 수행할 수 있때를 의미한다. 베리어는 일종의 동기화 포인트이다. 여러 스레드가 동시에 수행하고 있을 때, 스레드가 이 베리어를 만나면 실행을 멈추고, 다른 모든 스레드가 이 베리어가 도달할 때까지 기다린 다음에 다시 실행을 계속하게 된다. 일반적으로 SPMD(Same Program Mutiple Data)와 같이 같은 함수(코드)를 동시에 실행할 때 흔하게 이용된다. D.. 2024. 4. 20. 이전 1 ··· 4 5 6 7 8 9 10 ··· 14 다음