استخدام # تشمل لتحميل كود OpenCL
-
06-07-2019 - |
سؤال
ولقد رأيت هذا القيام به منذ فترة طويلة مع رمز HLSL / GLSL تظليل - باستخدام #include
على ملف التعليمات البرمجية المصدر أن يلصق التعليمات البرمجية في char*
بحيث لا يوجد ملف IO يحدث في وقت التشغيل
إذا كان لي أن تمثل أنها الزائفة رمز، انها تبدو قليلا مثل هذا:
#define CLSourceToString(filename) " #include "filename" "
const char* kernel = CLSourceToString("kernel.cl");
والآن بالطبع أن #define
لن تعمل لأنها سوف مجرد محاولة لاستخدام هذه علامات الاقتباس لبدء السلاسل.
المحلول
واطلع على استخدام محركات الفيزياء رصاصة OpenCL ل <لأ href = "http://code.google.com/p/bullet/source/browse/trunk/Demos/VectorAdd_OpenCL/MiniCL_VectorAdd.cpp؟r=2106" يختلط = "noreferrer"> كيف للقيام بذلك ل<لأ href = "http://code.google.com/p/bullet/source/browse/trunk/Demos/VectorAdd_OpenCL/VectorAddKernels.cl؟r= 2106 "يختلط =" noreferrer "> نواة .
في C ++ / C مصدر
#define MSTRINGIFY(A) #A
char* stringifiedSourceCL =
#include "VectorAddKernels.cl"
في مصدر OpenCL
MSTRINGIFY(
__kernel void VectorAdd(__global float8* c)
{
// snipped out OpenCL code...
return;
}
);
نصائح أخرى
ووفقا ل هذا ، انها لم يكن ممكنا، ولكن يمكنك استخدام xxd -i
إلى archieve نفس التأثير.