在Windows系统下运行pytorch程序报了如下错误:
'页面文件太小,无法完成操作。 Error loading "D:\anaconda\envs\py38cu112\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll" or one of its dependencies.'
根据github论坛上一位大神的解释是因为Windows系统下关于dataloader的内存分配与linux系统下不同。具体可参考如下连接
由于NVDIA硬件原因造成的Windows系统下运行pytorch的dll报错
这位大神描述了为什么报错的原因,我似懂非懂。但是按照他指定的方式运行他写的python程序之后,给torch的dll修改了内部的flags,改变dll在调用时对内存需求的大小。
具体而言是首先安装pefile,再运行fixNvpe.py
########(1).命令行下安装########### pip install pefile
fixNvPe.py可以在这位大神的github主页上download:
fixNvPe.py
运行结果如下所示:
--- Checking D:anacondaenvspy38cu112Libsite-packagestorchlibtorch_cuda.dll... Found NV FatBin! Size: 680.65MB ASLR: True Writable: True - Modifying DLL - Backing up [D:anacondaenvspy38cu112Libsite-packagestorchlibtorch_cuda.dll] -> [D:anacondaenvspy38cu112Libsite-packagestorchlibtorch_cuda.dll_bak] - Writing modified DLL to [D:anacondaenvspy38cu112Libsite-packagestorchlibtorch_cuda.dll_mod] - Moving modified DLL to [D:anacondaenvspy38cu112Libsite-packagestorchlibtorch_cuda.dll] --- Checking D:anacondaenvspy38cu112Libsite-packagestorchlibtorch_global_deps.dll... --- Checking D:anacondaenvspy38cu112Libsite-packagestorchlibtorch_python.dll... --- Checking D:anacondaenvspy38cu112Libsite-packagestorchlibuv.dll... Done!
记得一定要先关闭调用报错dll的pytorch程序,否则这个fixNvPe.py的程序在运行时有可能会因为pytorch正在占用该dll而修改失败!!!!!这时候fixNvPe.py最后运行结果会显示:
***WARNING**** These files needed modification but failed:
所以一定要先保证这些报错的dll没有在任何程序中被占用。
好了,就酱紫了。累了,还有下一个bug等着我去search。



