Полностью универсальный код на GPU
Ко мне обратился клиент для работы над проектом, который будет включать в себя попытку запуска полнофункциональных программ на GPU с OpenCL.
У меня есть приличные знания CUDA и машинная архитектура низкого уровня. Насколько я понимаю, код GPU не имеет ни стека вызовов, ни указателей, ни какого-либо неструктурированного механизма потока управления, такого как goto, исключения или указатели на функции. Для меня это похоже на элементарный диалект FORTRAN с точки зрения семантики. Я знаю, что ядра GPU, вызываемые из другого ядра GPU, вставляются как расширения макросов, механизм CALL/RET отсутствует
Насколько я понимаю, у вас не может быть лексически ограниченного языка без стека, и диалект, который OpenCL компилирует, представляет собой очень плоское подмножество C и, аналогично, CUDA, хотя и допускает шаблоны и прочее, дает нам только очень небольшое подмножество C++.
Клиент хочет перевести из Javascript в C на LLVM, а затем в байт-код OpenCL или как-то заставить полнофункциональные программы работать на GPU, даже если они работают медленно без параллелизма
Прав ли я, убедив клиента в том, что то, чего он надеется достичь, технически невозможно и не очень полезно?