英特尔CPU的OpenCL在单由SIGXCPU杀死(Ubuntu的)(Intel CPU OpenC

2019-10-17 08:18发布

前一段时间我写了使用OpenCL的简单类鸟群模拟(是学校分配),使用C#,Cloo针对OpenCL和OpenTK的OpenGL输出。 我与AMD的CPU执行的OpenCL的和朋友的NVidia测试了Windows7的。 现在,我想它在Linux(Ubuntu的12.04)。 我安装了AMD APP SDK和英特尔SDK。 它编译OK,参考CPU执行工作正常图形输出。 但是,当我尝试运行的OpenCL版本,它运行约1秒(显示什么似乎像在OpenGL的有效输出),然后得到由SIGXCPU杀害。 试图谷歌的一些已知的问题,但一无所获。 于是,我就赶上并忽略的信号,但每次我尝试,程序挂起。 当我设置单捕捉一些不同的信号(例如SIGPIPE),它运行正常(减去杀死时的OpenCL)。 在单声道,我试图Mono.UnixSignal中常见问题陈述尝试

Mono.Unix.Native.Stdlib.SetSignalAction ( Mono.Unix.Native.Signum.SIGXCPU, Mono.Unix.Native.SignalAction.Ignore);

那么一些东西,不挂,但并没有帮助:

Mono.Unix.Native.Stdlib.SetSignalAction ( Mono.Unix.Native.Signum.SIGXCPU, Mono.Unix.Native.SignalAction.Error);

乃至

ignore (0);
Mono.Unix.Native.Stdlib.signal(Mono.Unix.Native.Signum.SIGXCPU, new Mono.Unix.Native.SignalHandler (ignore));

static void ignore(int signal) {
}

甚至当我从主删除一切,但它仍然之后的某个时间“接触”该信号挂起。

还有一个奇怪的事情:

Mono.Unix.Native.Stdlib.SetSignalAction ( Mono.Unix.Native.Signum.SIGXCPU, Mono.Unix.Native.SignalAction.Default);

Application.EnableVisualStyles后某处SIGXCPU杀死应用(); 当我设置它的权利之前,甚至没有接触OpenCL的这段时间。

是不是我在单错过了吗? 使用此信号在某处内部,它获取的OpenCL的方式吗?

Answer 1:

单用途SIGXCPU内部为达到自己的目的,所以,如果你忽略它(或者它提出了一些其他原因),事情会打破。



Answer 2:

SIGXCPU意味着你已经超过了每个进程的时间限制。 一旦你已经超过了它,你已经超过了它。 该过程被卡住。 您需要使用的ulimit,或者从管理员帮忙,设置更高的限制。



文章来源: Intel CPU OpenCL in Mono killed by SIGXCPU (Ubuntu)