2년 전에 한참 cuda에 푹 빠졌다가 나온적이 있습니다.
지금은 어느새 병렬 개발환경에서도 nvidia주도의 cuda뿐만 아니라 M$의 directCompute, 애플이 지원하는 openCl 등 첨예한 경쟁구조를 갖추고 있습니다(근데 애플은 걍 크로노스가 자기거라고 하지 멀 맨날 오픈소스라고 눈가리고 아옹을..)
여튼 cuda는 배우기는 손쉽지만 사용하기는 어렵습니다. 뭐랄까 그것은 처음 쉐이더 프로그래밍을 배울때와 마찬가지로 어렵습니다.
바로 병렬 분산 알고리즘을 배워야하기 때문입니다. 병렬분산 알고리즘은 배우기 어렵다를 넘어 아예 구조적인 프로그래밍과 다른 세계관(?)을 갖고 있기 때문에 일단 익숙해지면 이쪽이 자연스럽지만 그러기 전까지는 전혀 이해가 안되는 느낌입니다.
문제를 쪼개서 독립된 원자함수로 무결하게 구성한 뒤 적절한 방법은 동기화한 결과로 원하는 문제를 해결하는 센스는 훈련하면 누구나 획득할 수 있긴 하지만 문제는 너무 오랜 시간 동기화 구조적 알고리즘에 쪄들어 살았다는 것이겠죠.
recent comment