Я не очень хорошо знаю OpenCL, но я знаю, что C/C++ API требует, чтобы программист предоставил код OpenCL в виде строки. Но недавно я обнаружил библиотеку ArrayFire, которая не требует строкового кода для вызова некоторых вычислений. Мне было интересно, как это работает (это с открытым исходным кодом, но код немного сбивает с толку). Можно ли написать параллель для бэкэнда OpenCL, который вызывает любой фрагмент скомпилированного (например, x86) кода, например:
template <typename F>
void parallel_for(int starts, int ends, F task) //API
{ /*some OpenCL magic */ }
//...
parallel_for(0, 255, [&tab](int i){ tab[i] *= 0.7; } ); //using
PS: я знаю, что я на 99% слишком оптимистичен