NVIDIA vs AMD : GPGPU 성능


105

둘 다 코딩 경험이있는 사람들의 의견을 듣고 싶습니다. 나 자신은 NVIDIA에 대한 경험이 있습니다.

NVIDIA CUDA는 경쟁사보다 훨씬 더 인기있는 것 같습니다. (이 포럼의 질문 태그를 세는 것만으로도 'cuda'는 'opencl'3 : 1을 능가하고 'nvidia'는 'ati'15 : 1을 능가하며 'ati-stream'에 대한 태그는 전혀 없습니다.

반면에 Wikipedia에 따르면 ATI / AMD 카드는 특히 달러당 훨씬 더 많은 잠재력을 가지고 있어야합니다. 현재 시장에서 가장 빠른 NVIDIA 카드 인 GeForce 580 (500 달러)은 1.6 단 정밀도 TFlops입니다. AMD Radeon 6970은 370 달러에 구입할 수 있으며 2.7TFlops입니다. 580에는 772MHz에서 512 개의 실행 장치가 있습니다. 6970에는 880MHz에서 1536 개의 실행 장치가 있습니다.

NVIDIA보다 AMD의 종이 이점은 얼마나 현실적이며 대부분의 GPGPU 작업에서 실현 될 가능성이 있습니까? 정수 작업은 어떻게 되나요?


1
흥미로운 질문이지만 실제로 프로그래밍과 관련된 것인지 잘 모르겠습니다 .
Paul R

25
본질적으로 두 가지 프로그래밍 언어와 그 구현의 실용적인 측면에 대한 질문입니다. 그래서 나는 그렇다고 말할 것입니다.
Eugene Smith

2
이 질문에 대한 답변이 C ++ AMP에 비추어 얼마나 관련성이 있는지 궁금합니다.
Dmitri Nesteruk

2
한때 저는 비트 코인 채굴이 AMD에 비해 NVIDIA 하드웨어에서 왜 그렇게 느린 지 조사했습니다. 결과 스레드 인 "AMD Radeon 3 배 빠른 비트 코인 채굴 (SHA-256 해싱 성능)"에는 흥미로운 정보가 포함되어 있습니다. 당신의 질문. forums.nvidia.com/…
Roger Dahl

1
나에게이 질문은 응답자가 익숙한 응용 분야, 사용하는 하드웨어 및 소프트웨어 등에 따라 의견을 수집하는 결과를 낳을 것 같습니다. 또는 포괄적 인 답변은 SO 형식에 맞추기에는 너무 광범위합니다. 마감 투표.
njuffa

답변:


79

은유 적으로 말하면 ati는 nvidia에 비해 좋은 엔진을 가지고 있습니다. 하지만 엔비디아는 더 나은 차를 가지고 있습니다 : D

이는 대부분 엔비디아가 과학 컴퓨팅 (BLAS, FFT)에 필요한 중요한 라이브러리를 개발하기 위해 상당한 자원 (돈과 사람)을 투자 한 다음이를 홍보하는 데 다시 한 번 좋은 일을했기 때문입니다. 이것이 CUDA가 ati (또는 OpenCL)에 비해 여기에서 태그를 지배하는 이유 일 수 있습니다.

일반적으로 GPGPU 작업에서 실현되는 이점은 메모리 전송 대역폭, 좋은 컴파일러 및 드라이버와 같은 다른 문제 (애플리케이션에 따라 다름)에 따라 결정됩니다. nvidia는 더 성숙한 컴파일러, 리눅스에서 더 안정적인 드라이버 (과학 컴퓨팅에서 널리 사용되기 때문에 리눅스)를 보유하고 있으며, 적어도 현재로서는 CUDA에 유리하게 균형을 기울입니다.


2013 년 1 월 12 일 수정

이 게시물을 작성한 지 2 년이 지났지 만 여전히 때때로 조회수를 끌어들이는 것 같습니다. 그래서 몇 가지를 명확히하기로 결정했습니다

  • AMD는 게임을 강화했습니다. 이제 BLAS 및 FFT 라이브러리가 모두 있습니다. 수많은 타사 라이브러리도 OpenCL 주변에서 잘립니다.
  • Intel은 OpenMP와 OpenCL을 모두 지원하는 Xeon Phi를 공개했습니다. 또한 기존 x86 코드를 사용하는 기능도 있습니다. 주석에서 언급했듯이 현재 SSE없이 제한된 x86
  • NVIDIA와 CUDA는 사용 가능한 라이브러리 범위에서 여전히 우위를 점하고 있습니다. 그러나 그들은 이전처럼 OpenCL에 집중하지 않을 수 있습니다.

간단히 말해서 OpenCL은 지난 2 년 동안 격차를 좁혔습니다. 현장에 새로운 선수가 있습니다. 그러나 CUDA는 여전히 팩보다 약간 앞서 있습니다.


4
Xeon Phi는 x86 코드 실행 기능이 제한적 입니다. MMX / SSE / SSE *가 없습니다.
osgx 2013 년

@osgx 감사합니다. 나는 그것을 언급 했어야했다.
Pavan Yalamanchili

1
@osgx 그러나 DP FP 잘 수행
사바 토스

4
Xeon Phi에는 SSE가 지원하는 것의 4 배인 512 비트 폭의 레지스터와 명령어가 있습니다.
zr.

59

나는 CUDA와 OpenCL에 대해 강한 감정을 가지고 있지 않습니다. 아마도 OpenCL은 개방형 표준이라는 점에서 장기적인 미래입니다.

그러나 현재의 NVIDIA 대 GPGPU 용 ATI 카드 (그래픽 성능이 아니라 GPGPU)에 대해 강한 의견이 있습니다. 이를 위해 현재 상위 500 대 클러스터 목록 에서 NVIDIA가 AMD 4 시스템을 1로, gpgpu.org 에서 NVIDIA 에 대한 검색 결과 (문서, 온라인 리소스 링크 등)를 이끌고 있음지적하겠습니다 . AMD 6 : 1의 결과보다 많습니다.

이 차이의 큰 부분은 사용 가능한 온라인 정보의 양입니다. NVIDIA CUDA Zone 과 AMD의 GPGPU Developer Central을 비교해보십시오 . 시작하는 개발자를위한 항목의 양은 비교에 가깝지 않습니다. NVIDIAs 사이트에서는 아마도 당신과 같은 문제를 해결하는 사람들이 작성한 수많은 문서와 기고 코드를 찾을 수 있습니다. NVIDIA 및 다른 곳에서 온 수많은 온라인 수업과 개발자의 모범 사례 가이드 등과 같은 매우 유용한 문서를 찾을 수 있습니다. 무료 개발 도구 (프로파일 러, cuda-gdb 등)의 가용성은 NVIDIA 방식을 압도적으로 기울입니다.

(편집자 :이 단락의 정보는 더 이상 정확하지 않습니다.) 그리고 일부 차이점은 하드웨어이기도합니다. AMD 카드는 피크 플롭 측면에서 더 나은 사양을 가지고 있지만 그 중 상당 부분을 확보하려면 문제를 완전히 독립적 인 많은 스트림 프로세서로 분리해야 할뿐만 아니라 각 작업 항목도 벡터화해야합니다. GPGPUing 코드가 충분히 어렵다는 점을 감안할 때 추가 아키텍처 복잡성은 일부 프로젝트를 만들거나 중단하기에 충분합니다.

이 모든 결과는 NVIDIA 사용자 커뮤니티가 계속 성장하고 있다는 것입니다. 내가 아는 3 ~ 4 개 그룹 중 GPU 클러스터 구축을 고려하고있는 그룹 중 누구도 AMD 카드를 심각하게 고려하고 있지 않습니다. 이는 NVIDIA 측에서 더 많은 그룹이 논문을 작성하고 코드를 기고하는 등을 의미합니다.

저는 NVIDIA 실이 아닙니다. 이 방식이 아니고 똑같이 매력적인 GPGPU 플랫폼이 두 개 (또는 그 이상!) 있었으면 좋겠습니다. 경쟁이 좋다. 아마도 AMD는 곧 게임을 강화할 것이며 다가오는 퓨전 제품은 매우 매력적으로 보입니다. 그러나 누군가에게 오늘 구매할 카드와 지금 당장 노력을 기울이는 데 시간을 할애 할 장소에 대한 조언을 제공하면서 양심적으로 두 개발 환경이 똑같이 좋다고 말할 수는 없습니다.

추가 편집 : 위의 내용은 원래 질문에 대한 답변 측면에서 약간 타원이라고 생각하므로 좀 더 명확하게 만들겠습니다. 하드웨어에서 얻을 수있는 성능은 무한한 시간을 사용할 수있는 이상적인 세상에서 기본 하드웨어와 프로그래밍 언어의 기능에만 의존합니다. 그러나 실제로 투자 한 고정 된 시간으로 얻을 수있는 성능의 양은 개발 도구, 기존 커뮤니티 코드베이스 (예 : 공개적으로 사용 가능한 라이브러리 등)에 크게 의존합니다. 이러한 고려 사항은 모두 NVIDIA를 강력하게 지적합니다.

(편집자 :이 단락의 정보는 더 이상 정확하지 않습니다.) 하드웨어 측면에서 AMD 카드의 SIMD 장치 내에서 벡터화에 대한 요구 사항은 NVIDIA 하드웨어보다 종이 성능을 훨씬 더 어렵게 만듭니다.


2
저는 ATI Stream을 사용하여 OpenCL을 배우고 있습니다. 벡터화에 대한 참고 사항에 감사드립니다. :) NVIDIA의 이점이 상당히 크다는 것을 알고 있지만 AMD / ATI와 회사 자체를 지원하고 라이브러리를 만드는 데 시간을 할애 할 시간이 있습니다 .DI는 OpenCL 성능이 앞으로 몇 년 동안 확실히 증가하고 내 코드도 이에 대비하기를 바랍니다.
Garet Claborn 2011 년

AMD의 GCN 및 OpenCL 1.2 (2013 년)에 대해 simd가 과거의 일이라고 생각하는 것은 흥미로울 것입니다. 순 차이가 있습니까?
danno

3
@Jonathan이 멋진 게시물을 작성한 지 3 년이되었습니다. 귀하의 관점에서 AMD 플랫폼, 커뮤니티 및 생태계가 격차를 좁혔는지 궁금합니다.
basilikode

비디오 또는 GPGPU 카드는 아니지만 프로세서 자체에 관해서는 항상 AMD보다 Intel의 팬 이었지만 최근 AMD는 화상 표시 테스트에서 기본 설정으로 표시되는 새로운 ZEN 프로세서를 출시하려고합니다. Intel의 상위 i7 프로세서와 비슷합니다. 그들의 새로운 기술은 지침의 패턴을 인식하므로 더 많이 작동할수록 향상됩니다. 그래서 저는 그들의 GPU 기술이 아닌이 새로운 프로세서에 그들의 대부분의 시간과 노력이 소비되었다고 생각합니다. 그러나 Zen 프로세서가 출시되면 인텔이 더 나은 것을 가질 것이라고 확신합니다.
Francis Cugler

17

AMD와 NVIDIA 아키텍처의 주요 차이점은 AMD는 알고리즘의 동작이 컴파일 타임에 결정될 수있는 문제에 최적화되어 있고 NVIDIA는 알고리즘의 동작이 런타임에만 결정될 수있는 문제에 최적화되어 있다는 것입니다.

AMD는 ALU에 더 많은 트랜지스터를 사용할 수있는 비교적 단순한 아키텍처를 가지고 있습니다. 문제가 컴파일 타임에 완전히 정의되고 다소 정적이고 선형적인 방식으로 아키텍처에 성공적으로 매핑 될 수있는 한 AMD가 NVIDIA보다 더 빠르게 알고리즘을 실행할 수있는 좋은 기회가 있습니다.

반면에 NVIDIA의 컴파일러는 컴파일 시간에 분석을 덜 수행합니다. 대신 NVIDIA는 런타임에만 나타나는 알고리즘의 동적 동작을 처리 할 수있는 로직에 더 많은 트랜지스터를 사용하는 고급 아키텍처를 가지고 있습니다.

GPU를 사용하는 대부분의 슈퍼 컴퓨터가 NVIDIA와 함께한다는 사실은 과학자들이 계산을 실행하는 데 관심이있는 문제 유형이며 일반적으로 AMD보다 NVIDIA 아키텍처에 더 잘 매핑된다는 것입니다.


2
GCN (Graphics Core Next)을 통해 AMD는 SIMD 및 VLIW에서 NVIDIA와 더 유사한 아키텍처 (SIMT 및보다 유연한 명령 스케줄링)로 이동했습니다.
Aleksandr Dubinsky

1
@AleksandrDubinsky : 그리고 Compute Capability 3.0의 하드웨어를 통해 NVIDIA는 동적 스케줄링을 제거함으로써 AMD에 더 가까워졌습니다. 나는 그들의 아키텍처가 중간 어딘가에 수렴 할 것이라고 생각합니다.
Roger Dahl

1
예전에 들었지만 구체적인 정보를 찾을 수 없었습니다. 이에 대한 자세한 내용은 어디에서 찾을 수 있습니까?
Yakov Galka 2015 년

7

OpenCL에서 몇 가지 반복 코딩을 수행했습니다. 그리고 NVIDIA와 ATI에서 실행 한 결과는 거의 동일합니다. 동일한 가치 ($) 카드에서 거의 동일한 속도.

두 경우 모두 CPU에 비해 ​​속도가 ~ 10x-30x였습니다.

CUDA를 테스트하지는 않았지만 무작위 메모리 가져 오기 문제를 마술처럼 해결할 수 있을지 의문입니다. 요즘 CUDA와 OpenCL은 거의 동일하며 CUDA보다 OpenCL에서 더 많은 미래를 볼 수 있습니다. 주된 이유는 인텔이 프로세서 용 OpenCL을 사용하여 드라이버를 출시하기 때문입니다. 이것은 미래에 큰 발전이 될 것입니다 (CPU에서 OpenCL의 16, 32 또는 64 스레드를 실행하는 것은 정말 빠르고 GPU로 이식하기 쉽습니다).


7

Fermi와 Kepler를위한 CUDA를 몇 년간 사용한 후 GCN 카드 용 OpenCL과 함께 시간을 보냈지 만 여전히 CUDA를 프로그래밍 언어로 선호하고 옵션이 있다면 CUDA가있는 AMD 하드웨어를 선택합니다.

NVIDIA와 AMD (OpenCL)의 주요 차이점 :

AMD의 경우 :

  • Maxwell을 사용하더라도 NVidia는 여전히 더 긴 명령 대기 시간을 가지며 복잡한 알고리즘은 두 가지 모두에 대해 쉽게 최적화 한 후 AMD (동일한 이론적 Tflops 가정)에서 10 더 빠를 가능성이 있습니다. Kepler VS GCN의 경우 차이는 최대 60 %였습니다. 이러한 의미에서 NVidia에 대한 복잡한 커널을 최적화하는 것은 더 어렵습니다.

  • 저렴한 카드.

  • OpenCL은 다른 공급 업체를 사용할 수있는 개방형 표준입니다.

Nvidia의 경우 :

  • 신뢰할 수있는 높은 서버 부하에 적합한 Tesla 하드웨어 제품군이 있습니다.

  • New Maxwell은 훨씬 더 전력 효율적입니다.

  • 컴파일러와 도구는 훨씬 더 발전했습니다. AMD는 여전히 maxregcout매개 변수 를 구현할 수 없으므로 다양한 하드웨어에서 점유를 쉽게 제어 할 수 있으며 컴파일러는 모든 버전에 따라 변경되는 최적의 코드에 대한 임의의 아이디어를 많이 가지고 있으므로 절반마다 이전 코드를 다시 방문해야 할 수 있습니다. 갑자기 40 % 느려졌 기 때문입니다.

이 시점에서 GPGPU가 목표라면 CUDA가 유일한 선택입니다. AMD를 사용한 opencL은 서버 팜에 사용할 준비가되지 않았고 컴파일러가 항상 "베타 상태"인 것처럼 보이기 때문에 AMD를위한 효율적인 코드를 작성하는 것이 훨씬 더 어렵 기 때문입니다. .


새로운 답변에 감사드립니다. "10 개 더 빠를 가능성이있는"단위가 무엇인지 명확히 할 수 있습니까? 퍼센트?
Aleksandr Dubinsky

개인적인 의견 : 한때 ATI 카드는 Nvidia보다 나은 점이 있었지만 드라이버 업데이트 지원이 부족했으며 시간이지나면서 AMD는 Nvidia가 여전히 같은 회사 인 ATI를 완전히 인수했습니다. 또한 Nvidia는 여전히 더 나은 업데이트 드라이버 지원을 제공합니다. 이는 애플리케이션 성능을 위해 카드의 사용자쪽에 더 많이 있습니다. 오해하지 마십시오. 두 기술 모두 자체 방식으로 훌륭하며 둘 다 저가형 카드와 더 비싼 고급형 카드를 가지고 있습니다. 시간이 지남에 따라 ATI에서 Nvidia로 전환했습니다. 개발과 관련하여 Nvidia에는 ​​훨씬 더 나은 기능 세트와 프로그래밍 가능한 API 또는 라이브러리가 있습니다.
Francis Cugler

6

저는 GPGPU를 처음 접했지만 과학 컴퓨팅 (물리학 박사)에 대한 경험이 있습니다. 연구팀을 구성하고 있으며 계산에 GPGPU를 사용하고 싶습니다. 사용 가능한 플랫폼 중에서 선택해야했습니다. 나는 몇 가지 이유로 Nvidia를 결정했습니다. ATI는 종이로는 더 빠를 수 있지만 Nvidia는 더 성숙한 플랫폼과 더 많은 문서를 가지고 있으므로이 플랫폼에서 최고 성능에 더 가까워 질 수 있습니다.

Nvidia는 또한 학술 연구 지원 프로그램을 가지고 있으며 지원을 신청할 수 있으며 TESLA 2075 카드를 받았습니다. ATI 또는 Intel이 이런 방식으로 연구를 지원하는지 모르겠습니다.

내가 OpenCL에 대해 들었던 것은 한 번에 모든 것이 되려고한다는 것입니다. OpenCL 코드가 더 이식 가능할 것이라는 것은 사실이지만 두 플랫폼의 모든 기능을 활용하지 못할 수도 있습니다. 차라리 조금 더 배우고 리소스를 더 잘 활용하는 프로그램을 작성하고 싶습니다. 올해 출시 된 TESLA K10과 함께 Nvidia는 4.5 TeraFlops 범위에 있으므로 Nvidia가 뒤처지는 것은 분명하지 않습니다 ... 그러나 Intel MIC는 특히 GPGPU 장치를 마더 보드. 하지만 지금은 Nvidia를 선택했습니다.


NVidia의 (부족한) 지원에 대한 의견은 @AndrewCooke의 답변을 살펴보십시오.
Aleksandr Dubinsky

5

OpenCL 부동 소수점 성능을 평가 한 경험은 NVIDIA 카드를 선호하는 경향이 있습니다. 저는 8600M GT에서 GTX 460에 이르는 NVIDIA 카드에서 몇 가지 부동 소수점 벤치 마크로 작업했습니다. NVIDIA 카드는 이러한 벤치 마크에서 이론적 인 단일 정밀도 피크의 약 절반을 지속적으로 달성합니다.
내가 작업 한 ATI 카드는 단 정밀도 피크의 1/3 이상을 거의 달성하지 못했습니다. ATI에 대한 나의 경험이 왜곡되어 있음을 유의하십시오. 저는 5000 시리즈 카드 하나로 작업 할 수있었습니다. 내 경험은 대부분 HD 4000 시리즈 카드로 잘 지원되지 않았습니다. HD 5000 시리즈 카드에 대한 지원이 훨씬 더 좋습니다.


1

토론에 추가하고 싶습니다. 소프트웨어 비즈니스에서 우리는 원시 단 정밀도 성능을 생산성으로 타협 할 수 있지만 이미 지적했듯이 OpenCL을 사용하여 ATI 하드웨어에서 달성 할 수있는만큼 많은 성능을 얻을 수 없기 때문에 타협 할 필요는 없습니다. NVIDIA의 하드웨어에 CUDA를 쓰는 경우.

그리고 예, CUDA 용 x86 컴파일러에 대한 PGI의 발표로 인해 OpenCL에서 작성하는 데 더 많은 시간과 리소스를 소비 할 합당한 이유가 없습니다. :)

추신 : 우리가 거의 모든 GPGPU 작업을 CUDA에서 수행하기 때문에 내 주장이 편향 될 수 있습니다. CUDA의 일부 핵심 IP / CV 기능을 가속화하는 이미지 처리 / 컴퓨터 비전 라이브러리 CUVI (비전 및 이미징을위한 CUDA)가 있습니다.


0

Cuda는 OpenCL보다 3 ~ 4 년 전에 출시 되었기 때문에 현재 OpenCL보다 확실히 인기가 있습니다. OpenCL이 출시 된 이후 Nvidia는 CUDA에 많이 집중하기 때문에 언어에 많이 기여하지 않았습니다. 그들은 심지어 어떤 드라이버에 대해서도 openCL 1.2 버전을 출시하지 않았습니다.

이기종 컴퓨팅 및 휴대용 장치에 관한 한 OpenCl은 가까운 장래에 더 많은 인기를 얻을 것입니다. 현재 OpenCL의 가장 큰 기여자는 AMD이며, 해당 사이트에서 볼 수 있습니다.


-2

내 경험상 :

  • 최고의 절대 성능을 원한다면 누가 최신 하드웨어 반복에 있는지 확인하고 스택 (최신 / 베타 릴리스 포함)을 사용해야합니다.

  • 돈을 위해 최고의 성능을 원한다면 "전문"카드보다는 게이머 카드를 목표로 할 것이며 다른 플랫폼을 대상으로하는 유연성은 opencl을 선호합니다.

  • 특히 시작하는 경우 cuda는 더 세련되고 더 많은 도구와 라이브러리가있는 경향이 있습니다.

마지막으로, nvidia의 끔찍한 "지원"을받은 후 제 개인적인 견해 (우리는 죽은 테슬라를 얻었고 클라이언트가 기다리는 동안 몇 달 동안 변경되지 않았습니다) : opencl을 사용하여 점프 할 수있는 유연성은 성능이 약간 저하 될 위험이 있습니다. nvidia가 출시주기에 앞서있을 때.


nvidia의 "지원"에 대한 유사한 경험 : 충돌 libcuda.so(OpenCL에서만 작동, CUDA 작동) 및 응답 없음.
eudoxos

1
우리 딜러와 함께 우리는 죽은 테슬라를 교체하는 데 문제가 없습니다. 일반적으로 우리는 결함이있는 하드웨어를 보내기 전에 새 하드웨어를받습니다. 그래서 나는 그것이 NVidia 문제가 아니라 딜러의 문제라고 생각합니다.
Gaetano Mendola

나는 Tesla가 매우 믿을만하다고 생각했습니다. 어떤 마케팅 풋.
Aleksandr Dubinsky

OpenCL은 성능 이식성이 없기 때문에 한 회사가 새로운 플래그십을 출시 할 때마다 (두 개의 최적화 된 코드 브랜치를 유지하지 않고) 홉 배송 할 수 없습니다. 또한 NVIDIA의 OpenCL 지원은 여러 버전이 뒤쳐져 있으며 유지 관리가 제대로되지 않은 것 같습니다.
Aleksandr Dubinsky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.