Uma biblioteca C++ de cabeçalho único para simplificar o uso de CUDA Runtime Compilation (NVRTC).
Integrar o NVRTC ao código CUDA existente e/ou modelado pode ser complicado. O Jitify visa simplificar esse processo, escondendo as complexidades por trás de uma interface simples e de alto nível.
const char * program_source = " my_program n "
" template<int N, typename T> n "
" __global__ n "
" void my_kernel(T* data) { n "
" T data0 = data[0]; n "
" for( int i=0; i<N-1; ++i ) { n "
" 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 fornece/cuida do seguinte:
Coisas que você pode fazer com Jitify e NVRTC:
Jitify é apenas um único arquivo de cabeçalho:
# include < jitify.hpp >
Compilar com: -pthread
(não necessário se JITIFY_THREAD_SAFE estiver definido como 0)
Link com: -lcuda -lcudart -lnvrtc
Um pequeno utilitário chamado stringify está incluído para converter arquivos de texto em literais de string C, o que fornece uma maneira conveniente de integrar fontes compiladas por JIT em uma compilação.
Os testes podem ser executados com o seguinte comando:
$ make test
Isso fará o download e criará automaticamente a biblioteca GoogleTest, que requer que o CMake esteja disponível no sistema.
Consulte jitify_example.cpp para obter alguns exemplos de como usar a biblioteca. O Makefile também demonstra como usar o utilitário stringify fornecido.
Palestra GTC 2017 por Ben Barsdell e Kate Clark
A documentação do Doxygen pode ser gerada executando:
$ make doc
Os resultados HTML e LaTeX são colocados no subdiretório doc/.
Cláusula BSD-3
Ben Barsdell (NVIDIA, bbarsdell e nvidia ponto com)
Kate Clark (NVIDIA, mclark em nvidia ponto com)