반응형

MultiProcessProgramming 18

[MPP] Introduction to OpenMP

OpenMP란 멀티쓰레드 기법을 이용하여 병렬처리를 간단히 구현하는 API입니다. C/C++ 그리고 Fortran을 지원하며 C/C++에서는 compiler directives, 라이브러리 루틴, 환경 변수로 이루어지며 실제 사용은 compiler directives로 간단히 할 수 있습니다. 내부적으로는 master쓰레드가 CPU 코어 개수만큼 쓰레드를 생성하여 특정 블럭 내의 내용을 각각의 코어가 병렬적으로 처리할 수 있게 할당하여 처리합니다. 병렬처리 자체는 루프 내의 내용 나누기, 특정 코드내의 섹션 나누기로 크게 나누어 집니다. 하루정도 간단히 사용한 경험으로는 간단한 컴파일 디렉티브 만을 가지고 하나의 함수 내의 처리를 CPU 코어 개수만큼 병렬로 가져가 성능 향상을 이룬다는 것이 굉장히 유용..

MPP Concept #3 NUMA

이 글은 Wikipeida의 Non-Uniform Memory Access를 요약하여 놓은 것입니다. Non-Uniform Memory Access or Non-Uniform Memory Architecture (NUMA)는 멀티프로세서에 사용되는 개념으로 각각의 프로세서는 자신의 로컬메모리를 가지게 되어 자신의 로컬메모리에 대한 처리가 굉장히 빠른 아키텍처를 말합니다. 이는 Symmetric Multi Processing(SMP, 멀티프로세서가 같은 메모리를 공유하는 일반적인 방식)에서 확장 되었으며 1990연대에 Unix계열의 H/W에서 채용되었습니다. Basic Concept 처음에는 메모리의 속도가 CPU의 속도보다 빨랐으나 기술 진보에 따라 이 현상의 역전되었다. CPU는 느린메모리 속도를 고속..

Multi Process Programming Concept #2

이글은 zdnet에 동영상 강의를 저의 편의성에 맞게 요약하여 놓은 글입니다. 강의자는 James Reiners (Director, Intel Corporation)으로 MPP에 등장 배경에서 부터 개념, 라이브러리 소개등을 하고 있습니다. Modern CPU Design Power Consumption -> 성능을 높이기 위하여 더 높은 전력을 요구하는데 비하여 더 적은 전력량으로 n개의 CPU를 돌릴 경우 더 높은 성능을 얻을 수 있다. 즉, 클락을 줄이는 대신에 남는 전력으로 n개의 CPU를 돌리는 것이다. i.e. overclock으로 13%의 성능 향상을 얻기 위하여 73%의 전력을 더 사용하여야 함 최근에는 전력을 더 사용해도 큰 성능 향상을 얻을 수 없음 반대로 전력을 덜 사용하고 n개의 C..

Multi Process Programming Concept #1

암달의 법칙(Amdahl's Law) 연산의 p비율만큼만 병렬화가 가능한 경우, 최대 속도 향상은 1/(1-p) Work Law T1: 1개의 프로세스 사용시 최단 수행 시간 TP: P개의 프로세스 사용시 최단 수행 시간 TP >= T1/P Span Law 병렬실행시 반드시 실행해야 하는 최단 길이, 즉 임계 경로로 1개의 프로세스로 실행시 가장 빠른 실행 시간을 나타냄 Parallelism T1: 모든 노드의 수행시간 T@: 무한개의 프로세스 사용시 최장 패스 노드 수(수행 시간) T1(=최단길이)/T@(=프로세스 개수): 무한개의 프로세스 사용시의 최대 속도 향상 i.e. 18(총 노드 개수) / 9(최장 패스 노드)

반응형