사람들이 더 특수한 칩 대신 고성능 계산을 위해 GPU를 사용하는 이유는 무엇입니까?


105

내가 이해 한 바에 따르면 사람들은 컴퓨팅 성능의 추가 소스이기 때문에 일반 컴퓨팅에 GPU를 사용하기 시작했습니다. 각 작업마다 CPU 속도가 빠르지는 않지만 코어가 많으므로 CPU보다 병렬 처리에 더 적합합니다. 그래픽 처리를위한 GPU가있는 컴퓨터를 이미 소유하고 있지만 그래픽이 필요하지 않고 더 많은 계산 성능을 원한다면이 방법이 적합합니다. 그러나 저는 사람들이 GPU 를 사용하여 그래픽을 처리 할 의도없이 컴퓨팅 성능을 추가하기 위해 특별히 GPU를 구입한다는 것을 알고 있습니다. 나에게 이것은 다음과 유사하게 보입니다.

잔디를 잘라야하지만 잔디 깎는 기계는 겁이 많습니다. 그래서 나는 침실에 보관하고있는 박스 팬에서 케이지를 제거하고 날을 깎습니다. 테이프를 제초기에 덕트로 묶어 합리적으로 잘 작동한다는 것을 알았습니다. 몇 년 후, 저는 대규모 잔디 관리 사업의 구매 담당자입니다. 나는 잔디를 깎는 기계에 쓸 예산이 상당히 큽니다. 잔디 깎는 기계를 사는 대신 많은 상자 팬을 구입합니다. 다시 말하지만, 그들은 잘 작동하지만 결국 사용하지 않을 여분의 부품 (케이지와 같은)을 지불해야합니다. (이 비유의 목적 상 잔디 깎는 기계와 박스 팬의 비용이 거의 같다고 가정해야 함)

그렇다면 GPU의 처리 능력은 있지만 그래픽 오버 헤드는없는 칩이나 장치 시장이없는 이유는 무엇입니까? 몇 가지 가능한 설명을 생각할 수 있습니다. 둘 중 어느 것이 맞습니까?

  • 이러한 대안은 GPU가 이미 훌륭한 옵션 일 때 개발하기에는 너무 비쌀 것입니다 (잔디 모어가 존재하지 않는 이유는 무엇입니까?
  • 'G'가 그래픽을 의미한다는 것은 의도 된 용도 일 뿐이며 다른 종류의 작업보다 칩이 그래픽 처리에 더 잘 적응하도록 노력한다는 의미는 아닙니다 (잔디 모어와 박스 팬이 동일한 경우 당신은 바로 그것을 얻을 수 있습니다. 하나가 다른 것과 같이 작동하도록 수정 할 필요는 없습니다).
  • 현대 GPU는 이전의 이전 모델과 같은 이름을 사용하지만 요즘 하이 엔드 GPU는 그래픽을 특별히 처리하도록 설계되지 않았습니다 (현대 박스 팬은 구형 잔디 깎는 기계가 아니더라도 대부분 잔디 깎는 기계로 작동하도록 설계되었습니다).
  • 거의 모든 문제를 그래픽 처리 언어로 쉽게 번역 할 수 있습니다 (잔디는 정말 빨리 공기를 불어서 잘라낼 수 있습니다).

편집하다:

내 질문에 대한 답변이 있지만 일부 의견과 답변을 바탕으로 내 질문을 명확히해야한다고 생각합니다. 왜 모든 사람이 자신의 계산을 구매하지 않는지 묻지 않습니다. 분명히 그것은 대부분의 시간에 너무 비쌀 것입니다.

병렬 계산을 빠르게 수행 할 수있는 장치가 필요한 것 같습니다. 이 목적을 위해 설계된 장치가 아닌 최적의 장치가 그래픽 처리 장치 인 이유가 궁금합니다.


66
그들은 때문에 있는 것은 이런 종류의 전문; 기본적으로 같은 유형의 수학입니다. 또한 nVidia는 사람들이 이러한 유형의 대규모 병렬 번호 처리를 수행 할 수 있도록 GPU 전용 보드를 구축 및 판매했습니다.
Heptite

7
칩에 특수한 "유닛"이 추가되었습니다. AES는 CPU의 하드웨어에서 생각됩니다. AVX는 하드웨어에서도 구현됩니다. 그러나 어디에서 멈춰? Chipmaker는 당신이 무엇을 필요로하는지 알지 못하며 대부분의 사람들은 매우 특정한 작업을 위해 자신의 칩을 가질 수있는 능력 (기술 또는 재무)을 가지고 있지 않습니다. 다른 말했듯이 그래픽 카드는 특정 유형의 작업에 적합한 특수 아키텍처의 한 유형입니다. 그들은 모든 것에 좋지는 않지만 특정 작업에 적합하므로 거기에서 사용됩니다.
DetlevCM

4
보다 정확한 유추는 박스 팬을 100 미터 너비의 농업용 콤바인으로 대체합니다.
MooseBoys 2018 년

6
내 PC에는 이미 GPU를 사용할 준비가되었으므로 전용 칩을 설계하고 생산하면 수백만 달러의 비용이 발생합니다.
PlasmaHH

19
다른 비유를 시도하십시오. 박스 팬이 있고 헬리콥터 로터가 있다고 가정하십시오. 가상의 세계에서 박스 팬을위한 응용 프로그램은 20m 탄소 섬유 블레이드 박스 팬이 생길 때까지 더 빠른 속도로 실행되는 더 큰 팬이 필요했고 대량 생산으로 인해 저렴했습니다. 그런 다음 누군가 20m 박스 팬이 본질적으로 케이지가 달린 헬리콥터 로터라는 것을 깨달았습니다. 정말 비슷합니다.
Graham

답변:


109

정말 모든 설명의 조합입니다. 더 싸고 쉬우 며 이미 존재하며 디자인은 순수한 그래픽에서 멀어졌습니다.


최신 GPU는 일부 추가 그래픽 하드웨어 (예 : 비디오 인코딩 및 디코딩을위한 일부 고정 기능 가속기)가있는 기본 스트림 프로세서 로 볼 수 있습니다 . 오늘날 GPGPU 프로그래밍은이 목적을 위해 특별히 설계된 API (OpenCL, Nvidia CUDA, AMD APP)를 사용합니다.

지난 10 년 동안 GPU는 고정 기능 파이프 라인 (대부분의 그래픽 만 해당)에서 프로그래밍 가능한 파이프 라인 ( 쉐이더를 통해 사용자 지정 명령을 작성할 수 있음)으로 OpenCL과 같은 최신 API로 진화했습니다 . 수반되는 그래픽 파이프 라인.

나머지 그래픽 비트는 작습니다. 그것들은 카드 비용의 작은 부분이므로 카드를 남겨 두는 것이 크게 저렴하지 않으며 추가 디자인 비용이 발생합니다. 따라서 최상위 계층을 제외하고는 일반적으로 대부분의 GPU에 해당하는 컴퓨팅 지향형이 없으며이 작업은 수행되지 않으며 상당히 비쌉니다.

일반적인 "게임"GPU는 규모의 경제와 상대적 단순성으로 인해 저렴하고 쉽게 시작할 수 있기 때문에 매우 일반적으로 사용됩니다. 그래픽 프로그래밍에서 GPGPU를 사용하여 다른 프로그램을 가속화하는 데까지 상당히 쉬운 방법입니다. 다른 옵션과 달리 새롭고 빠른 제품을 사용할 수 있으므로 하드웨어를 쉽게 업그레이드 할 수 있습니다.


기본적으로 선택 사항은 다음과 같습니다.

  • 분기 및 순차 코드에 적합한 범용 CPU
  • 일반적인 "게임"GPU
  • 컴퓨팅 지향 GPU (예 : Nvidia TeslaRadeon Instinct) 이들은 종종 그래픽 출력을 전혀 지원하지 않으므로 GPU는 약간 잘못된 것입니다. 그러나 일반 GPU와 비슷한 GPU 코어를 사용하며 OpenCL / CUDA / APP 코드는 거의 직접 이식 가능합니다.
  • FPGA는 매우 다른 프로그래밍 모델을 사용하며 비용이 많이 드는 경향이 있습니다. 이것은 진입 장벽이 존재하는 곳입니다. 또한 워크로드에 따라 GPU보다 빠를 필요는 없습니다.
  • ASIC, 맞춤형 회로 (하드웨어). 이것은 매우 비싸고 극단적 인 규모 (최소한 수천 단위를 이야기하고 있음)와 프로그램을 변경할 필요가없는 곳에서만 가치가 있습니다. 그들은 현실 세계에서 거의 실현 가능하지 않습니다. 또한 기술이 발전 할 때마다 전체를 재 설계하고 테스트해야합니다. CPU 및 GPU와 같이 새로운 프로세서로 교체 할 수는 없습니다.

16
ASIC은 또한 컴퓨팅이 문자 그대로 비용을 지불 할 때도 의미가 있습니다 (암호 채굴)
ratchet freak

4
실제로 FPGA는 종종 GPU보다 나쁩니다. 문제는 FPGA가 매우 유연하다는 것입니다. 그들은 많은 다양한 작업을 구현할 수 있습니다. 그러나 계산은 일반적으로 수학의 한 형태이며 실제로 벌크는 두 가지 연산입니다 : 덧셈과 곱셈 (빼기와 나누기는 위의 변형입니다). GPU는 FPGA보다 그 두 가지 작업에 매우 능숙합니다.
MSalters

19
FPGA에 대해 더 자세히 설명해야합니다. "스텝 업"이 있다는 생각은 약간 오해의 소지가 있습니다. 그들은 한 걸음 더 나아갔습니다.
Yakk

6
마지막 예로, Google에는 머신 러닝을위한 자체 "텐서 처리 장치"가 있습니다. 그들이 어느 정도까지 커스터마이징했는지는 확실하지 않지만 ASIC이라고합니다.
mbrig

4
@MSalters GPU를 통한 FPGA의 주요 판매 포인트 중 하나는 성능 / 와트이며, 데이터 센터가 전력 벽에 부딪 치기 시작함에 따라 점점 중요 해지고 있습니다 (FPGA는 일반적으로 전력 효율이 높음). 수학적으로 FPGA는 고정 소수점 및 정수 산술에서 GPU와 비교할 수 있으며 부동 소수점 수학에서는 지연됩니다.
wilcroft 2016

32

내가 가장 좋아하는 비유 :

  • CPU : Polymath 천재. 한 번에 하나 또는 두 가지 작업을 수행 할 수 있지만 이러한 작업은 매우 복잡 할 수 있습니다.
  • GPU : 많은 숙련 된 근로자. 그들 각각은 큰 문제를 해결할 수는 없지만 대량으로 많은 일을 할 수 있습니다. 귀하의 질문에 네, 그래픽 오버 헤드가 있지만 한계가 있다고 생각합니다.
  • ASIC / FPGA : 회사. 숙련도가 낮은 근로자 또는 몇 명의 천재, 또는 숙련도가 낮은 근로자와 천재의 조합을 고용 할 수 있습니다.

사용하는 것은 비용 민감도, 작업이 병렬화되는 정도 및 기타 요인에 따라 다릅니다. 시장이 어떻게 발전했는지에 따라 GPU는 가장 병렬 애플리케이션에 가장 적합한 선택이며, 전력 및 단가가 주요 관심사 인 경우 CPU가 최선의 선택입니다.

귀하의 질문에 직접 : 왜 ASIC / FPGA를 통한 GPU입니까? 일반적으로 비용. 오늘날의 GPU 가격이 급등하더라도 요구를 충족시키기 위해 ASIC을 설계하는 것보다 GPU를 사용하는 것이 여전히 일반적으로 저렴합니다. @ user912264가 지적했듯이 ASIC / FPGA에 유용한 특정 작업이 있습니다. 고유 한 작업이 있고 규모의 이점을 누리면 ASIC / FPGA를 설계하는 것이 좋습니다. 실제로,이 목적을 위해 FPGA 설계를 설계 / 구매 / 라이센스 할 수 있습니다. 예를 들어 고화질 TV의 픽셀에 전원을 공급하기 위해 수행됩니다.


7
의견은 어쨌든 대답하기위한 것이 아니며 이것은 나에게 합리적인 대답처럼 보입니다.
Raimund Krämer

1
@BobtheMogicMoose 그러나 GPU에 동등한 코드를 갖는 것보다 게놈 분석을 위해 설계된 커스텀 FPGA를 사용하는 것이 훨씬 빠릅니다. 과학자들이 결과를 기다리기 위해 앉아서 비용을 지불 할 때, 더 빠른 FPGA는 매우 빠르게 비용을 지불합니다.
doneal24

FPGA는 일반 개발자도 훨씬 더 쉽게 접근 할 수 있습니다. 예를 들어 Microsoft는 FPGA (Project BrainWave)를 사용 하는 클라우드 AI 솔루션을 보유하고 있습니다. AWS에는 몇 가지 오퍼링도 있습니다. 누구나 직접 구축하지 않고도 특수한 작업을 위해 일부 커스텀 FPGA를 빌릴 수 있지만 몇 년 전까지도 많은 유스 케이스에는 불가능했습니다.
brichins

예, arduino raspberry-pi와 비슷한 FPGA 취미 키트도 있다고 생각합니다. 필자는 여전히 FPGA 프로그래밍이 개발 된 아키텍처보다 훨씬 비싸다고 생각합니다.
BobtheMagicMoose

10

당신의 비유가 나쁩니다. 유사하게, 대규모 잔디 관리 사업을위한 장비를 구매할 때는 잔디 깎는 기계가 충분 하다고 가정 합니다. 컴퓨팅 세계에서는 그렇지 않습니다. GPU는 가장 유용한 도구입니다.

특수 칩에 대한 R & D 비용과 가능한 성능 향상은 너무 높아서 칩을 만드는 것이 정당화 될 수 없습니다.

즉, 엔비디아는 범용 컴퓨팅을 위해 특별히 GPU를 사용한다는 것을 알고 있습니다. 비디오 출력은 없었습니다. 케이지가 이미 제거 된 상자 팬을 판매하는 것과 약간 비슷합니다.


9

물론 에너지 효율 또는 계산 속도를 위해 특수 칩을 사용할 수 있습니다. 비트 코인 채굴의 역사를 알려 드리겠습니다 :

  • 비트 코인은 새로운 CPU입니다.
  • Bitcoin은 GPU를 사용하여 다소 새로운 똑똑한 괴짜입니다.
  • Bitcoin은 현재 (kinda) 유명하며 사람들은 FPGA를 구입합니다.
  • 비트 코인은 이제 유명해졌으며 (2013), 초보자도 효율적으로 채굴하기 위해 ASIC ( "Application Specific Integrated Circuits")을 구매합니다.
  • 보상금 지급 (주기적으로), 심지어 오래된 ASIC도 더 이상 수익성이 없습니다.

따라서 특별한 "거대한 계산기"대신 GPU를 사용해야 할 이유가 없습니다. 경제적 인센티브가 클수록 하드웨어가 더 전문화됩니다. 그러나 한 번에 수천 대를 생산하지 않으면 설계하기가 어렵고 제조하기가 어렵습니다. 이 칩을 설계하는 실행 가능한 아니라면, 당신은 하나 살 수있는 가장 가까운 월마트에서합니다.

TL; DR 물론 더 전문화 된 칩을 사용할 수 있습니다.


1
"물론 더 전문화 된 칩을 사용할 수있다"-비트 코인 (SHA-256), 리 테인 (scrypt)을위한 특수 칩이있다. 다른 문제를위한 고성능 컴퓨팅 하드웨어가 존재하지 않습니다. (즉, 현재 고급 GPU보다 성능이
뛰어남

8

당신이 비유로 설명하는 것은 정확히 일어난 일입니다. 팬을 잡고 날을 갈아서 모어로 사용하려고 시도하는 것처럼 연구 그룹은 "여기, 우리는 여기에 멋진 멀티 코어 처리 장치가 있으며 범용 계산에 사용할 수 있습니다! ".

결과는 좋았고 공은 구르기 시작했습니다. GPU는 그래픽 전용 장치에서 범용 컴퓨팅을 지원하여 가장 까다로운 상황을 지원합니다.

어쨌든 컴퓨터에서 가장 계산이 까다로운 작업이므로 그래픽이 필요합니다. 몇 년 전과 비교했을 때 오늘날 게임의 놀라운 발전을 살펴보기에 충분합니다. 이는 GPU 개발에 많은 노력과 비용이 들었으며 특정 클래스의 범용 컴퓨팅 속도를 높이는 데 사용될 수도 있다는 사실을 의미합니다.

결론적으로, 귀하가 제공하는 첫 번째 설명이 가장 정확합니다.

  • 이러한 대안은 GPU가 이미 훌륭한 옵션 일 때 개발하기에는 너무 비쌀 것입니다.

이미 존재하는 GPU는 누구나 쉽게 사용할 수 있으며 작업했습니다.


5
정확히 "우리"가 누구인지에 따라 그래픽이 "가장 계산이 까다로운 작업"에 대해 동의하지 않아야합니다. 일반 사용자에게는 가능하지만 과학 및 엔지니어링 커뮤니티에는 그래픽보다 더 많은 것이 요구됩니다. 결국, 하나의 미드 레인지 PC와 GPU 콤보로 허용 가능한 그래픽 (게임과 같은)을 수행 할 수 있습니다. 페타 플롭 범위에서 성능을 얻기 위해 수백 또는 수천 개의 이러한 유닛을 결합하는 중요한 문제가 종종 발생하며, 여전히 며칠 또는 몇주의 컴퓨팅 시간이 소요될 수 있습니다.
jamesqf

컴퓨터에서 예상하는 가장 계산이 까다로운 작업은 기술적으로 그래픽이지만 모션에서 구조 계산은 대부분의 사람들 (또는 GPU 디자이너)이 "그래픽"이라는 단어를들을 때 생각하는 것이 아닙니다.
Mark

5

특히 GPU는 "태스크 병렬 처리"라는 의미에서 "코어"가 아닙니다. 대부분의 경우 "데이터 병렬 처리"형식입니다. SIMD는 "단일 명령 다중 데이터"입니다. 이것이 의미하는 것은 당신이 이것을하지 않을 것입니다 :

for parallel i in range(0,1024): c[i] = a[i] * b[i]

즉, 서로 다른 속도로 진행되는 별도의 작업을 모두 수행하는 1024 개의 명령 포인터가 있습니다. SIMD 또는 "벡터 컴퓨팅"은 다음과 같이 전체 어레이에서 명령을 한 번에 모두 수행합니다.

c = a * b

"루프"는 명령어 외부가 아닌 "*"및 "="명령어에 있습니다. 위의 모든 1024 요소에 대해 동일한 명령을 모든 SAME 명령 포인터에서 수행합니다. a, b 및 c에 대해 3 개의 거대한 레지스터를 갖는 것과 같습니다. SIMD 코드는 매우 제한적이며 지나치게 "지저분하지 않은"문제에 대해서만 잘 작동합니다.

실제로 SIMD 값은 1024 개만큼 크지 않습니다. int32의 갱인 변수가 함께 묶여 있다고 상상해보십시오. 곱셈을 생각하고 실제 기계 명령어로 할당 할 수 있습니다.

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

실제 GPU는 SIMD보다 더 복잡하지만 그 핵심입니다. 그렇기 때문에 랜덤 CPU 알고리즘을 GPU에 던져서 속도를 높일 수없는 이유가 있습니다. 알고리즘을 분기하는 명령이 많을수록 GPU에 덜 적합합니다.


5

다른 답변은 꽤 좋습니다. 나는 2 센트도 넣을 것이다.

CPU가 널리 보급 된 이유 중 하나는 CPU가 유연하기 때문입니다. 다양한 작업을 위해 다시 프로그래밍 할 수 있습니다. 요즘 제품을 생산하는 회사가 동일한 작업을 수행하기 위해 맞춤형 회로를 개발하는 것보다 작은 CPU 또는 마이크로 컨트롤러를 무언가에 집어 넣고 기능을 프로그래밍하는 것이 저렴하고 빠릅니다.

다른 장치와 동일한 장치를 사용하면 동일한 장치 (또는 유사한 장치)를 사용하는 문제에 대해 알려진 솔루션을 활용할 수 있습니다. 플랫폼이 발전함에 따라 솔루션은 발전하고 매우 성숙하고 최적화됩니다. 이 장치를 코딩하는 사람들도 전문 지식을 얻고 기술을 익히 게됩니다.

새로운 장치 유형을 처음부터 새로 만들려면 GPU 대신 사용할 수 있습니다. 최초 채택 자조차도 실제로 사용 방법을 익히는 데 몇 년이 걸릴 것입니다. ASIC을 CPU에 연결하면 해당 장치에서 오프로드 계산을 어떻게 최적화합니까?

컴퓨터 아키텍처 커뮤니티는이 아이디어로 몇 년 동안 애매 모호했습니다. 이러한 '가속기'(그 용어)는 다양한 수준의 재 프로그래밍 가능성을 가지고 있습니다. 문제는 액셀러레이터가 처리 할 수있는 문제의 범위를 얼마나 좁게 정의합니까? 나는 심지어 차동 방정식을 계산하기 위해 연산 증폭기가있는 아날로그 회로를 사용하여 가속기를 만드는 일을하고있는 일부 사람들과 이야기했습니다. 좋은 생각이지만 매우 좁은 범위입니다.

작동하는 가속기가 있으면 경제력이 운명을 결정할 것입니다. 시장 관성은 놀라운 힘입니다. 좋은 아이디어가 있더라도이 새로운 장치를 사용하기 위해 작업 솔루션을 리팩터링하는 것이 경제적으로 가능합니까? 그럴 수도 있고 아닐 수도있다.

GPU는 실제로 특정 유형의 문제에 끔찍하기 때문에 많은 사람들 / 회사가 다른 유형의 장치에서 작업하고 있습니다. 그러나 GPU는 이미 튼튼하며 장치가 경제적으로 실현 가능할까요? 우리는 볼 것 같아요.

편집 : 버스에서 벗어 났으므로 이제 답변을 약간 확장했습니다.

주의 사례 연구는 Intel Larrabee 프로젝트입니다. 소프트웨어에서 그래픽을 수행 할 수있는 병렬 처리 장치로 시작했습니다. 특별한 그래픽 하드웨어가 없었습니다. 나는 프로젝트에서 일한 누군가와 이야기를 나 they 다. 그들이 실패했다고 말한 주요 이유는 (끔찍한 내부 정치 외에도) 컴파일러가 좋은 코드를 만들 수 없었기 때문이었다. 물론 작업 코드를 생성했지만 제품의 전체 지점이 최대 성능 인 경우 최적의 코드를 생성하는 컴파일러가 더 좋습니다. 이는 새로운 장치가 큰 문제가되는 하드웨어 및 소프트웨어에 대한 전문 지식이 부족하다는 의견을 들었습니다.

Larrabee 디자인의 일부 요소는 Xeon Phi / Intel MIC로 만들어졌습니다. 이 제품은 실제로 시장에 출시되었습니다. 과학 및 기타 HPC 유형 계산을 병렬화하는 데 전적으로 집중했습니다. 지금은 상업적인 실패 인 것 같습니다. 내가 인텔과 대화 한 또 다른 사람은 GPU와 가격 대비 성능이 경쟁력이 없다는 것을 암시했다.

사람들은 FPGA 가속기의 코드를 자동으로 생성 할 수 있도록 FPGA의 로직 합성을 컴파일러에 통합하려고 시도했습니다. 그들은 잘 작동하지 않습니다.

가속기를위한 비옥 한 토양 또는 GPU의 다른 대안으로 보이는 곳은 클라우드입니다. Google, Amazon 및 Microsoft와 같은 대기업에 존재하는 규모의 경제는 대체 계산 체계에 투자 할 가치가 있습니다. 누군가 이미 Google의 텐서 처리 장치를 언급했습니다. Microsoft는 Bing 및 Azure 인프라 전체에 FPGA 및 기타 기능을 제공합니다. 아마존과 같은 이야기. 스케일이 시간, 비용 및 엔지니어의 눈물에 대한 투자를 상쇄 할 수 있다면 절대적으로 의미가 있습니다.

요약하면 전문화는 다른 많은 것들 (경제학, 플랫폼의 성숙도, 엔지니어링 전문 지식 등)과 상충됩니다. 전문화는 성능을 크게 향상시킬 수 있지만 장치의 적용 범위가 좁아집니다. 내 대답은 많은 부정적인 측면에 초점을 맞추었지만 전문화에는 많은 이점이 있습니다. 그것은 절대적으로 추구되고 조사되어야하며, 많은 그룹이 그것을 적극적으로 추구하고 있다고 언급했습니다.

죄송합니다. 다시 편집하십시오. 귀하의 초기 전제가 잘못되었다고 생각합니다. 추가 컴퓨팅 파워 소스를 찾는 경우가 아니라 기회를 인식하는 사람들의 경우가 많았습니다. 그래픽스 프로그래밍은 선형 적으로 대수적으로 무거 우며 GPU는 행렬 곱셈, 벡터 연산 등과 같은 일반적인 연산을 효율적으로 수행하도록 설계되었습니다. 과학 컴퓨팅에도 매우 일반적인 연산입니다.

GPU에 대한 관심은 사람들이 인텔 / HP EPIC 프로젝트의 약속이 지나치게 과장되었다는 것을 인식하게되면서 시작되었습니다 (90 년대 후반 2000 년대 초). 컴파일러 병렬화에 대한 일반적인 해결책은 없었습니다. 그래서 "우리는 더 많은 프로세싱 파워를 발견하고 GPU를 사용해 볼 수있다"고 말하는 것이 아니라, "우리는 병렬 계산에 좋은 것을 가지고 있습니다. 더 일반적으로 프로그래밍 할 수 있습니까?"라고 생각합니다. 많은 사람들이 과학 컴퓨팅 커뮤니티에 있었고, 그들은 이미 Cray 나 Tera 머신에서 실행할 수있는 병렬 포트란 코드를 가지고있었습니다 (Tera MTA는 128 개의 하드웨어 스레드를 가짐). 아마도 양방향으로의 움직임이 있었을 것입니다. 그러나 나는이 방향에서 GPGPU의 기원에 대한 언급을 들었습니다.


"가속기"란 저전력 컴퓨팅 노드의 맞춤형 하드웨어 또는 수퍼 클러스터를 의미합니까? 액셀러레이터 하드웨어 예를 참조하여 정교하게 설명 할 수 있습니다.
manav mn

죄송합니다. 문맥에서 명확하게 생각했습니다. 가속기는 보조 프로세서 또는 오프로드 카드의 포괄적 인 용어입니다. 부동 소수점은 원래 주 CPU가 아닌 보조 프로세서에 있었으며 가속기로 간주되었을 것입니다. GPU, DSP, Xeon Phi, FPGA가 PCIe 카드 또는 유사한 장치에있을 때 언급 한 아날로그 미분 방정식, 가상화를 지원하는 장치가 있으며 신경망 가속기에 대한 현재 연구가 있습니다. 이것들은 모두 가속기의 예입니다.
NerdPirate

4

여기에 이미지 설명을 입력하십시오

ASIC (커스텀 실리콘)은 매우 빠르지 만 설계 및 제조 비용이 매우 비쌉니다. ASIC은 특정 용도로 사용되었으며 CPU는 컴퓨터를 "프로그래밍"하여 소프트웨어로 컴퓨팅 작업을 수행 할 수있는 접근 방식 중 하나였습니다. 초기 CPU는 사람들이 현장에서 칩을 프로그래밍함으로써 큰 ​​비용없이 ASIC의 힘을 활용할 수있는 능력을 제공했습니다. 이 접근 방식은 매우 성공적이어서 현재 사용중인 (아주) 빠른 컴퓨터를 만들었습니다.

그렇다면 왜 GPU입니까?

90 년대 중반, 3DFX는 3D 렌더링 작업이 너무 구체적이어서 커스텀 ASIC이 CPU보다 MUCH를 더 잘 수행 할 수 있음을 깨달았습니다. 그들은 3D 렌더링 작업을 CPU에서이 보조 프로세서로 오프로드하는 컴퓨터 보조 프로세서를 만들었으며,이를 "GPU"라고 불렀습니다. 경쟁과 시장 수요로 인해이 공간에서 GPU가 CPU보다 훨씬 빠른 속도로 계산을 수행하는 시점까지 혁신을 이끌어 냈기 때문에 "CPU를 사용하여 CPU 대신 숫자를 처리 할 수없는 이유는 무엇입니까?" GPU 제조업체는 더 많은 돈을 벌 수있는 방법과 수요를 보았으므로 개발자가 하드웨어를 사용할 수 있도록 플랫폼을 변경하기 시작했습니다. 그러나 하드웨어 하드웨어는 특정 용도에 따라 GPU에 요청할 수있는 작업에 제한이 있으며 여전히 있습니다. 왜 여기에 대한 구체적인 내용은 다루지 않겠습니다.

그렇다면 왜 더 특수한 실리콘이 없었습니까? 왜 그냥 그래픽입니까?

두 가지 이유 : 1) 가격. GPU는 좋은 시장을 가지고 있었고 그것을 정당화 할 수 있었지만 그때까지도 큰 위험이었습니다. 3DFX가 수익을 올릴 수 있는지는 아무도 알지 못했습니다 (실제로는 할 수 없었고 사라졌습니다). 지금도 GPU 시장 규모에 따라 경쟁 업체는 3 명에 불과합니다. 2) CPU는 실제로 명령어 확장이있는 "커스텀 실리콘"의 필요성을 충족 시켰습니다. MMX로 다시 생각하십시오. 이것은 실제로 3DFX 속도가 빨라짐에 따라 CPU에서 그래픽을 가속화하려는 인텔의 시도였습니다. 그 이후 x86 명령어 세트는 이러한 모든 사용자 정의 확장으로 상당히 커졌습니다. 이러한 확장 중 상당수는 MMX와 ​​같이 당시에는 의미가 있었지만 현재 프로세서에서는 거의 무게가 없습니다. 그러나 기존 소프트웨어가 손상되어 제거 할 수 없습니다. 그것' 실제로 ARM의 판매 포인트 중 하나 인 ARM-ARM은 제거 된 명령어 세트입니다. 명령어 확장은 많지 않지만, 이로 인해 실리콘은 더 작고 저렴하게 제조됩니다.

맞춤형 실리콘 비용을 줄일 수 있다면 많은 돈을 벌 수있는 것처럼 보입니다. 아무도이 일을하고 있지 않습니까?

FPGA-필드 프로그래밍 가능 게이트 어레이라는 기술이 있으며, 컴퓨팅 초기부터 사용되어 왔습니다. 기본적으로 소프트웨어를 사용하여 "현장에서"설계 할 수있는 마이크로 칩입니다. 매우 멋진 기술이지만 칩을 프로그래밍 할 수있게하는 데 필요한 모든 구조는 많은 실리콘을 차지하며 칩이 훨씬 낮은 클럭 속도로 실행되도록합니다. 칩에 충분한 실리콘이 있고 작업을 효과적으로 병렬 처리 할 수 ​​있다면 FPGA의 CAN은 CPU보다 빠릅니다. 그러나 그것들은 당신이 그들에게 넣을 수있는 논리의 양이 제한되어 있습니다. 가장 비싼 FPGA를 제외하고는 초기 비트 코인 채굴의 경우 GPU보다 느리지 만 ASIC 대응 물은 GPU 채굴의 수익성을 효과적으로 종료했습니다. 다른 암호 화폐는 병렬화 할 수없는 특정 알고리즘을 사용하므로 FPGA와 ASIC '

FPGA의 주요 리미터는 실리콘 크기입니다. 칩에 얼마나 많은 로직을 장착 할 수 있습니까? 두 번째는 클럭 속도입니다. FPGA에서 핫스팟, 누설 및 누화와 같은 것을 최적화하기 어렵 기 때문입니다. 새로운 제조 방법은 이러한 문제를 최소화했으며 인텔은 Altera와 협력 하여 엔지니어가 서버의 보조 프로세서로 "커스텀 실리콘"의 이점을 활용할 수 있는 FPGA를 제공했습니다 . 어떤 의미에서오고 있습니다.

FPGA가 CPU와 GPU를 대체 할 것인가?

아마 언젠가는 아닐 것입니다. 최신 CPU 및 GPU는 대규모이며 실리콘은 열 및 전기 성능에 맞게 크게 조정되었습니다. 맞춤형 ASIC과 같은 방식으로 FPGA를 최적화 할 수 없습니다. 획기적인 기술을 제외하고 CPU는 FPGA 및 GPU 코 프로세서가있는 컴퓨터의 핵심으로 남아있을 것입니다.


1
이러한 확장 중 상당수는 MMX와 ​​같이 당시에는 의미가 있었지만 현재 프로세서에서는 거의 무게가 없습니다. 3D 렌더링은 SIMD의 유일한 사용 사례와 는 거리멀다 . MMX의 "무게"는 대부분 실행 단위이며 SSE2, AVX2 및 AVX512와 같은 더 넓은 벡터와 공유 될 수 있습니다. 이것들은 CPU의 고품질 비디오 인코딩 및 고성능 컴퓨팅을 포함한 많은 다른 작업에 많이 사용됩니다. 또한 memchr, strlen 및 기타 많은 것들의 라이브러리 구현. 예 : 한 번에 하나 이상의 요소를 배열 필터링
Peter Cordes

3

실제로 고속 컴퓨팅을위한 특수 보드가 있습니다. 예를 들어 Xilinx는 FPGA를 사용하는 178 개의 PCI-e 보드 목록 을 가지고 있으며, 이 보드의 약 1/3은 하나 또는 여러 개의 강력한 FPGA 칩이있는 "숫자 크 런처"와 보드 DDR 메모리. 고성능 컴퓨팅 작업을 목표 로 한 고성능 DSP 보드 ( )도 있습니다.

GPU 보드의 인기는 더 넓은 고객 그룹을 목표로 한 것 같습니다. Nvidia CUDA를 사용하기 위해 특수 하드웨어에 투자 할 필요가 없으므로 특수 하드웨어가 필요한 작업을 수행 할 때 Nvidia GPU는 프로그래밍 방법을 이미 알고 있다는 경쟁력이 있습니다.


2

고성능 계산을 정의하는 방법에 따라 귀하의 질문에 대한 답변이 있다고 생각합니다.

일반적으로 고성능 계산은 계산 시간과 관련이 있습니다. 이 경우 고성능 컴퓨팅 클러스터 의 링크를 공유하고 싶습니다 .

링크는 GPU 사용 이유를 지정합니다. 그리드 컴퓨팅을위한 계산을 수행하기 위해 그래픽 카드 (또는 GPU)를 사용하는 것은 덜 정밀하지만 CPU를 사용하는 것보다 훨씬 경제적입니다.


2
하이 엔드 GPGPU는 double단 정밀도 32 비트뿐만 아니라 64 비트 정밀 처리량도 우수 float합니다. (일부 일반 GPU는 HW를 위해 도약합니다 double). 주요 공급 업체는 모두 IEEE FP 수학을 지원합니다 (비정상적인 경우에도 생각합니다). 당신이하지 않는 그래서 더 정밀 손실이 없습니다 원하는 일부 하드웨어 (물론 절반 메모리 대역폭)에 더 나은 처리량이 16 비트 반 정밀도 FP와 함께 예를 들어, 성능에 대한 정밀도를 거래 할 수 있습니다. CPU의 고성능 코드는 종종 32 비트 float를 사용하여 SIMD 벡터 당 2 배 많은 요소와 절반의 메모리 대역폭을 얻습니다.
Peter Cordes

1
@PeterCordes 하드웨어에서 많은 GPU가 지원하지는 않지만 8 비트 부동 소수점까지 내려가는 근사 컴퓨팅에서 일부 작업을 보았습니다.
JAB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.