GPU 컴퓨팅이란 무엇인가?

GPU 컴퓨팅이나 가속에 대해 계속 듣고 있지만 무슨 뜻인지 잘 모르겠나요? 알아야 할 모든 것이 여기에 있습니다.

GPU 또는 그래픽 처리 장치는 특히 컴퓨터를 비롯하여 어떤 형태의 디스플레이를 생성하는 모든 전자 회로에 들어 있습니다.

초기 그래픽 프로세서는 비교적 간단했습니다. 하지만 CPU의 한계를 넘어선 게임, 3D 애니메이션, 비디오 렌더링 작업의 등장으로 더 강력한 GPU가 구출에 나서야 했습니다.

이 새로운 GPU 카드는 시간이 지남에 따라 성능과 복잡성이 커졌으며, 다양한 회사와 연구자들이 병렬 실행 이점을 활용할 방법을 모색했습니다. 이 게시물에서는 지금까지 어떻게 진행되었는지 보여드립니다.

GPU란 무엇인가?

GPU 또는 그래픽 처리 장치는 디스플레이를 위한 이미지 생성을 돕기 위해 데이터를 조작하도록 설계된 특수 회로입니다. 즉, GPU는 컴퓨터 모니터, 스마트폰 화면, 게임 콘솔 등과 같은 모든 디스플레이 표면에 표시되는 이미지를 만드는 시스템입니다.

GPU는 원래 그래픽 요소를 모아 특정 장치에 이상적인 출력을 만드는 간단한 장치였습니다. 그러나 시간이 흐르고 컴퓨터 게임이 등장하면서 GPU는 복잡성과 성능이 커져서 GPGPU 또는 GPU에서의 범용 컴퓨팅.

GPU 컴퓨팅이란?

GPU 컴퓨팅 또는 GPGPU는 그래픽 이외의 계산을 위해 GPU를 사용하는 것입니다. 즉, 컴퓨터 비디오 카드에 내장된 GPU를 사용하여 원래는 과학적 시뮬레이션, 암호화폐 채굴, 대수 계산, 날씨 예보, 신경망 등과 같은 다른 유형의 데이터를 계산하기 위해 컴퓨터 그래픽을 처리하는 것을 의미합니다.

GPU 컴퓨팅이 발전한 이유는 현대 GPU 시스템의 분산 병렬 아키텍처에서 비롯된 그래픽 처리 장치의 인상적인 개발에서 비롯되었습니다.

컴퓨터의 CPU가 더욱 강력해지고 더 복잡한 프로그램과 게임을 처리할 수 있게 되면서 비디오 카드 제조업체도 현대 컴퓨팅과 3D 그래픽의 발전에 발맞추려고 노력했습니다. Nvidia는 GeForce 256 1999년에 세계 최초의 GPU 비디오 카드가 출시되었고, 그 이후로 많은 발전이 있었습니다.

GPU 카드가 CPU에 비해 ​​가진 가장 큰 장점은 병렬 처리 아키텍처로, 분산되고 병렬적인 방식으로 대용량 데이터 작업을 처리할 수 있어 병목 현상과 CPU 정지를 방지할 수 있다는 점입니다.

GPU 컴퓨팅의 응용 분야는 무엇입니까?

GPU 컴퓨팅의 응용 분야는 다양합니다. 그 중 대표적인 용도를 살펴보겠습니다.

  1. 머신러닝 & 신경망
  2. 퍼지 로직
  3. 생물정보학
  4. 분자 모델링
  5. 비디오 렌더링
  6. 기하학적 컴퓨팅
  7. 기후 연구 및 날씨 예보
  8. 천체 물리학
  9. 암호화
  10. 컴퓨터 비전
  11. 비밀번호 크래킹
  12. 양자 연구

GPU 대 CPU 처리

GPU와 CPU는 모두 디지털 데이터를 처리하지만, 서로 다른 방식으로 처리합니다. CPU 또는 중앙 처리 장치는 고속의 직렬 처리를 위해 설계되었지만, GPU는 훨씬 낮은 속도의 병렬 처리를 위해 설계되었습니다. 물론 CPU는 하이퍼스레딩을 사용하여 코어당 2개의 스레드를 얻거나 수십 개의 코어를 가질 수 있지만, 근본적으로 직렬 프로세서입니다.

CPU에는 몇 개의 코어가 있을 수 있지만 최신 GPU에는 수천 개의 코어가 있습니다. 엔비디아 지포스 RTX 3090 10K+ 코어를 특징으로 합니다. 그러나 CPU보다 유리하려면 데이터가 병렬 처리가 가능해야 합니다. 예를 들어 수천 개의 이미지가 포함된 스트림을 한 번에 처리하는 것과 같습니다.

GPU 대 ASIC

ASIC은 Application Specific Integrated Circuit의 약자로, 이는 하나의 작업만 수행할 수 있다는 것을 의미합니다. 즉, 수행하도록 설계된 작업입니다. ASIC은 처음부터 개발된 고유한 기계이며 제작에는 전문적인 하드웨어 지식이 필요합니다. ASIC은 GPU보다 우수한 병렬 처리 이점과 더 나은 효율성을 제공하므로 암호화폐 채굴에 일반적으로 사용됩니다.

하지만 두 가지의 주요 차이점은 GPU가 더 다재다능하다는 것입니다. 예를 들어, GPU를 사용하여 암호화폐 채굴 장비를 쉽게 만들 수 있습니다. 부품은 쉽게 구할 수 있으며 채굴을 마쳤다면 항상 GPU 카드를 게이머나 다른 광부에게 판매할 수 있습니다. 그러나 ASIC의 경우 다른 광부에게 중고 기계만 판매할 수 있습니다. 다른 작업을 할 수 없기 때문입니다.

암호화폐 채굴을 넘어서 ASIC 머신을 손에 넣는 것은 더욱 어려워집니다. 왜냐하면 ASIC 머신은 대량 생산품이 아니기 때문입니다. 이는 어디서나 구할 수 있고 쉽게 구성할 수 있는 GPU 시스템과는 대조적입니다.

GPU 대 클러스터 컴퓨팅

단일 GPU 카드에는 수천 개의 코어가 포함되어 있어 이를 장착한 모든 컴퓨터에 엄청난 성능을 제공하지만, 이론적으로는 컴퓨터 메인보드에 처리할 수 있는 만큼의 GPU 카드를 추가하고 처리 능력을 더욱 높일 수 있습니다.

반면 컴퓨터 클러스터는 하나의 큰 컴퓨터, 즉 슈퍼컴퓨터로 기능하도록 네트워크로 연결된 여러 대의 컴퓨터를 말합니다. 네트워크의 각 컴퓨터를 노드라고 하며 멀티코어 CPU와 하나 이상의 GPU 카드를 탑재할 수 있습니다.

각 클러스터에는 마스터 노드가 있어야 합니다. 마스터 노드는 워커 노드를 관리하고 스케줄링하는 프런트 컴퓨터입니다. 또한 워커 노드가 계산하고 결과를 반환할 수 있도록 데이터와 프로그램을 할당하는 소프트웨어도 포함됩니다.

GPU 가속 대 하이퍼스레딩

CPU는 여러 작업을 동시에 처리하도록 설계되었으며, 그렇기 때문에 매우 빠른 속도로 실행되어 여러 프로세스 간에 처리 시간을 예약합니다. 그러나 컴퓨팅 집약적 기능을 만나면 다른 프로세스로 돌아가기 전에 루프에서 잠시 머무를 수 있습니다. 이는 일반적으로 컴퓨터의 전반적인 속도 저하와 최악의 경우 시스템의 완전한 정지로 이어집니다.

컴퓨터 설계자는 하이퍼스레딩이나 GPU 가속을 사용하여 이 두려운 시나리오를 피할 수 있습니다. 하이퍼스레딩은 단일 CPU 코어가 두 개의 처리 스레드로 기능할 수 있도록 합니다. 따라서 한 스레드가 컴퓨팅 집약적 루프에 갇혔을 때 다른 스레드는 여전히 시스템을 유지할 수 있습니다.

현대 컴퓨터는 이제 2~4, 8, 16, 32 등의 여러 코어를 가지고 있습니다. 게다가 하이퍼스레딩이 특징이므로 2코어 CPU는 4개의 스레드를 제공하고 4코어는 8개의 스레드를 제공합니다.

멀티코어 CPU를 사용한 하이퍼스레딩은 대부분의 컴퓨팅 문제를 해결하고, 병목 현상을 방지하며, 간단한 게임, 음악 제작, 작은 그래픽, 비디오 및 머신 러닝 프로젝트에서 최고의 성능을 제공합니다. 하지만 그보다 더 많은 전력이 필요한 경우 GPU가 종종 올바른 솔루션입니다.

GPU 또는 하드웨어 가속은 소프트웨어 애플리케이션이 CPU를 멈추지 않고도 GPU 병렬 처리 능력을 활용하여 많은 양의 데이터를 처리하는 기능입니다. 많은 전문 애플리케이션은 GPU 가속에 의존하여 제대로 작동합니다. 여기에는 비디오 및 애니메이션 디자인/렌더링 프로그램, 인코더, 암호화, 대규모 신경망 등이 포함됩니다.

GPGPU 프로그래밍 기본

GPU의 일반 목적 프로그래밍은 처음에 다음을 사용하여 수행되었습니다. 다이렉트OpenGL을 라이브러리. 하지만 이것들은 그래픽 개발을 위해 엄격히 설계되었기 때문에 데이터를 그래픽과 유사한 모델로 재활용해야만 작동할 수 있었습니다.

다행히도, GPGPU는 수년에 걸쳐 큰 진전을 이루었고, 라이브러리, 프로그래밍 언어, 프레임워크로 이어졌습니다. 이러한 프레임워크 중 가장 인기 있는 것은 Nvidia의 CUDA입니다.

CUDA는 모든 개발자가 클래식 GPU 프로그래밍의 핵심을 알 필요 없이 GPU 프로그래밍에 쉽게 뛰어들 수 있도록 해줍니다. 그래픽을 넘어 개발을 향상시키는 기능을 제공하며, 많은 유닛은 머신 러닝 특정 기능을 갖추고 있습니다.

사용 가능한 라이브러리를 사용하면 처음부터 새로운 GPU 가속 프로그램을 쉽게 만들거나 미리 작성된 프로그램을 병렬 처리에 맞게 조정할 수도 있습니다. 올바른 라이브러리를 선택하고, 병렬 루프에 맞게 코드를 최적화하고, 다시 컴파일하면 됩니다.

CUDA 코어 대 스트림 프로세서

종종 당신은 다음과 같은 용어를 접하게 될 것입니다. 쿠다 코어 스트림 프로세서. 두 용어 모두 단순히 GPU 코어 또는 산술 논리 단위 GPU의. CUDA Core는 Nvidia의 독점 기술이고, Stream 프로세서는 AMD의 기술입니다.

접할 수 있는 또 다른 용어는 스트리밍 멀티 프로세서 또는 SM입니다. 이는 원래 SM당 8개의 CUDA 코어를 그룹화한 또 다른 Nvidia 기술입니다. 명령당 32개의 클록 사이클을 사용하여 4개 스레드 워프를 한 번에 실행합니다. 최신 디자인은 이제 스트리밍 멀티 프로세서당 100개 이상의 코어를 특징으로 합니다.

최고의 GPU 언어 및 라이브러리

Nvidia CUDA와 AMD 플랫폼에서 모두 작동하는 라이브러리와 언어가 정말 많습니다. 다음은 그 중 일부입니다.

  1. 엔비디아 cuBLAS – CUDA를 위한 기본 선형 대수 하위 프로그램
  2. cuDNN – 딥 신경망 라이브러리
  3. OpenCL을 – 병렬 프로그래밍을 위한 개방형 표준
  4. Openmp – AMD GPU의 경우
  5. 잘 알고 있기 – C++ 라이브러리
  6. 엔비디아 cuRAND – 난수 생성
  7. 커FFT – 고속 푸리에 변환의 경우
  8. 엔비디아 NPP – 2D 영상 및 신호 처리
  9. GPU VSIPL – 벡터 이미지 및 신호 처리
  10. OpenCV – 컴퓨터 비전을 위한 GPU 라이브러리
  11. 오픈ACC – 병렬 개발을 위한 언어
  12. PyCU에서 – CUDA 플랫폼용 Python
  13. 텐서 RT – CUDA를 위한 딥러닝
  14. 쿠다 C++ – CUDA를 위한 C++ 언어
  15. 쿠다 C – CUDA를 위한 C 언어
  16. CUDA 포트란 – FORTRAN 개발자를 위한 CUDA

최고의 GPU 클러스터 프로젝트

2022년 8월 현재 세계에서 가장 빠른 슈퍼컴퓨터 10대 중 XNUMX대가 GPU 가속을 지원합니다. 모두 Linux OS를 공유하며, 다음과 같습니다.

계급성함페타플롭스CPU 코어GPU 코어전력 (kW)출간연도
1.변경1,102591,8728,138,24021,1002022
2.LUMI151.9075,2641,034,8802,9002022
3.정상 회담148.6202,7522,211,84010,0962018
4.산맥94.64190,0801,382,4007,4382018
5.펄 머터64.59N/AN/A2,5892021
6.셀레네63.4671,680483,8402,6462020
7.톈허 (Tianhe-2)61.445427,0084,554,75218,4822013
8.아다스트라46.121,632297,4409212022

결론

GPU 컴퓨팅과 그와 관련된 모든 것에 대한 이 글을 끝까지 읽으셨다면 이제쯤은 그 성능과 범위에 대해 어느 정도 이해하셨을 것입니다.

자세한 내용은 개발자 플랫폼을 확인하세요. 여기 엔비디아가 있습니다 또는 의 AMD 여기.

남디 오케케

남디 오케케

Nnamdi Okeke는 다양한 책을 읽는 것을 좋아하는 컴퓨터 애호가입니다. 그는 Windows/Mac보다 Linux를 선호하며
Ubuntu는 초창기부터 그랬습니다. Twitter에서 그를 만날 수 있습니다. 봉고트랙스

기사: 298년

기술적인 자료를 받으세요

기술 동향, 스타트업 동향, 리뷰, 온라인 수입, 웹 도구 및 마케팅은 한 달에 한두 번입니다.