gpgpu 에 대해선 모두가 아시리라 생각되지만
간단히 말하면 10년 전부터 거의 답보 상태에 머무른 cpu 대신 gpu성능을 이용해 연산능력을 높이는 것입니다
(gpgpu 의 간단한 도식)
부각되기 시작한건 가상화폐가 등장하면서 부터 로 가상화폐붐이 일어난 최근 년도보다 최소 5-7년전에 나왔죠
이즘부터 nv모 업체가 딥러닝에 관심가진걸로 기억하지만 이런 이야기는 차지하고..
gpgpu는 한계에 달한 cpu에 gpu를 이용하자는 원리인데 여기서 몇 가지로 이용방법이 갈리게 되죠
amd 는 hsa란 이종 결합? 컴퓨팅으로 cpu+gpu 를 통합한 체계로 cpu 단에서 gpu를 통합하여 PCI 단에서의 병목이나 손실 자체를 없애는 방식으로
nvidia 는 nvlink라는 cpu간 연결을 고속화해 병목현상을 완화하는 것을 만들엇구요 해당기능은 볼타에도 있죠
(hsa 도식)
현황을 이정도로 축소하면 과연 gpgpu의 미래는 무엇인가 라는 것인데 일단 문제점을 하나 짚어보죠
—-------------------------------------------------------------------------------------------------------------------
CPU 쪽에서 GPU 쪽으로 연산할 데이터를 제대로 던져주는 것도 만만한 작업이 아니다. 위에서는 간단한 분기문만을 예시로 들었지만, 데이터 자체를 전달하는 것도 고려할 사항이 많다. GPU에 작은 데이터를 일일이 다 나누어서 던져 주면 GPU에서 아무리 빠르게 처리해 줘도 GPU로 데이터를 보내고 받는 동안 시간을 까먹기 때문에 CPU보다 더 느려지는 경우도 있다. ( CPU와 GPU는 서로 간에 PCI-E를 통해서 통신하는데, 이 대역폭이 VGA의 로컬 메모리 대역폭보다 아직까지는 부족하고 CPU에 물려있는 메인 메모리에 비해서도 넉넉하지 못하다. 대역폭 뿐만 아니라 물리적으로 멀리 떨어져 있는 녀석들이다 보니 레이턴시도 문제가 된다. 그래서 데이터가 PCI-E를 통해 왔다 갔다 하다 보면 여기서 성능을 다 까먹는다. ) 실제로 현재 GPGPU 프로그램 중에서는 CPU도 GPU도 아닌 PCI-E에 의해 성능 병목이 결정되는 경우도 많다. APU가 나온 이유도 이렇게 멀리 떼 놓고 왔다 갔다 할 거면 차라리 하나로 합치지 그래?라는 발상으로 나온 것이라고도 할 수 있다.
- 나무위키 중
이대목을 보고 "어?" 라고 생각되신 분이 계시다면 제가 앞으로 할 이야기도 아실겁니다..;
벡터를 이용하는 gpu는 애초에 cpu 처럼 따박따박 연산가능한 물건이 아니란 점이죠
—----------------------------------------------------------------------------------------
게다가 CPU는 처음부터 연산식과 데이터가 지멋대로 튀는 환경을 가정해서 설계했지만 GPU에게 이런 조건을 던져주면 제어부가 CPU에 비해 안습이기 때문에 정작 일을 해야 할 ALU 부 분이 놀고 있다. 대표적으로 GPU에서 돌아갈 코드에 if 문을 하나 사용할 때마다 가용 자원을 절반씩 깎아 먹는다고 봐도 된다. if 문은 코드의 흐름을 두 개로 갈라 놓는 역할을 하기 때문에 이런 건 CPU 쪽에서 가능한 한 처리해주는 게 좋다. 그렇지 않으면 if 문의 반대편 절반에 해당하는 데이터는 처리되지 못하고 대기하다가 앞쪽 절반에 해당하는 데이터가 다 처리된 뒤에야 비로소 계산을 재개한다. 물론 if 문의 한쪽에 데이터의 99%가 몰려 있다거나 데이터 양 자체가 충분히 많아서 절반쯤 나뉘어도 GPU의 자원을 전부 사용하는 경우에는 써도 성능에 큰 지장은 없다.
역시 나무위키
gpu의 이런 단점은 gpgpu의 계산 능력을 저해하는 요소로 작용합니다
이런문제를 다른방향에서 역시 같이 겪고 있는 분야가 있습니다 바로 ann 혹은 dnn .
신경망 컴퓨터가 그것이죠
애플에선 npu 인텔에선 dpu등으로 접근되는 신경망 컴퓨터는 사실 gpu의 저런 단점을 보완하면서도
다른 방향에서 작동하는 gpu의 이종? 혹은 친척관계즘이 현재의 모습입니다.
(애플 a11내의 npu)
현재의 amd 의 hsa , 애플의 npu , nvidia의 볼타 등이 gpgpu가 가장 잘 발전한 모습이 아닐까 합니다만
제개인의 생각으론 결국 이런 gpgpu의 발전형은 ann +gpu의 통하한 모습으로 가리라 생각됩니다.
위에 언급하듯 결국 같은 문제를 가지고 있고 아직은 걸음마 단계인 ann 혹응 dnn이 그해답을 안고 시작하는듯하니까요
아마 먼훗날엔 ann(gpu)가 결국 cpu를 삼킨형태가 최종형이 아닐까하고..
(nvidia에서 arm을 gpu에 삽입하려는게 아마 이런걸로 가려는 의도로 제나름 해석되네요)
https://gigglehd.com/gg/index.php?mid=hard&category=14007