ไลบรารี C++ แบบส่วนหัวเดียวเพื่อทำให้การใช้ CUDA Runtime Compilation (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 พูดคุยโดย Ben Barsdell และ Kate Clark
สามารถสร้างเอกสาร Doxygen ได้โดยการรัน:
$ make doc
ผลลัพธ์ HTML และ LaTeX จะถูกวางไว้ในไดเรกทอรีย่อย doc/
BSD-3-ข้อ
เบ็น บาร์สเดลล์ (NVIDIA, bbarsdell จาก nvidia dot com)
Kate Clark (NVIDIA, mclark ที่ nvidia dot com)