Pustaka C++ header tunggal untuk menyederhanakan penggunaan CUDA Runtime Compilation (NVRTC).
Mengintegrasikan NVRTC ke dalam kode CUDA yang sudah ada dan/atau dibuat template bisa jadi rumit. Jitify bertujuan untuk menyederhanakan proses ini dengan menyembunyikan kompleksitas di balik antarmuka tingkat tinggi yang sederhana.
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 menyediakan/menangani hal-hal berikut:
Hal-hal yang dapat Anda lakukan dengan Jitify dan NVRTC:
Jitify hanyalah satu file header:
# include < jitify.hpp >
Kompilasi dengan: -pthread
(tidak diperlukan jika JITIFY_THREAD_SAFE didefinisikan ke 0)
Tautan dengan: -lcuda -lcudart -lnvrtc
Utilitas kecil bernama stringify disertakan untuk mengonversi file teks menjadi literal string C, yang menyediakan cara mudah untuk mengintegrasikan sumber yang dikompilasi JIT ke dalam build.
Tes dapat dijalankan dengan perintah berikut:
$ make test
Tindakan ini secara otomatis akan mengunduh dan membuat pustaka GoogleTest, yang memerlukan CMake tersedia di sistem.
Lihat jitify_example.cpp untuk beberapa contoh cara menggunakan perpustakaan. Makefile juga mendemonstrasikan cara menggunakan utilitas stringify yang disediakan.
Pembicaraan GTC 2017 oleh Ben Barsdell dan Kate Clark
Dokumentasi Doxygen dapat dibuat dengan menjalankan:
$ make doc
Hasil HTML dan LaTeX ditempatkan ke dalam subdirektori doc/.
BSD-3-Klausul
Ben Barsdell (NVIDIA, bbarsdell dan nvidia dot com)
Kate Clark (NVIDIA, mclark di nvidia dot com)