Une bibliothèque C++ à en-tête unique pour simplifier l'utilisation de CUDA Runtime Compilation (NVRTC).
L'intégration de NVRTC dans du code CUDA existant et/ou modélisé peut être délicate. Jitify vise à simplifier ce processus en cachant les complexités derrière une interface simple et de haut niveau.
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 fournit/prend en charge les éléments suivants :
Choses que vous pouvez faire avec Jitify et NVRTC :
Jitify n'est qu'un seul fichier d'en-tête :
# include < jitify.hpp >
Compiler avec : -pthread
(pas nécessaire si JITIFY_THREAD_SAFE est défini à 0)
Lien avec : -lcuda -lcudart -lnvrtc
Un petit utilitaire appelé stringify est inclus pour convertir des fichiers texte en chaînes littérales C, ce qui constitue un moyen pratique d'intégrer des sources compilées JIT dans une version.
Les tests peuvent être exécutés avec la commande suivante :
$ make test
Cela téléchargera et créera automatiquement la bibliothèque GoogleTest, ce qui nécessite que CMake soit disponible sur le système.
Voir jitify_example.cpp pour quelques exemples d'utilisation de la bibliothèque. Le Makefile montre également comment utiliser l'utilitaire stringify fourni.
Conférence GTC 2017 par Ben Barsdell et Kate Clark
La documentation Doxygen peut être générée en exécutant :
$ make doc
Les résultats HTML et LaTeX sont placés dans le sous-répertoire doc/.
Clause BSD-3
Ben Barsdell (NVIDIA, bbarsdell sur nvidia dot com)
Kate Clark (NVIDIA, mclark sur nvidia point com)