Библиотека C++ с одним заголовком для упрощения использования компиляции среды выполнения CUDA (NVRTC).
Интеграция NVRTC в существующий и/или шаблонный код 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
Включена небольшая утилита stringify для преобразования текстовых файлов в строковые литералы C, что обеспечивает удобный способ интеграции JIT-скомпилированных исходных кодов в сборку.
Тесты можно запустить с помощью следующей команды:
$ make test
Это автоматически загрузит и создаст библиотеку GoogleTest, для которой в системе должен быть доступен CMake.
См. jitify_example.cpp для некоторых примеров использования библиотеки. Makefile также демонстрирует, как использовать предоставленную утилиту stringify.
Выступление GTC 2017, Бен Барсделл и Кейт Кларк
Документацию Doxygen можно создать, выполнив:
$ make doc
Результаты HTML и LaTeX помещаются в подкаталог doc/.
Пункт BSD-3
Бен Барсделл (NVIDIA, bbarsdell в nvidia dot com)
Кейт Кларк (NVIDIA, Макларк в nvidia dot com)