본문 바로가기

thread5

[C++] 멀티스레딩 프로그래밍 (1) References Professional C++ https://en.cppreference.com/w/ Contents 멀티스레드 프로그래밍 개념 Thread Atomic Operations Library 이번 포스팅에서는 C++의 멀티스레딩 프로그래밍에 대해서 알아보려고 합니다. [C++] thread [C++] mutex [C++] 생산자(Producer) / 소비자(Consumer) 패턴 [C++] 비동기(Asynchronous) 실행 예전에 위의 포스팅들을 통해서 살펴봤었는데, 이번 포스팅을 통해서 전체적으로 정리해보려고 합니다. 멀티스레딩 프로그래밍(multithreaded programming)은 프로세서 유닛이 여러 개 장착된 컴퓨터 시스템에서 중요한 기법이며, 이를 이용하여 시스템에 있는.. 2022. 3. 3.
행렬 곱 연산 비교 (Pthreads, OpenMP, OpenCV, CUDA) Contents Pthread, OpenMP에서의 행렬 곱 연산 + 전치 행렬(transpose matrix) 사용 OpenCV library mat을 사용한 행렬 곱 연산 CUDA libarary로 구현한 행렬 곱 연산 Matrix Multiplication 이번 포스팅에서는 행렬 곱 연산을 여러 방법으로 구현하고, 그 성능을 비교해볼 예정입니다. WSL2 - ubuntu 20.04 환경에서 실행했으며, 사용한 라이브러리는 4 종류(Pthreads, OpenMP, OpenCV, CUDA)를 사용하여 행렬 곱 연산을 구현해보았습니다. 행렬 곱셈을 위해서 캐논 알고리즘과 같은 특별한 알고리즘은 사용하지 않습니다. pthread와 OpenMP에서의 행렬 곱은 3중 for문으로 구현되어 있는데, 캐시 미스에 .. 2021. 11. 26.
[C++] 생산자(Producer) / 소비자(Consumer) 패턴 References 씹어먹는 C++ (https://modoocode.com/270) Contents 생산자 / 소비자 패턴 Producer - Consumer 패턴 예시 생산자(Producer) - 소비자(Consumer) 패턴은 멀티 쓰레드 프로그램에서 자주 사용되는 패턴입니다. 여기서 생산자(producer)는 무언가 처리할 일을 받아오는 쓰레드를 의미합니다. 예를 들어, 웹사이트를 다운로드하여 분석하는 프로그램을 만들었다고 가정한다면, 이 경우 웹사이트를 다운로드하는 쓰레드가 생산자가 됩니다. 소비자(consumer)는 받은 일을 처리하는 쓰레드를 의미하며, 앞의 예에서 다운로드 받은 웹페이지를 분석하는 쓰레드가 소비자 역할을 하게 됩니다. 위와 같은 예시를 쓰레드로 구현해보겠습니다. #inclu.. 2021. 8. 9.
[C++] mutex References 씹어먹는 C++ (https://modoocode.com/270) Contents race condition (경쟁 상태) mutex deadlock (데드락) 2021.08.07 - [C & C++] - [C++] thread [C++] thread References 씹어먹는 C++ (https://modoocode.com/269) Contents thread join / detach thread에 인자 전달하기 single thread vs multi thread 쓰레드를 사용하면 병렬 수행이 가능한 작업들을 단일 쓰레드 프로.. junstar92.tistory.com 이전 게시글에서 thread에 대해서 알아봤습니다. 이번에는 서로 다른 쓰레드에서 같은 메모리를 공유할 때 발생.. 2021. 8. 7.
[C++] thread References 씹어먹는 C++ (https://modoocode.com/269) Contents thread join / detach thread에 인자 전달하기 single thread vs multi thread 쓰레드를 사용하면 병렬 수행이 가능한 작업들을 단일 쓰레드 프로그램으로 수행하는 것보다 훨씬 빠르게 처리가 가능합니다. 병렬 수행 작업을 예로 들면, 1에서 1000000까지의 덧셈이 있습니다. CPU 코어에서의 덧셈 연산 한 번에 1초가 걸린다고 가정해봅시다. 그렇다면 단일 쓰레드의 경우에는 1000000초가 걸리게 됩니다. 반면에 멀티 쓰레드를 사용하여 10개의 쓰레드를 동시에 실행시켜서 작업을 수행한다면, 각 쓰레드에서 덧셈은 100000초가 걸리고, 마지막으로 다 합칠 때 10초.. 2021. 8. 7.