首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ILNumerics.Misc.ILThreadPool出现间歇性异常?

ILNumerics.Misc.ILThreadPool出现间歇性异常?
EN

Stack Overflow用户
提问于 2015-02-26 19:26:54
回答 2查看 84关注 0票数 1

我最近升级到了ILNumerics 4.3版。当我使用ILNumerics数组时,我发现上面的异常经常出现在我的应用程序中。不幸的是,我不能在调试模式下重现它,所以不确定我的代码的哪一部分触发了它。

有没有人有类似的问题?另外,我还没有修改任何ILNumerics默认设置。

有什么建议可以试试吗?

EN

回答 2

Stack Overflow用户

发布于 2015-02-27 22:20:02

用最新的版本试试吧!如果这样还不起作用,那么可以明确地配置线程的数量,比如'2‘。这样即使在调试模式下也可以启用多线程。这样,您就可以重现异常并找到导致异常的区域。

在调试模式下使用多个线程可能会导致IDE中出现奇怪的行为。尤其是在使用“即时”窗口时。因此,除非确实必要,否则最好不要使用该方法。

票数 0
EN

Stack Overflow用户

发布于 2015-10-08 23:12:58

我也有同样的问题,它只发生在生产机器上。我认为问题出在多线程上。我猜您的代码中可能有类似Parallel.ForEach的内容。

看看他们的官方文档:Settings.MaxNumberThreads

“为了最大限度地提高数值算法的执行速度,MaxNumberThreads的值应该等于系统上的实际处理器核心的数目。对于使用超线程的处理器,虚拟核心上的数目可能更高。但是,由于那些虚拟核心共享执行的某些资源,因此不能有效地利用它们。在这种情况下,例如在windows任务管理器中出现的‘核心’的数目是误导的,应该将独立核心的真实数目用于MaxNumberThreads。请咨询您的处理器供应商以找出您的系统使用了多少独立的核心。

由于独立核心的数量不是由.NET可靠确定的,因此在所有多核机器上,ILNumerics默认为2个核心。因此,应手动设置此设置,以便在多核计算机上获得更好的处理器利用率。

如果您的算法使用自定义的并行执行模型,则可能需要将此值设置为“1”。 ILNumerics将运行单线程,这样您就可以自行配置并行线程上的执行。

该值的设置还会影响ILNumerics内部使用的任何非托管优化支持库(例如MKL)的相应值。

ILNumerics核心模块“

您可以尝试将上述选项设置为1。

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

https://stackoverflow.com/questions/28741195

复制
相关文章

相似问题

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