멀티코어 프로세서가 대세로 자리잡았음은 의심할 여지가 없다. 싱글 코어 칩은 빠른 속도로 사라지고 있다. 그러나 단일 칩 상의 복수 CPU 코어에 맞춰 프로그래밍하기란 쉬운 일이 아니다. 이러한 유형의 프로세서가 널리 보급되면서 소프트웨어 개발 관행에도 변화가 필요하게 됐다. 인텔 이사 겸 병렬 처리 기술 전도사인 제임스 레인더스는 "동시 또는 병렬 개념을 활용할 경우 작업에의 접근 방식이 크게 달라질 수 있다"고 말한다. 다행히 멀티코어 소프트웨어 개발로 전환하도록 돕기 위한 강력한 도구들이 나와 있다. editor@itworld.co.kr
인텔 패러렐 스튜디오(Intel Parallel Studio)
인텔 패러렐 스튜디오 개발 환경은 비주얼 스튜디오 C/C++ 개발자가 멀티코어 프로세서를 온전히 활용할 수 있도록 해준다. 윈도우 애플리케이션 개발자는 이를 통해 리거시 직렬 애플리케이션 멀티코어 시스템에 적합한 소프트웨어로 전환할 수 있다. 스레딩 도우미, 최적화 컴파일러와 라이브러리, 메모리 오류 및 쓰레드 체커, 스레딩 성능 프로파일러 등의 기능을 제공한다.
인텔 쓰레딩 빌딩 블록(Intel Threading Building Blocks)
인텔 쓰레딩 빌딩 블록은 C++ 템플릿 라이브러리로, 가용 프로세서 코어를 활용하도록 확장되는 작업 기반 병렬 애플리케이션을 구축할 수 있게 해준다. 병렬 코드 구현을 위한 구성 요소가 제공된다. 쓰레딩 빌딩 블록은 인텔 패러렐 스튜디오 XE(익스트림 에디션)에 포함된다.
마이크로소프트 C++ AMP
비주얼 스튜디오 11을 대상으로 하는 마이크로소프트의 대규모 병렬 가속(Accelerated Massive Parallelism) 사양은 C++ 개발자가 이기종 컴퓨팅 환경에서 병렬 애플리케이션을 실행할 수 있게 해준다. 또한 병렬 컴퓨팅을 위해 GPU를 활용하는 기능도 제공한다. 이 사양은 마이크로소프트 외의 타 컴파일러에서도 GPU 파워를 활용할 수 있도록 공개됐다.
마이크로소프트 비주얼 스튜디오 2010과 닷넷 프레임워크 4
마이크로소프트는 패러렐 링크(Parallel Linq), 태스크 패러렐 라이브러리(Task Parallel Library), 쓰레드 세이프(thread-safe) 컬렉션, 등위(coordination) 및 동기화 데이터 구조 등으로 비주얼 스튜디오 2010과 닷넷 프레임워크 4를 보강하여 개발자가 병렬/동시 애플리케이션을 작성할 수 있도록 했다.
로그 웨이브 소프트웨어(Rogue Wave Software)의 쓰레드스포터(ThreadSpotter)
로그 웨이브 쓰레드스포터는 멀티코어/싱글코어 시스템에서 성능 문제를 발견하고, 이를 해결하기 위한 지침을 제공하는 메모리 최적화, 메모리 분석, 쓰레드 커뮤니케이션용 도구다.
로그 웨이브 소프트웨어의 토털뷰(TotalView)
로그 웨이브 토털뷰는 C/C++와 포트란을 위한 디버깅 도구 제품군으로, 코딩 오류를 찾아서 교정하고 프로토타입의 유효성을 검사하고 계산을 확인하고 코드를 인증하는 데 사용된다. 리눅스, 유닉스 및 맥 OS X에서 실행되는 컴파일된 애플리케이션에 사용할 수 있다.
이클립스 패러렐 툴 플랫폼(Eclipse Parallel Tools Platform)
이클립스 패러렐 툴 플랫폼은 병렬 애플리케이션 개발을 위한 강력한 플랫폼을 구축하기 위한 오픈소스 프로젝트로, 병렬 아키텍처와 런타임 시스템을 지원하는 IDE, 병렬 디버거를 포함하며 다양한 병렬 도구를 폭넓게 지원한다.
오라클 솔라리스 스튜디오(Oracle Solaris Studio)
오라클 솔라리스 스튜디오는 C, C++, 포트란용 개발 제품군으로, 솔라리스, 오라클 리눅스, 레드햇 엔터프라이즈 리눅스에서 실행되는 애플리케이션을 위한 멀티쓰레드 성능, 컴파일러 최적화 및 분석 도구를 제공한다. 병렬 프로그래밍을 위한 오픈MP 3.1 API 사양을 지원하므로 멀티코어 개발을 간소화할 수 있다. 스팍 프로세서와 x86 아키텍처를 지원한다.
IBM 래셔널 랩소디 디벨로퍼(IBM Rational Rhapsody Developer)
IBM 래셔널 랩소디 디벨로퍼는 임베디드 소프트웨어 애플리케이션을 위한 개발 환경으로, 멀티코어 프로세서에 맞는 코드를 생성하고 멀티코어 실행을 시각화하여 보여줌으로써 멀티코어 애플리케이션 구축에 따르는 복잡성을 줄일 수 있게 해준다.
틸레라 멀티코어 개발 환경(Tilera Multicore Development Environment)
틸레라 멀티코어 개발 환경은 틸레라 타일(Tile) 프로세서 아키텍처의 병렬 프로세싱 기능을 활용하도록 설계된 멀티코어 프로그래밍 플랫폼이다. 그래픽 형식의 멀티코어 애플리케이션 디버깅 및 프로파일링, 리눅스 런타임 구성 요소, 이클립스 IDE를 포함하며 펄(Perl), 파이썬(Python), PHP, 얼랭(Erlang)과 같은 언어를 지원한다.