본문 바로가기

프로그래밍206

[Swift] 문자열과 문자 (Strings and Characters) References https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html Contents String Literals Initializing Empty String String Mutability Strings are Value Types Working with Characters Concatenating Strings and Characters String Interpolation Unicode Counting Characters Accessing and Modifying a String Substrings Comparing Strings Unicode Representations of Strings Strings(문자열)은.. 2021. 12. 14.
[Swift] Basic Operators References https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html Contents Assignment Operators Comparison Operators Nil-Coalescing Operators Range Operators 연산자(operator)는 그냥 스킵하려고 했는데, C 스타일과는 다른 부분이 몇 가지 있어서 그 부분만 체크하고 넘어가려고 합니다. Assignment Operator 대입 연산자(a = b)는 a의 값을 b의 값으로 업데이트하거나 초기화할 때 사용됩니다. let b = 10 var a = 5 a = b // a is now equal to 10 여러 값을 갖는 튜플의 경우에도 다양한 대입이 가능합니다.. 2021. 12. 12.
[Swift] Basic 문법 References https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html Contents Swift 기본 문법 와이프는 디자인 쪽 일을 하는데, 얼마전에 와이프와 앱을 함께 만들어보기로 했습니다. 둘 다 iOS 앱 쪽은 처음이니 서로 공부하며 준비를 하기로 해서 틈틈히 swift 언어에 대해서 공부하려고 합니다. 일을 하면서 공부하기 때문에 너무 깊게 살펴보지 않고 스윽 훑어보는 식으로 공식 사이트에서 제공되는 문서를 보며 공부하고 정리해 볼 예정입니다. Swift ? Swift는 iOS, macOS, watchOS, tvOS app 개발을 위한 애플의 프로그래밍 언어입니다. Swift의 많은 부분은 C와 Objective-C와 닮았습니다. 정수.. 2021. 12. 12.
행렬 곱 연산 비교 2 (OpenBLAS, Intel MKL, cuBLAS) Contents OpenBLAS (cblas) 라이브러리를 사용한 행렬 곱 연산 intel-mkl을 사용한 행렬 곱 연산 cuBLAS 라이브러리를 사용한 행렬 곱 연산 행렬 곱 연산 비교 (Pthreads, OpenMP, OpenCV, CUDA) 행렬 곱 연산 비교 (Pthreads, OpenMP, OpenCV, CUDA) Contents Pthread, OpenMP에서의 행렬 곱 연산 + 전치 행렬(transpose matrix) 사용 OpenCV library mat을 사용한 행렬 곱 연산 CUDA libarary로 구현한 행렬 곱 연산 Matrix Multiplication 이번 포스팅에서는 행.. junstar92.tistory.com 이전 게시글에서 여러 병렬 프로그래밍을 위한 라이브러리를 사용.. 2021. 11. 27.
행렬 곱 연산 비교 (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.
[OpenMP] 행렬-벡터 곱 연산 References An Introduction to Parallel Programming Contents Matrix-vector multiplication [MPI] 행렬 - 벡터 곱 연산 + 성능 평가 [pthread] 행렬 - 벡터 곱 연산 (+ 캐시 일관성, 거짓 공유) MPI와 Pthreads에서 구현해본 행렬-벡터 곱 연산과 마찬가지로 OpenMP에서도 행렬-벡터 곱 연산 코드를 작성해봤습니다. void Omp_mat_vec_mul(double A[], double x[], double y[], int m, int n, int thread_count) { double start, finish, temp; start = omp_get_wtime(); #pragma omp parallel for.. 2021. 11. 25.
[OpenMP] Critical Section References An Introduction to Parallel Programming Contents Producer / Consumer 구조 프로그램 (메세지 패싱) critical directive explicit barrier atomic directive omp lock 이번 포스팅에서는 parallel for이나 for 디렉티브로는 병렬화하기 어려운 문제에 대해서 살펴보겠습니다. 메세지를 보내고 받는 프로그램을 작성해보려고 하는데, 이 프로그램에서 각 스레드는 공유하는 메세지 큐를 가지고 있으며, 하나의 스레드가 다른 스레드에 메세지를 전송하려고 하면, 그 메세지는 목적지가 되는 스레드의 큐에 enqueue됩니다. 그리고 목적지 스레드에서는 메세지 큐를 dequeue하여 가장 먼저 들어온 .. 2021. 11. 25.
[OpenMP] schedule clause References An Introduction to Parallel Programming Contents schedule clause static type dynamic type / guided type runtime type auto type parallel for 디렉티브를 사용할 때, 루프 반복을 정확히 각 스레드에 할당하는 것은 시스템마다 다릅니다. 그러나 대부분의 OpenMP 구현에서는 block partitioning(블록 파티셔닝)을 사용합니다. 만약 시리얼 루프에 n개의 반복이 있다면 병렬 루프에서는 처음 n/thread_count가 스레드 0에 할당되고 다음 n/thread_count가 스레드 1에 할당됩니다. 하지만, 이렇게 스레드에 할당하는 것이 최적화된 것은 아닙니다. 예를 들어,.. 2021. 11. 24.
[OpenMP] for 디렉티브 References An Introduction to Parallel Programming Contents for 디렉티브 parallel for 디렉티브와 for 디렉티브 비교 이전 MPI 프로그래밍에 관한 포스팅에서 버블 정렬과 odd-even 정렬에 대해서 살펴봤는데, 이번에는 OpenMP에서의 버블 정렬과 odd-even 정렬에 대해서 알아보겠습니다. 2021.11.13 - [프로그래밍/병렬프로그래밍] - [MPI] Odd-even transposition sort (MPI Safety) [MPI] Odd-even transposition sort (MPI Safety) References An Introduction to Parallel Programming Contents Odd-even tr.. 2021. 11. 23.
[OpenMP] for 루프 병렬화 (+ default, private, shared clause) References An Introduction to Parallel Programming Contents 데이터 의존성 private clause default, share clause 2021.11.21 - [프로그래밍/병렬프로그래밍] - [OpenMP] 사다리꼴 공식 (trapezoidal rule) [OpenMP] 사다리꼴 공식 (trapezoidal rule) Refenences An Introduction to Parallel Programming Contents 사다리꼴 공식 (trapezoidal rule) ciritical 디렉티브 변수의 범위(scope) reduction 디렉티브 parallel for 디렉티브 2021.11.09 - [프로그래밍/.. junstar92.tistory... 2021. 11. 22.