PyTorch學習總結(二)

ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.

這就是說明pytorch的版本不兼容,這時候就需要修改setup.py文件。但是,cpp_extension是對c++文件進行拓展,需要將c語言文件轉化爲c++文件。而且使用ffi的時候會生成_ext文件,這個文件比較麻煩,在該文件夾下需要__init.py__文件。

在pytorch0.4中,結合c語言和cuda進行拓展,使用torch.utils.ffi模塊,但在pytoch1.0之後,這個模塊就用不了了,用torch.utils.cpp_extension來進行代替

setuptools

不論是ffi模塊或是cpp_extension模塊,它們的構建都使用了setuptools,它是python distutils增強版的集合,可以幫助我們更簡單的創建和分發Python包,尤其是擁有依賴關係的包。他還提供了自動包查詢程序,用來自動獲取包之間的依賴關係,並完成這些包的安裝,大大降低了安裝各種包的難度,使之更加方便。所以使用pytorch的這些模塊的主要目的是用來找到c文件或者是c++文件,定義編譯方式,具體的創建和安裝操作都是setuptools來完成。比如在一個文件夾下有如下文件:

__init__.py文件是必須要有的,setup.py是將correlation_cuda進行打包和安裝的文件,裏面的具體內容爲:

 

可以看到,setup裏面包含了要編譯的文件(不用包含頭文件),運行python setup.py install之後會生成3個文件夾,dist文件夾下的壓縮包就是目標文件,build文件夾下會有.so文件的生成,另一個文件夾是以 .egg-info爲結尾的文件。在這裏我們主要是用到build文件夾下生成的共享文件,通過correlation.py來進行調用,自定義層,之後外部如果要用到這個correlation,只需要調用*.py文件就可以啦,這就相當於定義了一個新的模塊。

PyTorch學習總結(二)——基於torch.utils.ffi的自定義C擴展:https://blog.csdn.net/manong_wxd/article/details/78720182

pytorch學習筆記(十八):C 語言擴展 pytorch:https://blog.csdn.net/u012436149/article/details/78851174

Pytorch拓展進階(一):Pytorch結合C以及Cuda語言:https://oldpan.me/archives/pytorch-combine-c-and-cuda

Pytorch拓展進階(二):Pytorch結合C++以及Cuda拓展:https://oldpan.me/archives/pytorch-cuda-c-plus-plus

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章