2011-03-06 4 views
26

CUDA에서 우리는 고정 된 메모리를 사용하여 호스트에서 malloc 호스트를 통해 할당 된 기본 메모리보다 더 효율적으로 호스트에서 GPU로 데이터를 복사 할 수 있습니다. 그러나 고정 된 메모리에는 두 가지 유형이 있습니다 (기본 고정 메모리제로 사본 고정 메모리).기본 고정 메모리 대 제로 - 복사 메모리

일반 전송으로 두 배 빠른 속도로 메모리 복사를 호스트에서 GPU에 데이터를 고정하므로 이점 (우리는 페이지 잠금 충분히 호스트 메모리가 제공)

가 고정의 다른 버전에서는 확실히 거기에 기본 zero-copy 메모리과 같이, 호스트에서 GPU의 DRAM으로 데이터를 복사 할 필요가 없습니다. 커널은 호스트 메모리에서 직접 데이터를 읽습니다.

제 질문은 : 이러한 고정 메모리 유형이 더 나은 프로그래밍 습관입니다.

답변

29

내가 그것을 응용 프로그램에 따라 다릅니다 생각 (그렇지 않으면, 왜 그들은 두 가지를 제공 할 것이다?)

매핑, 고정 된 메모리 (제로 카피)가 유용 할 때 다음 중 하나

  • GPU는 자체적으로 메모리가없고 어쨌든 RAM을 사용합니다.

  • 데이터는 정확히 한 번로드되지만 수행 할 계산량이 많으며이를 통해 메모리 전송 대기 시간을 숨기려고합니다.

    호스트 측이 커널은 여전히 ​​실행되는 동안,/변경 데이터를 추가하거나 결과를 읽고 싶어
  • (예를 들어 통신)

  • 데이터는 GPU 메모리에 맞지 않는

여러 스트림을 사용하여 데이터를 복사하고 커널을 병렬로 실행할 수도 있습니다.

고정 된, 그러나 매핑 된 메모리는 더 :

  • 당신이로드하거나 데이터를 여러 번 저장합니다. 예를 들면 다음과 같은 커널을 여러 개 가지고 계단에서 작업을 수행 할 때마다 매번 호스트에서 데이터를로드 할 필요가 없습니다.

  • 가 수행 할 수있는 그 정도 계산이 아닌 로딩 대기 시간이 잘 숨겨하지 않을

+0

예. 나는 'CUDA by example'이라는 책에서 거의 같은 설명을 발견했다. 그들은 맵핑 된 메모리가 가장 좋은 이유는 a) CPU와 GPU가 동일한 메모리를 공유하는 ION 플랫폼과 같은 통합 그래픽을 가지고있을 때 커널이 데이터를 정확히 한 번 읽고 쓰는 경우입니다. – jwdmsd

11
가 매핑되는 것을 제외하고

매핑 고정 된 메모리는 모든면에서 고정 된 메모리의 다른 유형과 동일 CUDA 주소 공간에 저장되므로 CUDA 커널에서 읽고 쓸 수 있으며 복사 엔진에서 DMA 전송에 사용됩니다.

고정 된 메모리를 매핑하지 않는 이점은 두 가지입니다. 즉, 3-4G의 RAM을 수용 할 수있는 GPU가있는 32 비트 플랫폼 세계에서 소중한 제품이 될 수있는 주소 공간을 절약 할 수있었습니다. 또한 매핑되지 않은 메모리는 악의적 인 커널에 의해 실수로 손상 될 수 없습니다. 그러나 그 우려는 CUDA 4의 통일 된 주소 공간 기능만큼이나 밀교합니다.0이면 모든 고정 된 할당이 기본적으로 매핑됩니다. 샌더스/Kandrot 책에 의해 제기 된 점 외에도

, 다른 일을 염두에두고 :

  • 커널에서 메모리를 호스트하기 위해 작성 (예 : CPU에 결과를 게시하려면) 그에서 좋은 GPU는이 경우 커버해야 할 대기 시간이없고

  • 메모리 작업이 병합되어야합니다. 그렇지 않으면 SM 2.x 이상 GPU에서도 큰 대역폭을 차지합니다.

+0

마지막 두 점을 확장 해 주시겠습니까? 첫 번째 사항에 관해서, "GPU는이 경우 커버해야 할 대기 시간이 없다"고 말할 때 당신은 무엇을 의미합니까? 두 번째 요점과 관련하여, 왜 zero-copy의 프레임 워크에서 작업이 합쳐져야 하는가? 그들은 어쨌든 전역 메모리를 사용합니까? – JackOLantern

+1

GPU가 매핑 된 고정 메모리에서 읽는 경우 메모리 요청이 도착할 때까지 수행 할 작업을 찾아야합니다. 매핑 된 고정 된 메모리에 기록하면 버스에 쓰기를 게시하고 계속 이동합니다. 왜 그들이 합쳐져야하는지 모르겠습니다. 병합은 워프 기반 구조이며 하드웨어 구현과 관련이 있어야합니다. – ArchaeaSoftware

+0

통합 작업으로 인해 메모리 작업이 줄어들 기 때문에 느린 PCI-E 버스를 통해 액세스하는 제로 카피 메모리 (GPU는 고 대역폭 전역 메모리와 비교)에 더 중요 해졌습니다. – Bulat