2016-06-29 2 views
2

분명히 Tegra TX1에는 공유 메모리가 있습니다. 내 질문 : 그 메모리가 CPU와 GPU간에 공유되어 있습니까? 아니면 그 메모리가 GPU의 다른 블록들 사이에서 공유 되는가하는 것입니다.Jetson Tegra TX1 공유 메모리

답변

3

CPU와 GPU는 동일한 메모리 시스템을 사용합니다. 즉, 시스템 DRAM 메모리는 GPU 글로벌 메모리가 할당되는 물리적 메모리와 동일합니다. 제로 카피 (zero-copy) 및 통합 메모리 (Unified Memory)와 같은 다양한 기술은 시스템 메모리 데이터와 GPU 글로벌 데이터 사이의 논리적 구분을 대부분 제거 할 수 있습니다.

또한 Tegra TX1의 GPU는 모든 CUDA 지원 GPU와 마찬가지로 CUDA 공유 메모리를 가지고 있습니다. 이것은 특정 블록의 스레드간에 공유되는 메모리이지만 GPU의 다른 블록간에 공유되지는 않습니다. GPU의 서로 다른 블록간에 공유되는 기본 메모리 시스템은 Tegra TX1에서 이미 언급 한 것처럼 시스템 DRAM 메모리와 물리적으로 동일한 전역 메모리 시스템입니다.

+2

기본적으로 cuda 프로그램을 작성하는 동안 나는 cudamalloc, cudamemcpy 및 cudafree 문에 대해 걱정할 필요가 없습니다. –

+0

맞지 않습니다. 호스트와 장치 메모리 사이에는 여전히 논리적 인 차이점이 있습니다. 원한다면 제로 카피 (zero-copy) 또는 통합 메모리 (unified memory)와 같은 기법을 사용하여 이러한 구별을 피해 갈 수 있습니다. –

+0

그래서 저는 아주 기본적인 질문을했습니다. CPU 메모리의 배열에있는 숫자를 제곱하기 위해 cuda 프로그램을 작성한다고 가정합니다. CPU와 GPU 메모리가 다른 cuda 코드를 작성하는 방법은 기본적으로 호스트 메모리에서 장치 메모리로 전체 배열을 복사하고 필요한 계산을 수행합니다. 내 질문은 : Tegra TX1의 경우 우리가이 절차를 따르면 DRAM에 데이터 중복을 생성 할 것인가? –

0

IF cudamalloc()을 사용하여 메모리 블록을 할당했으면 YES입니다. CPU와 GPU간에 자동으로 글로벌 메모리이 공유됩니다.

"공유 MEM"이라고하는 로컬 메모리 인 CUDA 과 혼동하지 마십시오. {동일한 블록의 스레드간에 공유}.

기억 는 "공유 메모리는"CUDA의는 GPU의 SM 유닛의 내부 TURBO-속도프로그램 캐시입니다! :-)