문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 GPGPU (문단 편집) == CPU와 GPU의 차이 == GPU는 구조가 [[CPU]]하고는 전혀 다르다. CPU는 다양한 환경에서의 작업을 빠르게 수행하기 위해 복잡한 ALU(산술 논리 유닛)와 FPU(부동 소수점 유닛) 구조를 가지고 있고, 명령어 하나로 처리할 수 있는 기능([[SIMD]])도 많으며, 각종 제어 처리를 위한 부분이 매우 많다. CPU에 계속 추가되고 있는 확장 명령어 셋들을(SSE, AVX, FMA 등) 보면 명령어 하나로 계산 여러 개를 한꺼번에 하거나 복잡한 수식 처리를 하기 위한 것이 많다. 예를 들어 곱하기 8개나 벡터곱 연산을 한번에 한다거나... 반면 GPU는 특화된 연산을 빠른 속도로 수행하기 위해 그런 부분을 과감히 삭제하고 비교적 단순한 다수(수백 개)의 ALU와 FPU에 몰빵하는 구조로 만들어졌다. 때문에 GPU 단독으로는 어떤 작업도 처리할 수 없다. GPU라는 계산기를 두드리며 '''제어'''하고 '''명령'''하는 것은 여전히 CPU이다. GPU는 대량 계산에 용이하게 설계되므로 잘 이용하면 연산 성능을 향상시킬 수 있다. 예를 들어 [[BOINC]] 중 몇몇 프로젝트는 CPU만으로는 10시간 이상이 걸리는 반면, GPU를 사용하면 2시간에서 3시간만에 프로젝트가 완료된다. [[3ds Max]]를 비롯한 3D [[그래픽 툴]]의 [[렌더링|렌더러]]에서도 CPU를 사용하면 5시간 이상 걸리는 인테리어 렌더링을 GPGPU로 처리하면 약 20배 더 빨리 연산할 수 있다. GPU의 연산 유닛이 많을수록 속도는 배가 된다. 글로벌 일루미네이션(Global Illumintion)등에서 많은 샘플 수를 사용할 때 CPU보다 빠르게 연산할 수 있다. 위의 설명을 비유로 풀어보자면 CPU는 '최고급 엔지니어 몇 명이 모인 설계, 시공사'이고 GPU는 '현장 노동자들이 모인 인력 시장'이라고 보면 된다. 엔지니어 몇 명에게 자재와 공구 쥐어주면 간단한 건물 정도는 몇 년 걸려서 지을 수 있겠지만[* 64코어 128스레드짜리 라이젠 스레드리퍼로도 그래픽 카드 없이 에뮬레이션 하면 [[크라이시스(게임)|크라이시스]] 하나 돌리기도 벅차다.] [[마천루]] 같은 건 다음 세기 즈음에나 지을 수 있을 것이다. 반대로 현장 노동자 백만 명이 있어도 그들은 스스로 설계도를 만들 능력도 그들을 통솔하는 역할도 없으므로 아무것도 못 짓는다. 여기서 엔지니어들과 현장 노동자 수천 명이 서로의 역할대로 힘을 합친다면 마천루도 똑같이 몇 년 만에 지을 수 있을 것이다. 이것이 바로 GPGPU. CPU는 이론적인 FP32 연산 기준 인텔, AMD 양사 일반 데스크톱용 제품군 중 최상위 라인인 i9-10900K가 1.5 TFLOPS,[* 올코어 터보 부스트 클럭 4.8 GHz 기준.] 라이젠 9 5950X가 1.95 TFLOPS이고,[* 올코어 프리시전 부스트 클럭 3.9 GHz 기준.] 현존 최다 코어 개수의 서버 및 워크스테이션용 CPU라 해도 제온 플래티넘 8380이 3.75 TFLOPS,[* 올코어 터보 부스트 클럭 3.0 GHz 기준.] 라이젠 스레드리퍼 3990X가 6 TFLOPS에[* 올코어 프리시전 부스트 클럭 3.0 GHz 기준.] 불과하다. 프로그래밍의 편의성 때문에 쓰는 셈. 그러므로 엄연히 말하자면 GPGPU도 아닌 CPU 연산이다. 더구나 CPU 성능은 1997년 초부터 도입된 [[https://en.wikipedia.org/wiki/MMX_%28instruction_set%29|MMX]]부터 발전되어 16년 후에 등장한 [[플린 분류#s-2.2|SIMD]] 명령어 셋인 [[고급 벡터 확장#s-2.2|AVX2]] 사용을 전제로 멀티코어 성능을 다 끌어다 썼을 때 기준이라 어느 정도는 GPGPU에 가까운 병렬화 프로그래밍 최적화를 전제로 한 것이다. 특정 명령어 셋 없이 단순 무식하게 짜면 이론적인 연산 성능에 가깝기는 커녕 반토막 혹은 그 이하로 뽑을 수도 있다! 2014년 자료긴 하지만 실제 [[http://imgur.com/a/jbu7I|싱글 스레드 성능측정 데이터]]를 봐도 그렇다. 이렇게 일반 데스크톱용 CPU가 2018년에 들어서야 라이젠 7 2700X, 코어 i9-9900K에서 겨우 1 TFLOPS대에 진입하고, 서버용 CPU라도 최대 수 TFLOPS에 그치고 있는데, 그래픽 카드는 똑같이 일반 데스크톱용인 지포스 RTX 2080 Ti가 약 14 TFLOPS, RTX 3090이 약 35 TFLOPS, 라데온 VII가 약 13 TFLOPS, RX 6900 XT가 약 23 TFLOPS로 수십 TFLOPS에 놀고 있으며 23년도에 출시된 4090은 82TFLOPS 7900XTX는 61TFLOPS로 CPU로는 더이상 따라가기 힘든 수준의 연산 능력을 보인다. 연산 유닛의 확장보다는 다른 영역에서(분기 예측, 프리페치, 마이크로 옵 캐시, 재정렬 버퍼, 연산 스케줄러 등) 개선시켜 연산 성능 효율을 높이는 쪽으로 성능을 꾀하려는 CPU로써는 연산 유닛이 계속 확장되는 그래픽 카드와의 격차를 앞으로도 좁히기 힘들 것이다. 자연스럽게 [[슈퍼컴퓨터]]가 생각날 텐데, 2018년 기준 15만 원 정도 가격으로 '1997~2000년 세계 1위 슈퍼컴퓨터'를 사용하고 있으며 160만 원대 가격으로 '2000~2002년 세계 1위 슈퍼컴퓨터'를 사용하고 있다고 보면 되겠다. 실제로 2013년 현재 가장 빠른 중국의 텐허 슈퍼컴퓨터가 GPU 하이브리드 아키텍처를 사용하고 있다. [[파일:attachment/GPGPU/cpu_and_gpu_architecture_comparison.png|width=430]] '''▲ 간략한 CPU와 GPU 구조. 여기에서 ALU가 '계산'을 담당한다.''' [[CPU]]는 [[멀티코어 프로세서|커다란 코어]]를 4개 넣지만 [[GPU]]는 [[매니코어 프로세서|작은 코어]]를 몇백 개씩 넣은 모습이다. 싱글 코어 성능은 CPU가 빠르지만 GPU는 병렬 연산이 훨씬 중요하므로 싱글 코어 성능이 높아봤자 병렬 연산 성능이 떨어지고 전력 소모량이 증가한다. 따라서 CPU와는 다르게 GPU의 설계 목표는 '''"가능한 한 많은 코어를 집적해라"'''이다. 애초에 CPU 대신 GPGPU를 쓰려는 이유가 싱글코어 성능을 높이는 데 한계가 왔기 때문이다. 대표적인 현상인 [[4GHz의 벽]] 참조. 따라서 GPGPU 프로그래밍 시에는 CPU에서 프로그래밍할 때의 상식 하나를 정반대로 적용해야 한다. 바로 '''스레드를 가능한 한 많이 만들라는 것.''' 다만, NVIDIA는 한때 2010년대 중반~말에 점점 제어부를 늘리고 클럭을 높여서 연산 코어당 효율 향상을 꾀하고 있었다. 케플러 → 맥스웰에서 효율 증가를 최우선으로 아키텍처를 변경한 것이 그 시작으로, 심지어 GTX 780 Ti → GTX 980은 연산 유닛 감소가 클럭 증가폭을 넘어서서, 단순 플롭스 수치로만 보면 오히려 8~9% 정도 성능이 떨어진다! (GTX 780 Ti의 FP32 연산 성능은 약 5 TFLOPS, GTX 980의 FP32 연산 성능은 약 4.6 TFLOPS) 이에 멈추지 않고 맥스웰 → 파스칼에서도 성능 효율은 물론이고 공정 미세화에 힘 입어 더 높은 클럭으로 연산 성능이 극대화하는 방향까지 보여주었다. ([[http://lite.parkoz.com/zboard/view.php?id=vga_freeboard&no=37037|출처]] 3번째 댓글 참조) AMD도 연산 성능 위주로 출발했던 [[GCN]] 마이크로아키텍처의 성능 효율이 점점 한계에 부딪히면서 2019년 7월부터 NVIDIA 맥스웰~튜링 아키텍처와 비슷한 방향성으로 선회함으로써 그 결과가 [[RDNA]] 마이크로아키텍처로 나타나게 되었다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기