خطأ cl_out_of_resources في atom_inc/atomic_inc
سؤال
أنا أستخدم Atom_inc في إحدى نواة بلدي. أكثر أو أقل من هذا القبيل:
kernel exampleKernel(
global volatile int * x,
global const int maxX,
global const int * buf1,
global const int * buf2
)
{
if(x < maxX)
{
int y = atom_inc(x);
buf2[y] = buf1[get_global_id(0)];
}
}
لكنه يعطيني خطأ cl_out_of_resources عندما أسميه. استبدال Atom_inc (x) مع 0 يحل هذه المشكلة ... ولكنه يجعل النواة عديمة الفائدة.
أي أفكار ما الذي يمكن أن يسبب هذا الخطأ؟
تحرير: لقد قمت بتضمين هذه الامتدادات في البرنامج:
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics : enable
edit2: في الواقع أقوم بتهيئة x مع:
kernel.setArgs(0,0);
هل يجب علي استخدام كائن ذاكرة في هذا المكان؟
تحيات طيبة ، فلوريان
المحلول
آه ... حسنًا ... يبدو أن عليك استخدام كائنات الذاكرة في هذه الحالة.
كان الحل هنا هو إنشاء مخزن مؤقت One OpenCl Element ووضعه كوسيطة أولى.
سأترك هذا السؤال والإجابة هنا حتى لا يرتكب الآخرون نفس الخطأ.
لا تنتمي إلى StackOverflow