سؤال

إذا كان لدي شيء مثل:

err = clEnqueueReadBuffer(cmdQueue, output, CL_TRUE, 0, sizeof(float) * data_sz, &results, 0, NULL, NULL);

أود أن أفعل:

if (err != CL_SUCCESS){
    perror("Read Failed!");
}

لكن ثوابت الخطأ مثل "CL_HOST_OUT_OF_MEMORY" وما شابه ذلك (من المفهوم) غير معروف لـ Perror ().

يمكن أن أتجول في ملفات .H المرتبطة بـ OpenCL ، لكن هذا ليس حلاً مثاليًا. أنا منفتح على أي طرق أخرى مريحة لتتبع أرقام الأخطاء. أنا على OSX Snow Leopard (بما في ذلك ذلك فقط في حالة ، لكنني لا أعتقد أنه مناسب)

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

المحلول

إذا كان لديك NVIDIA OPENCL SDK ، فيمكنك استخدام oclErrorString() وظيفة توفرها Oclutils.

نصائح أخرى

لا يوجد حاليا. انتهى بي الأمر بكتابة بلدي ، بأسلوب gluErrorString(). لقد لصق للتو كل cl_error الرموز في ملف ومعالجة كل سطر في EMACs لتحويله إلى مجموعة من الحالات داخل عبارة التبديل (للسماح بإدخالات متقطعة) التي تعيد سلاسل ثابتة. كان من السهل جدا ، ومفيد جدا. يمكنني نشره في مكان ما إذا أردت.

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