2009-10-18 2 views

답변

5

여기에서 CUDA 용어를 사용하려고합니다.

scattered write은 각 cuda 스레드에서 임의의 주소로 쓰는 것을 의미합니다 (예 : 워프의 스레드는 연속적인 메모리에 쓰지 않습니다). 2d-coherent 인 프레임 버퍼 쓰기와 대조되며 하드웨어에 의해 통합 될 수 있습니다. 오래 전에 GPU에서만 쓸 수 있었던 유일한 글이었습니다.

분산 된 위치에서 데이터를 읽고 수집 된 데이터에 대해 SIMD 방식으로 실행되는 스레드의 워핑 전에 모든 데이터를 수집하는 것은 gather read의 반대 작업입니다. 그러나 임의의 텍스처 페치를 통해 GPU에서 오랫동안 수집 읽기가 가능했습니다.

5

분산 된 쓰기는 모든 메모리 주소에 쓸 수 있기 때문에 좋습니다. 이전 셰이더 임 페션은 주어진 셰이더 프로그램이 쓸 수있는 메모리 주소가 제한적이었습니다.

"그래픽 API의 프래그먼트 프로그램은 미리 지정된 위치에 32 개의 부동 소수점 (RGBA * 8 렌더 타겟)을 출력하는 데 한계가 있지만 CUDA는 흩어져있는 쓰기를 지원합니다. 즉, 임의의 주소에 무제한으로 저장할 수 있습니다. 불가능했던 알고리즘은 그래픽을 사용하면 CUDA 자주 묻는 질문에서

"CUDA를 사용하여 효율적으로 수행하기 위해 API를 :

http://forums.nvidia.com/index.php?s=fd8a3833d78a50e273c5c731476eed0d&showtopic=84440&pid=478583&start=0&#entry478583

는 기본적으로 어디 의해 제한으로 그들이 아니기 때문에 쓰기 쉽게 CUDA 프로그램을 만드는 사람들 결과를 쓸 수 있습니다. GPU에서 좋은 성능을 얻는 열쇠 중 하나는 메모리 지역을 이용하는 것입니다. 전역 메모리에 많은 양을 쓰면 분산 된 쓰기를 과도하게 사용하면 성능에 큰 영향을 줄 수 있습니다.

+0

여전히 "장치 메모리"에서 발생하고 있습니다. (DMA 엔진이 상이한 메인 메모리 위치에서 콘텐츠를 예를 들어 단일 I/O 스트라이프로 구동 할 수있게하는 I/O 분산/수집 동작과 반대) – PypeBros

+0

정답. 이것은 GPU의 메모리를 가리키고 범용 메모리는 아닙니다. –