首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OpenCL和mono的SIGXCPU杀死CPU

使用OpenCL和mono的SIGXCPU杀死CPU
EN

Stack Overflow用户
提问于 2013-07-26 10:42:28
回答 1查看 583关注 0票数 0

我有一个非常类似的问题在这里说:Intel CPU OpenCL in Mono killed by SIGXCPU (Ubuntu)

本质上,我有一个非常简单的C#应用程序使用OpenCL (通过OpenCL.Net包装,但它不应该有什么区别,因为它只是包装本机函数,仅此而已)。在代码中,我只构建内核,然后分配一个大的浮动数组。

更具体地说,我的平台是Ubuntu12.04,OpenCL 1.1 (带有CUDA)和mono3.0.3。

问题:当通过mono运行我的代码时,我得到的CPU限制超过了错误

很少的事情:

  • 如果我在构建内核和分配之间设置了一个断点(在单次开发中),它就能工作。
  • 将数组大小更改为小数组也会使其工作。

斯特拉斯没有显示出任何有用的东西。我还尝试将一个回调传递给ClBuildProgram (注意:如果我用ClBuildProgram进行注释,它就能工作)。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-29 10:45:26

这就是我最终成功的原因。

mono有一个主要问题-它使用SIGXCPU进行GC处理(这是奇怪的)。不幸的是,OpenCL也使用它,因此它会发生冲突。

变通办法是修改单一代码。

转到源目录和grep -r SIGXCPU。在我的mono (3.0.3)中有两个重要文件

./libgc/p线程_stop_world.c:#定义SIG_THR_RESTART SIGXCPU

./mono/元数据/sgen posix.c:const restart_signal_num = SIGXCPU;

用SIGWINCH替换SIGXCPU并重新编译。一个注意事项是,我不确定它是否破坏了什么东西,但目前看来还可以,OpenCL问题已经解决了。如果它破坏了什么东西(如gui),将SIGWINCH替换为您拥有的不同信号(signals.h表示信号防御)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17879292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档