If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation
时间: 2023-11-17 09:50:52 浏览: 196
Answer: This question does not involve any political issues.
To answer your question, setting max_split_size_mb to an appropriate value can help avoid memory fragmentation when the reserved memory is significantly greater than the allocated memory. However, the specific value you should set it to would depend on the specific circumstances and it may require experimenting with different values to find the optimal one.
相关问题
If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.
如果保留的内存大于分配的内存,可以尝试设置max_split_size_mb来避免碎片化。这可以通过以下步骤来完成:
1. 首先,查看PyTorch的内存管理文档以了解有关max_split_size_mb的更多信息。
2. 然后,根据文档中的说明,设置max_split_size_mb的值。这个值应该是一个适当的大小,以确保保留的内存不会超过分配的内存。
3. 重新运行你的代码,并观察是否仍然出现内存不足的问题。如果问题仍然存在,你可能需要进一步调整max_split_size_mb的值,直到找到一个适合你的情况的值。
请注意,这只是一种可能的解决方法,具体取决于你的代码和环境。你可能还需要考虑其他因素,如减少内存使用量或优化代码。
already allocated; 0 bytes free; 3.37 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
这个错误出现的原因是PyTorch在GPU内存分配时出现了内存碎片化,导致已经保留了一定量的内存,但实际上没有足够的连续空间来分配所需的内存。可以通过将`max_split_size_mb`设置为大于0的值来避免内存碎片化,例如:
```
import torch
torch.cuda.empty_cache() # 释放不必要的内存
torch.backends.cuda.reserved_memory() # 查看保留内存大小
torch.backends.cuda.max_memory_allocated() # 查看分配的最大内存大小
torch.backends.cuda.max_memory_reserved() # 查看保留的最大内存大小
torch.backends.cuda.cufft_plan_cache.clear() # 清空cuFFT计划缓存
# 设置max_split_size_mb值
torch.backends.cuda.split_kernel_size = 1024
torch.backends.cuda.max_split_size_mb = 16000
```
另外,可以参考PyTorch的内存管理文档和PYTORCH_CUDA_ALLOC_CONF进行更深入的调优。
阅读全文