NVRTC(CUDA 런타임 컴파일) 사용을 단순화하기 위한 단일 헤더 C++ 라이브러리입니다.
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
텍스트 파일을 C 문자열 리터럴로 변환하기 위해 stringify라는 작은 유틸리티가 포함되어 있으며, 이는 JIT 컴파일 소스를 빌드에 통합하는 편리한 방법을 제공합니다.
다음 명령을 사용하여 테스트를 실행할 수 있습니다.
$ make test
그러면 시스템에서 CMake를 사용할 수 있어야 하는 GoogleTest 라이브러리가 자동으로 다운로드되고 빌드됩니다.
라이브러리 사용 방법에 대한 몇 가지 예는 jitify_example.cpp를 참조하세요. Makefile은 또한 제공된 stringify 유틸리티를 사용하는 방법을 보여줍니다.
Ben Barsdell과 Kate Clark의 GTC 2017 강연
Doxygen 문서는 다음을 실행하여 생성할 수 있습니다.
$ make doc
HTML 및 LaTeX 결과는 doc/ 하위 디렉터리에 저장됩니다.
BSD-3-절
Ben Barsdell(NVIDIA, nvidia dot com의 bbarsdell)
Kate Clark(NVIDIA, nvidia dot com의 mclark)