CUDA ランタイム コンパイル (NVRTC) の使用を簡素化するためのシングルヘッダー C++ ライブラリ。
NVRTC を既存の CUDA コードやテンプレート化された CUDA コードに統合するのは難しい場合があります。 Jitify は、シンプルで高レベルのインターフェイスの背後にある複雑さを隠すことで、このプロセスを簡素化することを目的としています。
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 は次のものを提供/処理します。
Jitify と NVRTC でできること:
Jitify は単なる単一のヘッダー ファイルです。
# include < jitify.hpp >
コンパイル: -pthread
(JITIFY_THREAD_SAFE が 0 に定義されている場合は不要)
リンク先: -lcuda -lcudart -lnvrtc
テキスト ファイルを C 文字列リテラルに変換するための stringify と呼ばれる小さなユーティリティが含まれており、JIT コンパイルされたソースをビルドに統合する便利な方法を提供します。
テストは次のコマンドで実行できます。
$ make test
これにより、GoogleTest ライブラリが自動的にダウンロードされてビルドされます。これには、システム上で CMake が利用可能である必要があります。
ライブラリの使用方法の例については、jitify_example.cpp を参照してください。 Makefile は、提供されている stringify ユーティリティの使用方法も示しています。
ベン・バーズデル氏とケイト・クラーク氏による GTC 2017 トーク
Doxygen ドキュメントは、以下を実行することで生成できます。
$ make doc
HTML と LaTeX の結果は doc/ サブディレクトリに配置されます。
BSD-3-Claes
ベン・バーズデル (NVIDIA、nvidia ドットコムの bbarsdell)
ケイト・クラーク (NVIDIA、nvidia ドットコムの mclark)