2009-08-27 2 views

답변

5

이것은 일반적인 접근 방식으로 CUDA, OpenCL에서 사용되며 ATI 스트림을 사용합니다.

그리드의 배경은 처리되는 데이터와 데이터 처리를 수행하는 스레드간에 간단하지만 유연한 매핑을 제공하는 것입니다. GPGPU 실행 모델의 단순 버전에서 하나의 GPU 스레드는 1D, 2D 또는 3D 데이터 그리드의 각 출력 요소에 대해 "할당"됩니다. 이 출력 요소를 처리하기 위해 스레드는 입력 데이터 격자 (들)의 해당 위치 또는 인접한 위치에서 하나 이상의 요소를 읽습니다. 그리드에서 쓰레드를 구성함으로써 쓰레드가 어느 입력 데이터 엘리먼트를 읽을 지 그리고 출력 데이터 엘리먼트를 어디에 저장할지를 쉽게 결정할 수 있습니다.

이는 CPU 코어 당 하나의 스레드가 할당되고 각 스레드가 많은 입력 및 출력 요소 (예 : 쿼드 코어 시스템의 1/4)를 처리하는 일반적인 멀티 코어 CPU 스레딩 모델과 대조됩니다.

+0

whatnick이 말했듯이, 스레드는 스레드를 쉽게 만들뿐 아니라 하드웨어가이 조직에서 여러 데이터 (SIMD)에 대해 단일 명령어를 실행하도록 요구합니다. – RD1

+0

하드웨어에는 그런 것이 필요하지 않습니다. 그리드 내의 특정 하위 그룹의 스레드가 동시에 동일한 작업을 수행하는 경우 하드웨어가 더 효율적입니다. 여기에서 설명한 것은 더 복잡하지만, 당신과 whatnick 상태와는 다릅니다. – Eric

1

간단히 대답하면 GPU는 픽셀의 2D 그리드 인 이미지와 텍스처를 처리하도록 설계되었습니다. DirectX 또는 OpenGL에서 삼각형을 렌더링하면 하드웨어가 픽셀 격자로 래스터 화합니다.

1

둥근 구멍에 정사각형 못을 박는 고전적인 비유를 불러냅니다. 음,이 경우 GPU는 매우 정사각형이며 GP (범용)가 제안하는만큼 둥글하지 않습니다.

위의 설명은 2D 텍스처 등의 아이디어를 제시합니다. GPU의 아키텍처는 모든 처리가 파이프 라인이 각 스트림에서 동일하므로 스트림에서 처리되므로 처리중인 데이터를 그.

0

이것이 좋은 API 인 이유 중 하나는 일반적으로 여러 개의 중첩 루프가있는 알고리즘으로 작업하고 있다는 것입니다. 하나, 둘 또는 세 개의 루프가있는 경우 1, 2 또는 3 차원 격자가 문제에 적절하게 매핑되어 각 인덱스의 값에 대한 스레드를 제공합니다.

커널에 필요한 값 (색인 값)은 API에서 자연스럽게 표현됩니다.

관련 문제