브룩GPU

BrookGPU
브룩GPU
리포지토리
운영 체제Linux, Windows
유형컴파일러/런타임
면허증BSD 라이센스(부품들이 GPL 아래에 있음)
웹사이트http://graphics.stanford.edu/projects/brookgpu/

브룩 프로그래밍 언어와 구현 브룩GPU그래픽 처리 장치에 범용 컴퓨팅을 가능하게 하기 위한 초기 및 영향력 있는 시도였다.[1][2] 스탠포드 대학 그래픽 그룹에서 개발된 브룩은 ATI엔비디아 그래픽 카드에서 발견된 것과 같은 현대적이고 병렬적인 GPU를 대상으로 스트림 프로그래밍 언어를 컴파일러 및 런타임 구현한 것이었다.

브룩GPU는 ANSI C의 변종인 브룩 스트림 프로그래밍 언어를 사용하여 작성된 프로그램을 편집했다. 컴퓨팅 백엔드에 OpenGL v1.3+, DirectX v9+ 또는 AMD의 Close to Metal을 대상으로 하며 마이크로소프트 윈도우즈리눅스 모두에서 실행될 수 있다. 디버깅의 경우, BrookGPU는 CPU에서 가상 그래픽 카드를 시뮬레이션할 수도 있다.

상태

마지막 주요 베타 릴리즈(v0.4)는 2004년 10월이었지만, 2007년 11월 v0.5 베타 1 릴리즈와 함께 리뉴얼 개발이 시작되어 다시 중단되었다.

v0.5의 새로운 기능에는 PBuffer 대신 Framebuffer 객체를 사용하고 독점적인 벤더 확장을 사용하는 대신 표준 OpenGL 인터페이스를 중심으로 코드를 조화된 훨씬 업그레이드되고 빠른 OpenGL 백엔드가 포함되어 있다. 기존에 DirectX 9에서만 지원하던 모든 기능(복합 분기 및 루프)을 OpenGL에 가져오는 GLS 지원이 추가됐다. 특히 브룩이 이제 윈도 못지않은 Linux 능력을 갖췄다는 의미다.

v0.5 시리즈의 다른 개선 사항으로는 다른 스레드가 여러 Brook 프로그램을 동시에 실행할 수 있는 다중 백엔드 사용(즉, 다중 GPU 설정 사용 극대화)과 CPU 백엔드에 대한 SSEOpenMP 지원(이것은 현대 CPU의 거의 최대 사용 허용)이 있다.

실적비교

데스크톱 CPU와 GPGPU의 유사한 비교는 알고리즘과 구조적 차이 때문에 문제가 있다.

예를 들어 2.66GHz Intel Core 2 듀오는 SSE와 스트리밍 메모리 액세스를 최적으로 사용할 경우 최대 25개의 GFLOP(초당 250억개의 단일정밀 부동 소수점 운영)를 수행할 수 있어 프리페처가 완벽하게 작동한다. 그러나 전통적으로(쉐이더 프로그램 길이 제한으로 인해) 대부분의 GPGPU 커널은 대량의 데이터에 대해 비교적 적은 양의 작업을 병렬로 수행하는 경향이 있으므로, 데스크톱 CPU에서 GPGPU 알고리즘을 직접 실행하는 큰 문제는 CPU가 대부분의 시간을 RAM에서 기다리기 때문에 메모리 대역폭이 훨씬 낮다. 예를 들어 듀얼 채널 PC2-6400 DDR2 RAM은 총 3개의 GFLOP 총 대역폭이 있으며 읽기와 쓰기를 모두 수행해야 하는 경우 최대 약 1.5 GFLOPs인 약 11 Gbit/s를 처리할 수 있다. 결과적으로, 메모리 대역폭이 제한된다면, 브룩의 CPU 백엔드는 2 GFLOP를 초과하지 않을 것이다. 실제로 SSE가 가속화될 수 있는 유일한 데이터 유형인 float4가 아닌 다른 어떤 유형의 데이터보다 훨씬 낮다.

브룩은 ATI HD 2900 XT(740MHz 코어 1000MHz 메모리)에서 DirectX 9 백엔드를 통해 최대 410GFLOP를 수행할 수 있다. OpenGL은 현재(드라이버 및 Cg 컴파일러 한계로 인해) GPU의 GPGPU 백엔드로서 효율성이 훨씬 떨어지기 때문에 브룩은 해당 GPU에서 OpenGL을 사용할 때 210 GFLOPs만 관리할 수 있다. 서류상으로는 CPU보다 약 20배 빠른 것처럼 보이지만, 방금 설명한 것처럼 쉽지는 않다. GPU는 현재 주요 지점과 읽기/쓰기 액세스 페널티를 가지고 있으므로 실제 세계 코드의 최대 피크 3분의 1까지 예상할 수 있다. 이는 여전히 ATI 카드가 인텔 코어 2 듀오보다 약 5배 빠른 약 125 GFLOPs로 남는다.

그러나 이것은 GPU로 처리될 데이터를 전송하거나 GPU로부터 전송하는 중요한 부분을 할인한다. PCI Express 1.0 x8 인터페이스를 사용하면 ATI HD 2900 XT의 메모리는 약 730 Mbit/s로 쓸 수 있고, 일반 PC 메모리보다 상당히 느린 약 311 Mbit/s에서 읽을 수 있다. 대규모 데이터셋의 경우, 이는 잘 조정된 CPU 구현에 대한 GPU 사용 속도 증가를 크게 줄일 수 있다. 물론 GPU가 CPU보다 훨씬 빨라지고 PCI Express 인터페이스가 개선되면서 대형 프로세싱을 GPU로 오프로드하는 것이 더 타당할 것이다.

Brook을 사용하는 응용 프로그램 및 게임GPU

참고 항목

외부 링크

참조

  1. ^ Tarditi, David; Puri, Sidd; Oglesby, Jose (2006). "Accelerator: using data parallelism to program GPUs for general-purpose uses". ACM SIGARCH Computer Architecture News. 34 (5).
  2. ^ Che, Shuai; Boyer, Michael; Meng, Jiayuan; Tarjan, D.; Sheaffer, Jeremy W.; Skadron, Kevin (2008). "A performance study of general-purpose applications on graphics processors using CUDA". J. Parallel and Distributed Computing. 68 (10): 1370–1380.