مكتبة 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 Talk بقلم بن بارسديل وكيت كلارك
يمكن إنشاء وثائق Doxygen عن طريق تشغيل:
$ make doc
يتم وضع نتائج HTML وLaTeX في الدليل الفرعي doc/.
بسد-3-بند
بن بارسديل (NVIDIA، bbarsdell على nvidia dot com)
كيت كلارك (NVIDIA، mclark في nvidia dot com)