본문 바로가기

Pthreads5

[pthread] 배리어(Barrier)와 조건 변수(Condition Variable) References An Introduction to Parallel Programming Contents 배리어(Barrier) 조건 변수(Condition Variable) 2021.11.18 - [프로그래밍/병렬프로그래밍] - [pthread] Thread 동기화 이전 포스트에서 메세지 전송 프로그램을 작성하며 스레드 동기화에 대해서 알아봤습니다. 프로그램에서 스레드들이 동일한 포인트에 있는지 확인하여 동기화할 수 있었습니다. 어떠한 스레드도 모든 스레드가 이 포인트에 도달할 때까지 진행될 수 없으므로 동기화의 이런 포인트 지점을 배리어(Barrier)라고 합니다. 배리어는 여러 어플리케이션에서 다양하게 사용됩니다. 이전 MPI 프로그래밍에서 성능 측정을 위해 각 스레드의 수행 시간을 측정할 때, .. 2021. 11. 19.
[pthread] Thread 동기화 References An Introduction to Parallel Programming Contents Semaphore (세마포어) Producer-Consumer Synchronization 각 스레드는 다른 스레드로 '메세지 전송'을 수행하고 전송받은 메세지를 출력하는 프로그램을 작성한다고 가정해봅시다. 예를 들어, t개의 스레드가 있을 때, 스레드 0은 스레드 1로 메세지를 전송하고 스레드 1은 스레드 2로 메세지를 전송합니다. 즉, 스레드 t-2는 스레드 t-1에게 메세지 전송하고 스레드 t-1은 스레드 0에게 메세지를 전송합니다. 그리고 스레드는 메세지를 수신한 후에 수신받은 메세지를 출력하고 스레드를 종료합니다. 메세지 전송을 구현하기 위해서 char* 타입의 공유 배열을 할당하고, 각 .. 2021. 11. 18.
[pthread] Critical Section References An Introduction to Parallel Programming Contents PI 값 구하기 Critical Section (크리티컬 섹션) Busy waiting Mutex (뮤텍스) 행렬-벡터 연산 코드는 꽤 쉽게 작성했습니다. 이는 공유 메모리 위치를 쉽게 액세스할 수 있기 때문입니다. 초기화 이후에, y를 제외한 모든 변수들은 각 스레드에서 쉽게 접근할 수 있습니다. 즉, y를 제외한 모든 공유 변수들은 main 스레드에서 초기화된 이후에 변경될 수 없다는 것을 의미합니다. 게다가 y에 대해서 무언가 변경을 하려고 하더라도 오직 하나의 스레드만이 개별 컴포넌트를 변경할 수 있습니다. 따라서 두 스레드(혹은 그 이상)가 하나의 컴포넌트를 변경하지 않습니다. 잘 아시겠지.. 2021. 11. 17.
[pthread] 행렬 - 벡터 곱 연산 (+ 캐시 일관성, 거짓 공유) References An Introduction to Parallel Programming Contents 행렬-벡터 곱 연산 병렬화 Cache, Cache Coherence, False Sharing 이전에 MPI를 통해서 행렬-벡터 곱 연산을 병렬화하고 그 성능을 평가해보았습니다. 2021.11.12 - [프로그래밍/병렬프로그래밍] - [MPI] 행렬 - 벡터 곱 연산 + 성능 평가 [MPI] 행렬 - 벡터 곱 연산 + 성능 평가 References An Introduction of Parallel Programming Contents 행렬 - 벡터 곱 연산 MPI_Allgather MPI_Wtime, MPI_Barrier 이번에는 행렬-벡터 곱 연산을 MPI를 사용하여 병렬화해보도록 하겠습니다. \.. 2021. 11. 16.
[pthread] Hello, Pthreads References An Introduction to Parallel Programming Contents 공유 메모리 시스템 프로세스, 스레드 그리고 pthreads Hello, Pthreads 개발자 입장에서 공유 메모리 시스템은 모든 코어가 모든 메모리 위치에 접근할 수 있습니다. 그러므로 공유 메모리 시스템에서의 접근 방법은 특정 메모리 위치를 "공유"하도록 설정하는 것입니다. 이는 병렬 프로그래밍에서 당연한 방법입니다. 그러나 앞으로 pthread에 대해서 알아보면서 공유 메모리 시스템에서 프로그래밍할 때 문제가 있다는 것을 알아보도록 할 것입니다. 이러한 문제점들은 분산 메모리 프로그램에서 발생한 문제와는 조금 다릅니다. 프로세스, 스레드, Pthreads 스레드(thread)는 MPI 프로그.. 2021. 11. 15.