可以参见文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/flags/memory_cn.html#flags-fraction-of-gpu-memory-to-use
FLAGS_fraction_of_gpu_memory_to_use表示分配的显存块占GPU总可用显存大小的比例。将来的显存使用将从该显存块分配。 如果显存块没有足够的gpu显存,将从gpu请求分配与显存块同样大小的新的显存块,直到gpu没有足够的显存为止。
你是要强制限制显存无论如何只占用48%么?
FLAGS_fraction_of_gpu_memory_to_use,
可以参见文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/flags/memory_cn.html#flags-fraction-of-gpu-memory-to-use
FLAGS_fraction_of_gpu_memory_to_use表示分配的显存块占GPU总可用显存大小的比例。将来的显存使用将从该显存块分配。 如果显存块没有足够的gpu显存,将从gpu请求分配与显存块同样大小的新的显存块,直到gpu没有足够的显存为止。
你是要强制限制显存无论如何只占用48%么?
这个含义是理解的,想限制显存占用,因为GPU有多人使用,想在一卡上跑多个任务。『你是要强制限制显存无论如何只占用48%么』可以这么理解
试试加上export FLAGS_eager_delete_tensor_gb=0.0看看呢,当显存一旦出现垃圾则马上释放。
或者结合export FLAGS_fast_eager_deletion_mode=True,则是gpu显存将在CUDA内核尚未结束的情况下被释放。垃圾回收策略加快。
利于节省显存使用量。
如图设置了比例为0.48,分配方式为auto_growth,但是实际跑任务的时候,GPU还是占了绝大多数显存。有没有一种方法控制显存占用呢?