pytorch显存机制
根据个人理解,pytorch显存分3个概念:reserved memory、allocated memory、context memory。参考:https://discuss.pytorch.org/t/difference-between-allocated-and-reserved-memory/87278/4
reserved memory是pytorch向GPU申请的,用来给pytorch用的显存,allocated memory是实际分配给变量等使用的,所以reserved memory = allocated memory + cached memory。allocated memory中,一部分是pytorch自己用的,叫做context memory,剩下的是给运算时的变量存储用的。cached memory是一个tensor被释放后,这块内存并不会还给GPU,还被pytorch占用着,等待继续分配给其他变量使用。
正常情况下,reserved memory和allocated memory不会相差太大,不然就会有太多显存被浪费了。