초등학생도 이해할 수 있는 CUDA core vs Tensor core
쿠다코어, 텐서코어는 모두 핫한 엔비디아에서 만든 것이지만 그 용도가 살짝 다르다.
학부생 틀딱 화석 석유시절, 졸업 즈음 쿠다코어가 막 나오기 시작해서 써봤던 기억이 난다.
그러니까 그래픽 처리를 빠르게 하기 위해 나온 게 쿠다코어라면,
딥러닝이 등장 즈음 행렬을 빠르게 처리 하기위해 나온게 텐서코어.
그러니까 예를들면,
쿠다코어는 초등학교 체육대회 박터트리기에서 초등학생 개개인이라고 생각하면 된다.
텐서코어는 초등학교 체육대회 박터트리기에 난입한 MLB 프로팀 선수들로, 모두 빠따를 들고 있음.
초딩들이 열심히 콩주머니를 던질 때, 박터트리기에 특화된 무기(빠따 및 야구공)를 팀이 합심해서 사용.
CUDA 코어는 GPU 상에서 연산을 처리하는 기본 단위임.
CUDA 코어는 CPU 코어와 유사한 역할을 하지만, 더 많은 수가 동시에 병렬로 연산하도록 설계되었습니다. ( 드라마 삼체에서 휴먼 컴퓨팅 청기백기처럼 )
그래서 CUDA 코어는 구조적으로 단순한 구조, 더 적은 캐시, 더 작은 instruction set, 더 낮은 clock rate를 갖고 있음
CUDA 코어는 일반적으로 fp32 연산을 수행하므로 더 높은 수준의 계산 정확도를 얻을 수 있음.
텐서 코어는 4x4 행렬 연산을 수행하는 GPU 코어입니다.
텐서 코어는 1 GPU clock에 4x4짜리 fp16 행렬을 두 개를 곱하고 그 결과를 4x4 fp32 행렬에 더하는 matrix multiply accumulate 연산을 수행함
텐서 코어는 연산 속도가 매우 빠르지만, fp16 연산이기 때문에 어느정도 계산 정확도를 희생해야 하기도 하지만, 포기하는 만큼 연산이 빨라지는 효과도 있고, 정확도를 극단적으로 줄이더라도 결과에 크게 영향을 가지 않는 트릭들이나 연구가 많이 있음( 안경알 압축처럼 어느정도 타협 )
텐서 코어는 cuBLAS에서 4~9배, cuDNN은 4~5배의 성능 향상을 기대함.
CUDA 코어와 Tensor 코어는 각각 다른 연산에 최적화되어 있다는 것만 기억하자.