컴퓨팅 환경이 기존 CPU에서만 처리되는 시대에서 변화하려고 하고 있다. 전력 효율성의 문제를 내포한 메모리 대역폭의 제약에서 이제 더이상 CPU 자체의 성능 향상은 기대할 수 없는 지경에 이른 가운데, GPU 또는 DSP같은 기존에는 특정 용도로 사용하던 프로세서를 이용하여 범용적인 처리에 활용하고자 하는 소프트웨어 환경이 확대되고 있다.
이러한 이종 프로세서를 활용하는 "하이브리드 컴퓨팅" 소프트웨어 환경의 하나인 OpenACC (Open Accelerator)의 사용법을 정리해볼까 한다. OpenACC는 2011년 표준화되어 OpenMP와 같은 지시자기반의 프로그래밍 모델을 채용하였으며, 가속 장치의 병렬 프로그래밍을 위한 모델로 그 적용이 GPU에만 국한되지 않고 Coproccessor 그리고 멀티코어 CPU에도 대응할 수 있다.
MPI 프로세스를 GPU에서 처리해주지 못하며, CUDA Fortran을 하긴 너무 피곤하다.. 게다가 AMD는 포기할 것인가?
Intel의 Xeon Phi 또한 포기할 수 없지!
Fortran 지원도 없는 OpenCL을 할 수는 없지! (뭐.. 인터넷 어딘가 구석탱이에 Wrapper가 있겠다만..)
물론 GCC는 6이상이나 되어야 지원을 하지만.... 뭐 어쩌겠어 최신 판을 깔아봐야지.
인텔이나 Nvidia-pgi에서 리눅스용으론 Community Version 같은 것을 깔 수 있으니 해볼 수는 있을 테다.