我在 RTX 3060 和 RTX 3080 Ti 中运行以下代码。通过使用nvidia-smi,我发现RTX 3060和RTX 3080 Ti的真实GPU使用量分别为105MB和247MB。但我的 GPU 中只有 1 字节数据。为什么是这样?为什么基本 GPU 使用率不同?
// compiled with nvcc -O3 show_basic_gpu_usage.cu -o show_basic_gpu_usage
#include <unistd.h>
#include <iostream>
int main(){
int run_count = 100;
int * ddd;
cudaMalloc(&ddd, 1); // 1 byte
for (int i = 0; i < run_count; i++){
sleep(1);
printf("%d\n" , i);
}
}
Run Code Online (Sandbox Code Playgroud)
在 GPU 上运行 CUDA 程序需要类似操作系统的东西,这与在主机系统 CPU 上编写的典型程序的运行方式不同,CPU 也需要操作系统。
在 CUDA 中,该 GPU 操作系统通常称为“CUDA 运行时”或“CUDA 驱动程序”。CUDA 运行时为 GPU 执行各种管理和内务处理,并且需要(CPU 内存和)GPU 内存来完成这些工作。其中一些要求与您的代码的实际用途无关,其中一些可能会根据您的代码的用途而有所不同。
此“开销”的内存要求可能因多种因素而异:
对于这种开销,每个 GPU 使用数百兆字节是很常见的。此开销不包括您的程序可能分配的开销。一种 GPU 类型与另一种 GPU 类型之间存在差异也很常见。由于影响因素多种多样,没有任何方法可以准确预测所使用的开销量。
| 归档时间: |
|
| 查看次数: |
469 次 |
| 最近记录: |