Yeon's 개발블로그

지식을 전파하는 개발자가 되고싶습니다.

분류 전체보기 83

12. 공유메모리 프로그래밍-Pthreads

공유메모리란? 여러 프로세서 (CPU)들이 메모리를 공유하며, 프로세서 사이의 통신이 공유메모리를 통해 이루어지는 것을 말한다. 프로세스를 하나 실행시키면, 그 프로세스가 여러쓰레드를 포크하고, 그렇게 생성된 쓰레드들은 테스크를 병렬로 수행한다. 쓰레드사이의 통신은 프로그램 안에 있는 공유변수를 이용하여 이루어진다. *Thread: 쓰레드는 프로세스보단 상대적으로 가벼우며, 보통 공유메모리 프로그램은 하나의 프로세스와 여러개의 쓰레드로 이루어진다. 자신을 생성시킨 프로세스와 address space를 공유하고 프로세스의 data에 접근이 가능하다. 프로세스 안의 쓰레드 끼리는 공유변수를 통해 통신이 가능하며 서로 제어도 가능하다. parent 쓰레드에 변화가 생기면 child쓰레드또한 영향을 받고, 생성..

Cloud Computing 2020.12.08

[JS] 클로저 개념

클로저란 ? (클로저의 핵심 3가지) 1) 함수를 선언할 때 만들어지는 유효범위가 사라진 후에도 호출할 수 있는 함수 2) 이미 생명주기상 끝난 외부 함수의 변수를 참조하는 함수 3) 자신이 생성될 때의 스코프에서 알 수 있었던 변수들 중 언젠가 자신이 실행될 때 사용할 변수들만을 기억하여 유지시키는 함수 예시 1) 외부함수의 변수를 참조하는 내부함수 var outer =function(){ var a =1; var inner=function(){ console.log(++a); }; inner(); }; outer(); //실행결과를 맞춰보세요! + 실행결과: 2 inner함수 내부에서는 a를 선언하지 않았기때문에 environmentRecord에서 값을 찾지 못하므로 outer의 LexicalEnvi..

JS 2020.11.26

11. 병렬프로그래밍: 분할정복과 동기화

1. 분할정복기법을 이용한 버킷정렬(Bucket sort Using Divide and Conquer Approach) 버킷정렬은 정렬하고자 하는 숫자의 전체 범위를 알고 있을 때 사용하는 정렬 방법이다. 전체 범위를 여러 버킷으로 나누고, 배열을 읽어가며 숫자들을 해당 버킷에 넣는다. 버킷들을 독립적으로 정렬하여 순서대로 모으면 정렬이 완료된다. 순차 알고리즘의 시간 복잡도는 버킷수를 m개라 가정했을 때 O(n log(n/m))이다. 숫자들이 균등분포를 이루어 버킷으로 이동하게 되는 숫자들의 개수가 서로 비슷할 때 효율적인 정렬방법이다. 하지만 숫자들이 균등분포를 이루지 않는 경우에는 어떤 프로세스는 할일이 많아 시간이 오래걸리고, 어떤 프로세스는 할일이 적어 일이 일찍 끝날 수 있다. 따라서 프로세스..

카테고리 없음 2020.10.22

10. 병렬프로그래밍: 병렬화가 잘되는 경우 (Embarrassingly Parallel Computations)

* Embarrassingly Parallel Computations 란? 완전히 독립적인 여러부분으로 나눌 수 있고, 프로세스 각각 계산이 가능한 병렬 프로그램을 말한다. 프로세스 간에 통신이 거의 필요없고, 각 프로세스는 다른 프로세스와 관계없이 실행될 수 있다. 모든 프로세스(Workers)가 같이 일을 시작하는 형태의 프로그램을 가진다. 1. 함수 적분 프로그램 사다리꼴 공식을 사용한 정적분 공식: h[f(x0)/2 + f(x1) + f(x2) + ... + f(xn)/2] #include #include double f (double x) //적분할 함수 void Get_data(int,int,double *, diuble *, int *); //데이터 입력 intmain(void){ int m..

Cloud Computing 2020.10.22

8. MPI프로그램 1:1 통신모드 (1:1 Communication Modes)

Communicattion mode Blocking Routines Nonblocking Routines Synchronous Send MPI_Ssend MPI_Issend Standard Send MPI_Send MPI_Isend Standard Receive MPI_Recv MP_Irecv Blocking routines: 송신하려는 변수나 배열의 데이터가 다른곳에 복사된 직후 종료 Nonblocking routines: 송신하겠다는 의사만 수신할 프로세스에게 표시하고 종료 Synchronous mode: 상대방의 송신이 끝나야 본인도 종료 Standard mode: 상대방과는 상관없이 본인이 실행, 종료 MPI_Isend(buf,count,datatype,dest,tag,comm,request) &..

Cloud Computing 2020.10.21

5. 병렬 프로그램의 성능 평가 (Performance)

* Speedup 과 Efficiency란? 어떤 문제를 푸는 순차프로그램과 병렬프로그램이 있다고 하자. 병렬프로그램이 순차 프로그램보다 몇 배나 더 빨리 실행되었는가를 나타내는 척도가 speedup이다. effiency는 전체 시스템이 몇 %정도 효율을 올렸는가를 나타내는 척도이다. Speedup S = Ts / Tp Efficiency S / p p = 코어 혹은 프로세서의 수 Ts = 순차 프로그램 런타임 Tp = 병렬 프로그램 런타임 만약 병렬 프로그램의 speedup이 실행에 사용한 프로세서 개수와 같을 때(p=S), 그 프로그램은 linear speedup을 낸다고 한다. 즉, 사용하 프로세서 개수에 선형적으로 비례하여 속도가 향상된다는 것이다. 하지만 일반적으로 프로세스의 개수가 증가할 수록..

Cloud Computing 2020.10.21

4. 인터커넥션 네트워크 (Interconnection Networks)

앞에서 포스팅한 분산메모리시스템과 공유메모리시스템 모두에게 인터커넥션 네트워크는 시스템의 성능에 크게 영향을 끼친다. *공유메모리 인터커넥트: bus, crossbar *분산메모리 인터커넥트 -Direct: ring, mesh, torus, hypercube -Indirect: butterfly, omega 1-1. 공유메모리연결망: Bus -병렬 통신을 위한 와이어와 버스 엑세스를 제어하는 하드웨어로 구성된다. 버스에 연결된 디바이스들이 통신 와이어를 공유한다. -트래픽이 클 때 대기시간이 길어지고, 버스에 연결된 디바이스 개수가 많으면 버스 사용경쟁이 커서 성능이 저하된다. -버스에 연결할 수 있는 디바이스의 개수는 보통 8~16개 정도이고, 값이 싼 것이 특징이다. 1-2. 공유메모리연결망: Cro..

Cloud Computing 2020.10.21