
Varios ejemplos simples para los kits de herramientas de red neuronales (Pytorch, TensorFlow, etc.) llamando a operadores CUDA personalizados.
Brindamos varias formas de compilar los núcleos Cuda y sus envoltorios CPP, incluidos JIT, SetupTools y CMake.
También proporcionamos varios códigos de Python para llamar a los núcleos CUDA, incluidas las estadísticas de tiempo del núcleo y la capacitación de modelos.
Para estadísticas de tiempo más precisas, es mejor usar NVProf o NSYS para ejecutar el código.
No se puede garantizar una ejecución exitosa en otros entornos.
├── include
│ └── add2.h # header file of add2 cuda kernel
├── kernel
│ └── add2_kernel.cu # add2 cuda kernel
├── pytorch
│ ├── add2_ops.cpp # torch wrapper of add2 cuda kernel
│ ├── time.py # time comparison of cuda kernel and torch
│ ├── train.py # training using custom cuda kernel
│ ├── setup.py
│ └── CMakeLists.txt
├── tensorflow
│ ├── add2_ops.cpp # tensorflow wrapper of add2 cuda kernel
│ ├── time.py # time comparison of cuda kernel and tensorflow
│ ├── train.py # training using custom cuda kernel
│ └── CMakeLists.txt
├── LICENSE
└── README.md Jit
Ejecute directamente el código Python.
Setuptools
python3 pytorch/setup.py installCMake
mkdir build
cd build
cmake ../pytorch
makeCompare el tiempo de ejecución del núcleo
python3 pytorch/time.py --compiler jit
python3 pytorch/time.py --compiler setup
python3 pytorch/time.py --compiler cmakeModelo de tren
python3 pytorch/train.py --compiler jit
python3 pytorch/train.py --compiler setup
python3 pytorch/train.py --compiler cmakeCMake
mkdir build
cd build
cmake ../tensorflow
makeCompare el tiempo de ejecución del núcleo
python3 tensorflow/time.py --compiler cmakeModelo de tren
python3 tensorflow/train.py --compiler cmakePytorch 自定义 Cuda 算子教程与运行时间分析 详解 Pytorch 编译并调用自定义 Cuda 算子的三种方式 三分钟教你如何 Pytorch 自定义反向传播
Q. ImporterRor: libc10.so: no se puede abrir el archivo de objeto compartido: no hay dicho archivo o directorio
R. Debe hacerimport torchantes deimport add2.
Q. tensorflow.python.framework.errors_impl.notfoundError: build/libadd2.so: símbolo indefinido: _ztin10tensorflow8opkernele
A. Compruebe si${TF_LFLAGS}enCmakeLists.txtes correcto.