최근 그로킹 동시성 이라는 책을 읽고 있다. 이 책에서 동시성에 대해 설명하면서 하드웨어에 대한 설명들이 나오는데, 대칭형 다중처리에 대해 설명하면서 CPU와 GPU를 비교하며 설명하였다.
이것을 읽다가 이 부분에 대해서 조금 궁금해져서 작성하게 되었다. 그리고 최근 AI, 딥러닝, 엔비디아 등 GPU와 무엇이 연관이 있는지 궁금해졌다.
일단 CPU와 GPU는 대칭형 다중처리(Symmetric Multiprocessing)에 속한다. SMP는 여러 개의 프로세서가 하나의 메모리와 운영체제(OS)를 공유하며 작업을 처리하는 방식이다. 이는 일반적으로 CPU를 여러 개 장착하여 성능을 높이는 방식이다. 그리고 이 구조의 주요 특징은 다음과 같습니다
플린의 분류는 명령어와 데이터 흐름을 기준으로 병렬 컴퓨터를 네 가지 유형으로 나눈다.
처음에는 이 이야기가 잘 이해되지 않았으나, 계속 보다보니 조금 이해가 되었다. 일단 SISD와 MISD는 현재 관심사가 아니니 넘어간다. SIMD는 간단하게 말해서 한 가지 작업을 동시에 병렬로 실행한다는 이야기이다. 그리고 MIMD는 다른 종류의 작업을 동시에 병렬로 실행한다는 이야기이다.
구체적으로 CPU와 GPU에 대해서 살펴보면서 더 생각해보겠다.
CPU는 복잡한 작업을 빠르게 순차적으로 처리하는 데 초점이 맞춰져 있다. 따라서 코어 수는 적지만(보통 4~16개), 각 코어는 매우 강력하고 다양한 작업을 효율적으로 처리할 수 있다.
따라서 CPU는 운영체제의 제어, 복잡한 로직 수행 등에 적합한 반면, 병렬 연산 성능이 낮다.
GPU는 그래픽 처리와 같은 대규모 병렬 작업에 최적화되어 있다. 그래픽 처리와 같은 대규모 병렬 작업에 최적화되어 있다. 그래픽스 렌더링은 수많은 픽셀을 동시에 계산해야 하기 때문에, GPU는 수천 개의 작은 코어를 가지고 있어 동시에 많은 작업을 처리할 수 있다.
결국 동일한 연산을 반복하는 병렬 처리에 최적이고 반대로 복잡한 제어 흐름이 있는 연산에 부적합하다.
나도 처음에 위의 설명정도로 이해가 잘 되지 않았다. 구체적인 예시로 비교를 해보자. 컴퓨터에서 설명을 할 때, 가장 자주 나오는 예시인 요리를 이용해보겠다.
여러 명의 요리사가 각각 다른 레시피를 가지고, 다른 요리를 만든다고 생각해 보자.
예를 들어, 한 레스토랑에서:
👨🍳 첫 번째 요리사는 스테이크를 굽고,
👩🍳 두 번째 요리사는 파스타를 만들고,
👨🍳 세 번째 요리사는 샐러드를 준비한다.
각 요리사는 서로 독립적으로 동작하며, 각자 자신의 요리에 집중한다.
요리사가 많아질수록 동시에 더 많은 요리를 만들 수 있다.
➡ 멀티코어 CPU의 방식 (ex: 여러 개의 프로그램 실행, 웹 서버의 동시 요청 처리, 병렬 프로그래밍)
➡ 각 코어가 서로 다른 명령을 실행하며, 독립적인 연산 수행
🧑🍳 한 명의 요리사가 같은 레시피를 따라 여러 개의 요리를 동시에 만든다고 해보자.
예를 들어, 5개의 스테이크를 한꺼번에 굽는 상황을 생각해 보자.
① 고기 5개를 동시에 팬에 올린다.
② 같은 소스를 뿌린다.
③ 같은 불 온도로 굽는다.
④ 각 접시에 담는다.
즉, 요리사는 한 번에 하나의 행동(명령어)을 하면서, 여러 개의 데이터(스테이크)를 동시에 처리한다.
➡ GPU의 기본 연산 방식 (ex: 그래픽 처리, 딥러닝 행렬 연산, 비디오 필터링)
➡ 같은 연산을 여러 데이터에 적용하는 병렬 처리
이제 적당히 이해를 했으니, AI와 딥러닝과 관련해서 GPU가 중요한 이유를 알아보겠다. AI와 딥러닝에서 GPU가 많이 사용되는 이유는 딥러닝의 핵심 연산이 대규모 병렬 처리에 매우 적합하기 때문이다. GPU는 이러한 연산을 CPU보다 훨씬 빠르고 효율적으로 처리할 수 있다. 아래에서 구체적으로 어떤 요소들이 GPU 사용을 필수적으로 만드는지 살펴보자.
무슨 이야기인지 잘 모르겠지만, 느낌만 알고 넘어간다.