문제

나는 제품을 개발하고 무거운 3D 그래픽스,계산 크 가장 가까운 지점 범위를 검색.일부 하드웨어 최적화 될 것이 유용합니다.나는 조금 알고,이것에 대해 내 상사(자가 소프트웨어를 경험)옹호 FPGA(수 있기 때문에 맞춤형)하는 동안,우리의 주니어 개발자를 옹호 그래픽으로 CUDA,기 때문에 저렴하고,뜨거운 열려 있습니다.는 동안 나는 느낌이 나는 부족한 판단에 이 질문은 내가 믿 CUDA 방법입니다 또한 이동하기 때문에 나는 걱정에 대해 유연성을 우리의 제품에 여전히 강한 발전이다.

그래서 다른 표현,질문,어떤 이유에 대한 이동하는 FPGA 니까?또는 있는가 세 번째 옵션?

도움이 되었습니까?

해결책

를 조사한 결과 같은 질문입니다.후에게 일한 사람들에 Fpga,이것은 무엇을 얻을:

  • FPGAs 를 위한 좋은 실시간 시스템에도 1ms 의 지연될 수 있습니다.이 적용되지 않는 경우에;
  • Fpga 매우 빠르게 할 수 있습니다,espeically 에 대한 정의 디지털 신호 처리 용도(예:레이 데이터)를 하지만 좋은 사람은 훨씬 더 비싸고 전문 보다 더 전문적인 GPGPUs;
  • Fpga 은 매우 복잡하는 프로그램입니다.이 있기 때문에 하드웨어 구성 요소를 컴파일,그것은 시간이 걸릴 수도 있습니다.그것은 있을 것이 더 적합하여 전자 엔지니어(는 일반적으로는 사람에 일 Fpga)보다는 소프트웨어 개발자입니다.

만약 당신이 할 수 있 CUDA 작업을 당신을 위해,그것은 아마도 최선의 선택합니다.그것은 확실히 더 유연보다 FPGA.

다른 옵션은 다음과 같습니다 시내에서 ATI 까지만 뭔가 큰 일어나는,그것은 단지뿐만 아니라 채택했으로 CUDA.후에는,아직도있다 모든 전통적인 HPC 옵션(클러스터의 x86/파워포)지만,그들은 모두 매우 비싸다.

는 희망 도움이 됩니다.

다른 팁

우리는 몇 가지 사이의 비교 FPGA 및 CUDA.한 곳에 CUDA 빛을 발할 수 있다면 정말을 공식화 문제에 SIMD 패션 액세스할 수 있는 메모리를 합체.메모리에 액세스하지 않는 합체(1)나가 다른 경우 통제 흐름을 다른 스레드에서 GPU 을 잃을 수 있는 크게 그것의 성능과 FPGA 능가할 수 있습니다.또 다른 점은 경우 귀하의 작업은 realtive 작은,하지만 당신은 엄청난 금액을 가지고 있습니다.하지만 당신은(예:으로 인해 동기화)없이 시작하에서 루프에서 하나의 커널,다음 호출 시간에 대한 GPU 커널을 초과하는 계산 시간입니다.

또한 힘의 FPGA 더 나을 수 있(응용 프로그램에 따라 다릅 scenarion,ie.GPU 은 저렴하(측면에서의 와트/Flop)을 때 컴퓨팅 모든 시간).

주말 FPGA 또한 일부 단점이 있:IO 중 하나가 될 수 있습(우리는 여기 있는 응용 프로그램이었다 우리는 필요한 70GB/s,문제에 대한 GPU 지만,이러한 양의 데이터를 FPGA 에 필요한 기존의 설계보다 더 많은 핀을 사용할 수 있습니다).또 다른 단점은 시간과 돈입니다.A FPGA 보다 훨씬 더 많은 비용이 최고의 GPU 및 개발에 시간이 매우 높습니다.

(1)Simultanously 에 액세스하에서 다른 스레드를 기억해야 될을 순차적 주소.이것은 때로는 달성하기 위해 정말 열심히.

내가 갈 것이라고 CUDA.
내 작업에 이미지를 처리하는 하드웨어 추가니다.최저가 i860,다음 Transputer,다음 DSP,다음 FPGA 와 직접 compiliation-to-하드웨어입니다.
What innevitably 일어났었는 시간에 의해 하드웨어 보드 디버깅 정말 믿을 수 있고 코드가 포팅되었습니다 그들-일반 Cpu 고급던 그들을 이길거나 호스팅 컴퓨터 아키텍처는 변경하고 우리는 수 없는 사용자의 보드,또는 메이커는 보드의 가슴을 갔다.

에 의해 행해 무언가가 다음과 같 CUDA 지 않을 묶어 하나의 작은 전문가의 메이커 FPGA 니다.의 성과의 Gpu 이 개선되고 다음 빠르게 응용 프로그램을 호스팅합니다.투자에 의하여 게이머입니다.그것의 주요 기술 및 그래서 아마 병합으로 멀티 코어 Cpu 미래에 그래서 고객의 투자를 보호합니다.

FPGAs

  • 당신이 필요:
    • 배우 VHDL/Verilog(고 나를 믿지 않을 것)
    • 사 hw 에 대한 테스트,라이센스에는 합성구
    • 선택하는 경우 몇 가지 좋은 프레임 워크(예합니다.: RSoC)
      • 디자인 개발(수행될 수 있습니다 세)
    • 지 않는 경우:
      • DMA,hw 드라이버,매우 비싼 종합 도구
      • t 에 대한 지식의 버스,메모리 맵핑,hw 합성
      • 를 구축 hw,구매,ip 코어
      • 디자인 개발
  • 예를 들어 평균 FPGA pcie 카드 칩 Xilinx virtex-6 보다 더 많은 비용 3000$
  • 결과:
    • 하지 않은 경우 정부에 의해 지불할 없는 충분한 기금에 있습니다.

GPGPU(CUDA/OpenCL)

  • 당신은 이미 hw 테스트니다.
  • 을 비교하는 FPGA 물건:
    • 모든 것이 잘 설명되어 있습니다.
    • 모든 것은 싸
    • 모든 것이 잘 통하는 프로그래밍 언어
  • 가 GPU 뿐만 아니라 클라우드.
  • 결과:
    • 당신이 필요하 다운로드 sdk 그리고 당신은 시작할 수 있습니다.

FPGA 기반 솔루션이 될 가능성이 높은 방법보다 더 비싼 CUDA.

물론 이것은 복잡한 질문입니다.질문이 포함될 수도 있습니다 세포 프로세서입니다.그리고,아마도 아닌 하나의 대답에 대한 올바른 다른 관련된 질문입니다.

내 경험에 어떠한 구현에서 수행 추상적인 패션,즉컴파일한 높은 수준 언어로 대기계 수준의 구현을 것입니다 필연적으로 성능 비용,esp 에서 복잡한 알고리즘을 구현합니다.이것은 진실의 양 FPGA 및 프로세서의 종류에 구애받지 않습니다.는 FPGA 설계를 구현하기 위해 특별히 복잡한 알고리즘을 보다 더 나은 수행하는 FPGA 는 처리 요소는 일반적인할 수 있도록 학위 프로그래밍의 입력 제어 레지스터 데이터 i/o etc.

다른 일반적인 예는 FPGA 수 있습이 훨씬 더 높은 성능에 연결된 프로세스에서 과정 출력 될 입력하고 그들은 할 수 없습을 동시에.식 프로세스에서는 FPGA 는 간단하고할 수 있습 극적으로 낮은 메모리 I/O 요구하는 동안 프로세서 메모리 사용되는 것을 효과적으로 캐스케이드 두 개 이상의 프로세스는 데이터가 종속성입니다.

동의 말할 수 있는 GPU 와 CPU.알고리즘 구현 C 에서 실행되는 CPU 개발에 관계없이 고유의 성능 특성의 캐시 메모리 또는 주 메모리 시스템을 수행하지 않습니다뿐만 아니라 하나의 구현는 않습니다.부여,고려하지 않고 이러한 성능 특성을 단순화 구현합니다.그러나 성능이 저하될 수 있습니다.

없는 직접 경험 GPU,하지만 모르고 그 고유의 메모리 시스템 성능 문제도 그것을 실시하는 성능 문제를 해결합니다.

이것은 오래된 실 2008 년에 시작했지만,그것은 좋은 것을 무엇이 일어났는 FPGA 프로그래밍에 그 이후:1.C 게이트에서 FPGA 주류 개발을 위해 많은 회사와 함께한 시간을 절약 대Verilog/SystemVerilog HDL.C 하고 시스템 수준의 디자인은 어려운 부분입니다.2.OpenCL on FPGA 가 4 년을 포함한 부동 소수점 및"클라우드"배포하여 마이크로소프트(선택)및 Amazon F1(Ryft API).로 OpenCL 시스템 디자인을 상대적으로 쉽게 때문에 잘 정립된 모델 메모리고 API 를 사이트와 컴퓨팅 장치입니다.

소프트웨어 사용을 배울 필요가에 대해 조금 FPGA architecture 을 할 수 있을지 않는 것도 가능 Gpu 및 Cpu 에 대한의 이유를 모두 실리콘 고정되고 있지 않는 광대역(100Gb+)인터페이스 바랍니다.크 칩 형상이 더 이상 할 수 없으며,추출하기에서 더 많은 열을 하나의 칩 패키지없이 녹는다,그래서 이처럼 보이는 도로의 끝에 대한 하나의 패키지는 칩이다.나의 논문은 미래 그리고 병렬 프로그래밍의 멀티 칩 시스템,그리고 Fpga 할 수있는 좋은 기회를 가질 수 있습니다.체크아웃 http://isfpga.org/ 에 대한 우려가 있는 경우의 성능,etc.

CUDA 상당히 실질적인 코드 기반의 예고 SDK, 함 a BLAS back-end.을 찾으려고 몇 가지 예 비슷한 당신이 무엇을 하고,아마도 찾고서 GPU 석 책의 시리즈,얼마나 잘 측정하 CUDA 맞는 응용 프로그램을 수행합니다.내가 말할 것에서 로지스틱의 관점,CUDA 하고 쉽게 작업하고 훨씬,훨씬 더 이상 어떤 전문 FPGA 개발 도구입니다.

한 지점에서 나는 보았으로 CUDA 에 대한 주장을 예약 시뮬레이션 플랫폼을 수립하고 있는 것입니다.거기에 아주 좋은 시리즈의 강의 링크된 웹 사이트에 대한 학습합니다.윈도우에서,당신이 필요가 있는지 확인 CUDA 에서 실행되는 카드가 없으로 표시됩 그래픽 하부 시스템에는 와치독 타이머는 것이 핵무기를 실행하는 프로세스에 대한 더 많은 than5seconds.이 발생하지 않는 리눅스에서.

어떤 mahcine 두 PCI-e x16 슬롯해야 하는 이것을 지원합니다.사용 HP XW9300,선택할 수있는 베이에서 매우 저렴합니다.당신이 경우에는지 확인,그것은 두 개의 CPU(지 않은 하나 이중 중핵 CPU)가 PCI-e 슬롯에 살고 별도의 하이퍼트랜스포트 버스와야 할 두 개의 CPU 의 기기에 모두가 버스가 활성화됩니다.

I'm a CUDA 개발자와 매우 littel 경험 FPGA:s,그러나 내가 하려고 했는데을 찾아 비교입니다.

무엇이 내린 결론 지금까지:

GPU 에 의해 지금까지 높(액세스할 수)최대 성능 그것에는 호의를 베푸는 FLOP/와트 비율이 있습니다.그것은 저렴 그것을 개발하고 빠르게(아주 빨리 당신은 말 그대로"진짜"TFLOP 사용할 수 있습니다).그것은 쉽게 프로그램(문서를 읽고 이에 개인적인 견해)

참고 하는 말인지 실제/스에서 구별하는 숫자에 표시 됩니다 그래픽업적이다.

그러나 복수의 디스플레이 아닌 더 유리한 작업이 필요할 때는 랜덤 액세스하는 데이터입니다.이 희망을 변화와 새로운 Nvidia Fermi 건축물이 있는 선택적 l1/l2 캐시입니다.

제 2 센트

FPGA 지 않을 것이 선호하는 사람들에 의해 소프트웨어와 함께 편견으로 그들을 배울 필요가 있는 HDL 또는 적어도 이해 systemC.

사람들을 위해 하드웨어 바이어스 FPGA 것이 첫 번째 옵션은 간주됩니다.

현실에서 확고한 이해의 필요한 다 목적 의사 결정을 만들 수 있습니다.

OpenCL 에서 실행되도록 설계되었습니 모두 FPGA&GPU 도,CUDA 이식할 수 있습니다 FPGA.

FPGA&GPU 가속기를 함께 사용할 수 있습니다

그래서 그것의 경우 더 나은 것 중 하나다.도에 대한 논쟁 CUDA 대 OpenCL

다시 있지 않으면 최적화 및 벤치마킹 모두의 특정 응용 프로그램을 알 수 없는 100%확실성.

많은 것은 단순히 가 CUDA 기 때문에 그것의 상업적인 자연 및 리소스입니다.다른 사람들과 함께 갈 것입니다 openCL 기 때문에 그것의 다양성이다.

당신은 무엇을 배포하는가?당신의 고객은 누구인가?지 않고도 알고 이러한 질문에 대한 답변을,나를 사용하지 않는 FPGA 지 않으면 당신은 실시간 시스템과 전기/컴퓨터 엔지니어 팀이 지식을 하드웨어의 설명 과 같은 언어와 VHDL Verilog.많은 그것과 다른 구조의 마음보다는 기존의 프로그래밍입니다.

Fpga 떨어진 은혜에서 HPC 분야기 때문에 그들은 horrorterror 하는 프로그램입니다.CUDA 이기 때문에 그것은 훨씬 더 좋은 프로그램을 제공합니다 당신은 몇 가지 좋은 성과가 있습니다.나 갈 것이 무엇 HPC 커뮤니티과 함께 사라지다고 그것에 CUDA.그것은 쉽게,그리고 저렴,그것은 더욱 유지 가능합니다.

다른 사람들이 주어진 좋은 답변,다만 원을 추가하는 서로 다른 관점입니다.여기에는 나의 설문조사 에 출판 ACM 컴퓨팅 조사 2015(그 permalink )를 비교하는 GPU 가 FPGA 와 CPU 에너지 효율성 지표입니다.가장 논문 보고서:FPGA 는 보다 더 많은 에너지를 효율적으로 GPU,에 보다 더 많은 에너지를 효율적으로 CPU.이후 전원 예산의 고정(에 따라 냉각 기능),에너지 효율의 FPGA 중 하나를 의미 할 수있는 더 많은 계산에는 같은 전원과 예산 FPGA,그리고 이렇게 더 나은 성과와 FPGA 보다 의미합니다.의 과정,또한 계정 FPGA 제한으로 언급하여 다른 사람입니다.

  • Fpga 더 많은 병렬 이 Gpu,세 orders of magnitude.는 동안 좋은 GPU 기능이 수천 개의 코어,FPGA 있는 수백만 프로그래밍이 가능한 게이트.
  • 동 CUDA 코어를 해야 하는 매우 유사한 계산을 생산,FPGA 진정으로 세포로부터 독립니다.
  • FPGA 매우 빠르게 할 수 있습니다 몇 가지 그룹의 작업은 종종 사용 됩 밀리미으로 볼 수있는 긴 기간이 있습니다.
  • GPU 핵심은 방법보다 더 강력한 FPGA 셀,그리고 훨씬 더 쉽게 프로그램입니다.그것은 핵심,나눌 수 있습니다 곱하면 문제가 없을 때는 FPGA 세포만 할 수 있고 오히려 단순한 논리.
  • GPU 핵심입니다 core,그것은 효율적인 프로그램에서는 C++.심지어는 것도 가능하다 FPGA 프로그램에서는 C++,는 것은 비효율적이다(다만"생산").전문 같은 언어 VDHL 또는 Verilog 사용되어야-그들은 어려운 도전을 마스터입니다.
  • 의 대부분은 진실하고도 본능의 소프트웨어 엔지니어 쓸모가 있으로 FPGA.할 루프 이러한 문?는 은하에서 당신?당신은 필요한 변경으로 사고 방식의 전자공학을 이해하는 엔지니어이다.

에서 최신 GTC'13 많은 HPC 사람들이 합의하는 쿠이 여기에 있습니다.FGPA 의는 복잡하고,CUDA 은 매우 더 성숙을 지원하는 파이썬/C/C++/ARM..어느 쪽이든,그 일자 질문

프로그래밍 GPU CUDA 은 확실히 더 쉽습니다.는 경우에 당신은 경험이 없는 프로그래밍 Fpga HDL 그것은 거의 확실히 도전을 너무 많이,당신을 위해할 수 있지만 여전히 그들을 프로그램으로 OpenCL 는 유사한 CUDA.그러나,그것은 더 열심히 구현하고 아마 많이 보다 더 비싼 프로그래밍 Gpu 있습니다.

어느 쪽이 더 빠르다?

GPU 를 빠르게 실행하지만,FPGA 더 효율적일 수 있습니다.

GPU 가능성의 실행하는 속도보다 더 높은 FPGA 수 있다.하지만 알고리즘에는 특별히 적합합니다.는 경우에는 알고리즘이 최적의 상태가 아닌,GPU 이 느슨한 많은 성과입니다.

FPGA 에 다른 손으로 실행되는 많은 느리고,하지만 구현할 수 있습니다 문제는 특정 하드웨어는 것은 매우 효율적이고 일을 할 수 있습니다.

그처럼 좀 먹는 당신의 수프와 포크 매우 빠르게 대그것을 먹고 숟가락으로 더 느리게 합니다.

두 장치의 기본 성능에 병렬화하지만,각각에서 약간 다른 방법이다.는 경우에는 알고리즘이 될 수 있습 과립으로 조각을 많이 실행되는 동일한 작업(키워드:SIMD),GPU 빠를 것이다.는 경우에는 알고리즘을 구현할 수 있습으로 긴 파이프라인,FPGA 빠를 것이다.또한,사용하려면 소수점,FPGA 지 않을 것이 매우 행복하다:)

나는 전체 석사 논문이 주제입니다.알고리즘에서 가속 FPGA 로 OpenCL

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top