为什么pytorch要对c++/cuda进行拓展
在初始阶段,使用pytorch提供的接口组合搭配自己的神经网络就可以了,但是,随着深入进行,比如说要实现一个自己新的算法,或者是自己定义的新的层,光使用pytorch模块是不够的。虽然,pytorch在特定的模块上进行了很好的优化,,但加入将这些组合起来,一般pytorch只会按照设计好的操作去使用gpu通道,这样会使得通道空闲或者超负载,然而python解释器也不能对此进行优化,导致程序执行速度变慢,所以就需要对其进行拓展,才能充分利用gpu,加快算法速度。
拓展的具体实现过程
在pytorch0.4中,结合c语言和cuda进行拓展,使用torch.utils.ffi模块,主要内容可以参考Pytorch拓展进阶(一):Pytorch结合C以及Cuda语言。但在pytoch1.0之后,这个模块就用不了了,用torch.utils.cpp_extension来进行代替,该模块是对c++进行拓展,而且它具有最小(但通常足够的)的参数来构建c++扩展的优点,具体的使用过程可以参考Pytorch拓展进阶(二):Pytorch结合C++以及Cuda拓展。如果想要对多个c++文件和cuda文件进行拓展的话,具体实现可以参考maskrcnn-benchmark。
【注】在使用的过程中遇到以下错误:
ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
这