一位客户找我做一个项目,该项目将涉及尝试使用 OpenCL 在 GPU 上运行完整的程序。
我对 CUDA 和低级机器架构有相当的了解。据我了解,GPU 代码没有调用堆栈,也没有指针,也没有任何非结构化的控制流机制,如 goto、异常或函数指针。对我来说,就语义而言,它类似于基本的 FORTRAN 方言。我知道从另一个 GPU 内核调用的 GPU 内核会像宏扩展一样内联,没有 CALL/RET 机制
据我了解,没有堆栈就不可能拥有词法范围的语言,OpenCL 编译的方言是 C 的一个非常平坦的子集,类似的 CUDA,虽然允许模板和东西,但只给了我们一个非常小的 C++ 子集
客户希望从 Javascript 转换为 C 到 LLVM,然后再转换为 OpenCL 字节码,或者以某种方式让完整的程序在 GPU 上运行,即使它们运行缓慢且没有并行性
我是否正确地说服客户他希望实现的目标在技术上是不可能实现的,并且没有真正的用处?