사업소개

병렬프로그램

1.공유 메모리 병렬 프로그래밍 모델

SMP나 CMP등의 공유 메모리 시스템 구조에 적합한 방식으로써 다수의 코어(멀티코어인 경우)의 협력을 통해 병렬화를 수행하는 모델이다. 이 모델에서는 여러 개의 스레드를 생성한 후 다수의 코어로 분배하여 병렬처리를 수행하게 되는데, 스레드의 생성 및 처리를 위해 일반적으로 UNIX계열 POSIX표준의 pthread라는 API를 활용합니다. 물론 Windows 계열에서도 pthread를 지원하고 있습니다. 하지만 이러한 phtread는 스레드 생성에서부터 병렬화, 동기화 등 신경써야 할 부분이 너무 많습니다. 그래서 나오게 된 도구가 OpenMP입니다.

OpenMP는 C/C++/Fortran 기반의 병렬 프로그래밍 API로써 병렬처리를 위한 다양한 기능들을 추상화하여 손쉽게 프로그래밍 할 수 있는 환경을 제공합니다. 이외에 인텔의 TBB(Thread Building Block)나 Cilk++ 등도 C++ 기반에서의 병렬프로그래밍 도구로써 많이 사용되고 있습니다. 또한 .NET Framework 버전 4.0 이상부터는 TPL(Task Parallel Library)라는 병렬 라이브러리를 제공하여 C#에서도 손쉽게 병렬 프로그래밍을 구현할 수 있게 되었습니다.

2.메시지 패싱 프로그래밍 모델

분산 메모리 시스템 구조에 적합한 병렬 프로그래밍 모델이며, 메모리 공유 방식이 아니기 때문에 노드 간에 네트워크를 통해 메시지를 주고 받는 형태로 정보를 공유하게 됩니다. 따라서 네트워크 상의 통신 속도가 성능의 매우 중요한 요소로 작용하며, 고속의 연산처리를 필요로 하는 슈퍼컴퓨터에 많이 사용됩니다.

3.가속기 프로그래밍 모델

위 두가지 모델처럼 범용 CPU를 활용한 병렬 프로그래밍 모델이 아닌 특정 연산에 특화된 가속기를 활용하여 병렬화하는 모델을 가속기 병렬 프로그래밍 모델이라고 합니다. 이러한 가속기를 활용한 연산처리 방식을 이기종 컴퓨팅이라고 하며, 단순하고 반복적인 수치계산에 최적화된 CPU, DSP, GPU등을 활용하는 프로그래밍 모델이라고 볼 수 있습니다. 가속기 프로그래밍 모델은 수치계산에 최적화되어 있으므로 데이터 병렬화에 주로 사용됩니다.

현재 병렬컴퓨팅 시장에서 가장 각광받고 있는 것이 바로 GPU를 활용한 GPGPU 기술인데,GPGPU를 지원하기 위한 다양한 프레임워크들이 시장에 나와 있는 상태 입니다. NVIDA에서 만든 CUDA가 가장 대표적이며, CUDA를 추상화해서 손쉽게 프로그래밍 할 수 있는 OpenACC과 OpenGL로 유명한 크로노스 그룹에서 내놓은 OpenCL 프레임워크도 있습니다

GPU 가속 컴퓨팅이란?

GPU가속 컴퓨팅은 그래픽 처리 장치(GPU)와 CPU를 함께 이용하여 과학, 분석, 공학, 소비자 및 기업 애플리케이션의 처리속도를 높이는 것을 말합니다. NVIDIA에 의해 2007년도에 개척된 GPU 가속은 현재 전세계 정부 산하의 연구소, 대학교, 대기업 및 중소기업의 에너지 효율적인 데이터센터에 사용되고 있습니다. GPU는 자동차부터 휴대폰, 태블릿, 드론 및 로봇까지 아우르는 다양한 플랫폼상의 애플리케이션을 가속합니다.

GPU가 애플리케이션을 가속하는 방법

어플리케이션의 연산집약적인 부분을 GPU로 넘기고 나머지 코드만을 CPU에서 처리하는 GPU 가속 컴퓨팅은 전례 없이 강력한 어플리케이션 성능을 제공합니다. 사용자 입장에서는 어플리케이션의 속도가 놀라울 정도로 빨라졌음을 느낄 수 있습니다.

CPU 대 GPU

CPU와 GPU의 차이는 그 작업 처리 방식을 비교해보면 쉽게 알 수 있습니다. 하나의 CPU는 직렬 처리에 최적화된 몇 개의 코어로 구성된 반면, GPU는 병렬 처리용으로 설계된 수 천 개의 보다 소형이고 효율적인 코어로 구성되었습니다.GPU는 병렬 처리를 효율적으로 처리하기 위한 수천 개의 코어를 가지고 있습니다.