Una biblioteca C++ de encabezado único para simplificar el uso de CUDA Runtime Compilation (NVRTC).
Integrar NVRTC en código CUDA existente o con plantilla puede resultar complicado. Jitify pretende simplificar este proceso ocultando las complejidades detrás de una interfaz simple y de alto nivel.
const char * program_source = " my_program n "
" template n "
" __global__ n "
" void my_kernel(T* data) { n "
" T data0 = data[0]; n "
" for( int i=0; in "
" data[0] *= data0; n "
" } n "
" } n " ;
static jitify::JitCache kernel_cache;
jitify::Program program = kernel_cache.program(program_source);
// ...set up data etc.
dim3 grid ( 1 );
dim3 block ( 1 );
using jitify::reflection::type_of;
program.kernel( " my_kernel " )
.instantiate( 3 , type_of(*data))
.configure(grid, block)
.launch(data);
Jitify proporciona/se encarga de lo siguiente:
Cosas que puedes hacer con Jitify y NVRTC:
Jitify es solo un archivo de encabezado único:
# include < jitify.hpp >
Compile con: -pthread
(no es necesario si JITIFY_THREAD_SAFE está definido en 0)
Enlace con: -lcuda -lcudart -lnvrtc
Se incluye una pequeña utilidad llamada stringify para convertir archivos de texto en literales de cadena C, lo que proporciona una manera conveniente de integrar fuentes compiladas JIT en una compilación.
Las pruebas se pueden ejecutar con el siguiente comando:
$ make test
Esto descargará y creará automáticamente la biblioteca GoogleTest, que requiere que CMake esté disponible en el sistema.
Consulte jitify_example.cpp para ver algunos ejemplos de cómo utilizar la biblioteca. Makefile también demuestra cómo utilizar la utilidad stringify proporcionada.
Charla de GTC 2017 a cargo de Ben Barsdell y Kate Clark
La documentación de Doxygen se puede generar ejecutando:
$ make doc
Los resultados de HTML y LaTeX se colocan en el subdirectorio doc/.
Cláusula BSD-3
Ben Barsdell (NVIDIA, bbarsdell en nvidia punto com)
Kate Clark (NVIDIA, mclark en nvidia punto com)