zero-copy memory的使用场景?cudaHostAlloc?zero-copy memory的使用场景?cudaHostAlloc?
Zero-copy memory(固定/pinned host 内存的一种用法)指 host 分配一块可被 GPU 直接访问的物理内存,GPU kernel 通过 PCIe 按需读取,无需显式 cudaMemcpy。适合「GPU 随机、稀疏访问 host 数据」或数据量不大、拷贝开销不划算的场景。
cudaHostAlloc(&ptr, size, flags) 分配 pinned host memory。flags 常用:cudaHostAllocDefault(默认)、cudaHostAllocMapped(同时映射到 device 地址空间,即 zero-copy)、cudaHostAllocPortable(多 GPU 可见)等。Mapped 时用 cudaHostGetDevicePointer(&d_ptr, ptr, 0) 取 device 侧指针,kernel 用 d_ptr 访问。
适合:小量、随机访问、或与计算重叠的流式访问。注意:通过 PCIe 访问延迟高、带宽有限,大块顺序访问不如先 Memcpy 再算;且 mapped 会占 host 物理页、可能影响 swap。
| 返回模块 | 返回总览 |