سؤال

أقوم بتطوير كود OpenCL على Snow Leopard وأدرك أن تجميع OpenCL في الوقت المناسب يتم بواسطة Clang/LLVM.هل يتم استخدام المعالج C على الإطلاق؟هل هناك طريقة لتعيين تعريفات المعالجة المسبقة مع المترجم؟ما هي التعريفات الموجودة؟

أود أن يكون الكود على علم بما إذا كان قد تم تجميعه لوحدة المعالجة المركزية أو وحدة معالجة الرسومات حتى أتمكن على سبيل المثال من استخدام عبارات printf لتصحيح الأخطاء.

هل كانت مفيدة؟

المحلول

ال clBuildProgram تأخذ واجهة برمجة التطبيقات وسيطات المترجم (ملف const char * options معامل).

-D MYMACRO ومن المفهوم، لذلك هو -D MYMACRO=value.

بالنسبة لوحدات الماكرو المحددة مسبقًا، راجع مواصفات OpenCL للحصول على قائمة كاملة (القسم 6.9).قائمة غير شاملة:

  • __FILE__
  • __LINE__
  • __OPENCL_VERSION__

نصائح أخرى

ويمكنك أيضا استخدام OpenCL "المعالج" لتحديد التعاريف (كما هو الحال في C):

#define dot3(x1, y1, z1, x2, y2, z2) ((x1)*(x2) + (y1)*(y2) + (z1)*(z2))

و(لاحظ الأقواس، فهي مهم لأنك يمكن إدراج أي التعبير في المتغيرات والتعبير يحصل تقييمها بشكل صحيح)

وهذا يساعد على تحسين سرعة التطبيق الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top