我在RTX 3060和RTX 3080 Ti中运行以下代码。通过使用nvidia-smi
,我发现RTX 3060和RTX 3080 Ti的实际GPU使用量分别为105 Ti和247 Ti。但是我在GPU中只有一个字节的数据。为什么会这样呢?以及为什么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);
}
}
发布于 2022-08-01 11:20:55
在GPU上运行CUDA程序需要类似于操作系统的东西,与您可能在主机系统CPU上编写的典型程序运行方式不同的是,也需要操作系统。
在CUDA中,这个GPU操作系统经常被称为"CUDA运行时“或"CUDA驱动程序”。CUDA运行时为GPU执行各种管理和内部管理,它需要( CPU内存和) GPU内存。有些需求与代码的实际操作无关,有些则可能因代码的实际操作而有所不同。
这种“开销”的内存需求可能会根据以下几个因素而有所不同:
您正在使用的GPU type/architecture
< code >H 115以及可能还有其他因素H 216F 217/runtime
(related)>
对于这种开销,每个GPU使用数百兆字节是很常见的。这种开销是除了您的程序可能分配的。从一种GPU类型到另一种GPU类型的变化也很常见。由于影响因素的多样性,无法准确地预测所使用的开销的数量。
https://stackoverflow.com/questions/73197215
复制相似问题