parsing - OpenCL:帮助解析 cl 代码以进行 JIT 编译
问题描述
我尝试使用 OpenCL C++ API 编译一些 .cl 代码。对于我在网上找到的以下代码(用于随机数生成),我不断收到 JIT 编译错误。CL语言中函数的定义是:
uint2 MWC_SkipImpl_Mod64(uint2 curr, ulong A, ulong M, ulong distance)
{
ulong m=MWC_PowMod64(A, distance, M);
ulong x=curr.x*(ulong)A+curr.y;
x=MWC_MulMod64(x, m, M);
return (uint2)((uint)(x/A), (uint)(x%A));
}
LLVM 给我的错误是:
<program source>:128:2: error: conflicting types for 'MWC_SkipImpl_Mod64'
<program source>:54:7: note: previous definition is here
uint2 MWC_SkipImpl_Mod64(uint2 curr, ulong A, ulong M, ulong distance)
^
<program source>:133:12: error: returning '__uint2' from a function with incompatible result type 'int'
return (uint2)((uint)(x/A), (uint)(x%A));
这里的代码也使用了这个函数:
uint2 tmp = MWC_SkipImpl_Mod64((uint2)(s->x,s->c), (ulong)(MWC64X_A), (ulong)(MWC64X_M), distance);
出于某种原因,它不喜欢(uint2)((uint)(x/A), (uint)(x%A))
并认为我正在尝试将 int 强制返回到 unsigned int2 中。我知道在解析过程中,生成的源代码行以转义字符“\”结尾。
这可能是我遇到以下错误的原因吗?更重要的是,我该如何克服它,在扫描源代码的过程中我应该过滤什么类型的特殊字符?
谢谢, 胺
解决方案
我终于找到了上面没有编译的原因:JIT 编译器没有看到任何要编译的内核函数并且给我一个错误-11。
结案。
谢谢,
推荐阅读
- performance - Powershell使用公共属性合并两个数组的最快方法?
- homebrew - gcloud init 错误:gcloud 崩溃(AttributeError):“凭据”对象没有属性“quota_project_id”
- google-chrome - chrome 浏览器中的网站审核显示不同设备的不同结果
- sublimetext3 - Sublime 3 高亮问题
- vue.js - 如何使用 Vue 检测浏览器后退按钮?
- sql - Azure Synapse - 检索插入的行标识值
- react-native - 活动指示器不包含 React-Native 上的标头
- python - Python Tkinter,如何同步多个闪烁的小部件?
- python - 如果使用 jinja 匹配,则从列表创建列表
- javascript - 跨多个组件重用 React.useCallback() 函数