Opencl не поддерживает рекурсивные функции, но охватывает ли это также и косвенные версии?OpenCL и непрямая рекурсия
void recursiveA(int *a,int b) // call this first to start recursion
{
a[b]=3;
if(b<10)
{
recursiveB(a,b+1); // A calls B
}
}
void recursiveB(int *a, int b)
{
a[b]=3;
if(b<10)
{
recursiveA(a,b+1); // B calls A while A still not finished before
// and entry point & arguments of A are corrupt ?
}
}
вместо
void recurse(int *a, int b)
{
a[b]=3;
if(b<10)
{
recurse(a,b+1); // some OpenCL devices does not have the ability so this is not
// possible in OpenCL
}
}
Итак, мы можем вызвать функцию "R" из другой функции, даже если первый "R" не закончена? Эти функции используют одни и те же постоянные адреса для аргументов каждый раз, когда мы их называем? Должен ли я использовать пользовательскую реализацию «стека» для выполнения косвенной рекурсии до тех пор, пока не будет выпущен Opencl 2.0?