cudaMallocManaged()
은입니다. 응용 프로그램의 속도가 빨라지는 것에 대해서는 약간 예외적 인 경우 나 몇몇 경우를 제외하고는 아래에 나와 있습니다.
통합 메모리의 오늘의 구현 및 cudaMallocManaged
은 하지 같은 일을 할 수있는 숙련 된 CUDA 프로그래머에 의해 작성된 빠른 지능적으로 기록 된 것보다 코드가 될 것입니다. 기계 (cuda 런타임)는 프로그래머보다 똑똑하지 않습니다. cudaMallocManaged
은 마술처럼 PCIE 버스를 만들지 않거나 일반 기계의 아키텍처 제한이 사라집니다.
빠른 프로토 타이핑은 코드 속도가 아니라 코드를 작성하는 데 걸린 시간을 나타냅니다.
cudaMallocManaged
는 다음과 같은 상황에서 능숙 CUDA 프로그래머에 관심이있을 수 있습니다
- 당신은 신속하게 함께 프로토 타입을 얻기에 관심이 -i.e. 당신은 지난번의 성과에 대해 상관하지 않습니다.
- 자주 사용하지 않는 복잡한 데이터 구조 (예 : 이중 연결 목록)를 다루고 있습니다. 그렇지 않으면 일반 CUDA 코드를 사용하는 딥 복사본은 자질구레 한 일이기 때문에 CUDA로 이식하는 것이 어려울 수 있습니다. 응용 프로그램이 작동하려면 필요하지만 성능 경로에는 포함되지 않습니다.
- 일반적으로 제로 사본을 사용합니다.
cudaMallocManaged
을 사용하는 것이 순진하거나 비효율적 인 제로 카피 방식보다 더 빠를 수있는 상황이있을 수 있습니다.
cudaMallocManaged
은 당신이 가능성이 간단 학습 곡선을 따라 CUDA 젖은 발을 얻을 수 있다는 점에서 비 능숙 CUDA 프로그래머가 관심을 가질 수 있습니다.
댓글에 Maxwell이 언급되어 있지만 CUDA UM은 일부 설정에서 일부 GPU의 경우 파스칼 세대 GPU에서 중요한 새로운 기능을 제공합니다. 특히 이러한 설정의 통합 메모리는 더 이상 사용 가능한 GPU 장치 메모리로 제한되지 않으며 메모리 처리 세분성은 커널이 실행 중일 때라도 페이지 수준으로 떨어집니다. 자세한 내용은 here을 참조하십시오.
호스트 메모리가 * 고정 된 경우 * 예, 관리되는 메모리보다 빠를 것으로 예상됩니다. – Michael
하지만 _pinned_ 메모리를 사용하고 있지 않습니다. – Genutek
호스트 메모리를 어떻게 할당합니까? – Michael