
Несколько простых примеров для наборов инструментов нейронной сети (Pytorch, Tensorflow и т. Д.) Вызов пользовательских операторов CUDA.
Мы предоставляем несколько способов компилировать ядра CUDA и их обертки CPP, включая JIT, Setuptools и Cmake.
Мы также предоставляем несколько кодов Python, чтобы вызвать ядра CUDA, в том числе статистику времени ядра и модельное обучение.
Для более точной статистики времени вам лучше всего использовать NVPROF или NSYS для запуска кода.
Не может обеспечить успешный запуск в других средах.
├── 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 Джит
Непосредственно запустите код Python.
Setuptools
python3 pytorch/setup.py installCmake
mkdir build
cd build
cmake ../pytorch
makeСравните время работы ядра
python3 pytorch/time.py --compiler jit
python3 pytorch/time.py --compiler setup
python3 pytorch/time.py --compiler cmakeМодель поезда
python3 pytorch/train.py --compiler jit
python3 pytorch/train.py --compiler setup
python3 pytorch/train.py --compiler cmakeCmake
mkdir build
cd build
cmake ../tensorflow
makeСравните время работы ядра
python3 tensorflow/time.py --compiler cmakeМодель поезда
python3 tensorflow/train.py --compiler cmakePytorch 自定义 cuda 算子教程与运行时间分析 详解 pytorch 编译并调用自定义 cuda 算子的三种方式 三分钟教你如何 pytorch 自定义反向传播
Q. Importerror: libc10.so: невозможно открыть файл общего объекта: нет такого файла или каталога
A. Вы должны сделатьimport torchпередimport add2.
Q. tensorflow.python.framework.errors_impl.notfounderror: build/libadd2.so: неопределенный символ: _ztin10tensorflow8opkernele
A. Проверьте${TF_LFLAGS}правильноCmakeLists.txtправильно.