首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libgomp:线程创建失败:禁用/启用CPU后参数无效

libgomp:线程创建失败:禁用/启用CPU后参数无效
EN

Stack Overflow用户
提问于 2017-08-20 02:52:35
回答 1查看 685关注 0票数 0

我有一台双插槽机器,每个机器都有14个核心,并启用了超线程-因此总共有14*2*2 = 56个处理单元或逻辑CPU。

我通过执行以下操作禁用了所有奇数CPU(1、3、5、7、...、53、55):

代码语言:javascript
复制
  for i in {1..55..2}; do echo 0 > /sys/devices/system/cpu/cpu$i/online; done

  /sys/devices/system/cpu/online shows 0 2 4 6 ... 52 54

现在,每当我尝试使用OpenMP创建多个线程(=28)时,我得到了以下错误:

代码语言:javascript
复制
  libgomp: Thread creation failed: Invalid argument

我通过执行以下操作将其还原:

代码语言:javascript
复制
  for i in {1..55..2}; do echo 1 > /sys/devices/system/cpu/cpu$i/online; done

  /sys/devices/system/cpu/online shows 0-55

尽管如此,我还是得到了同样的错误。

有什么想法吗?

编辑:在我做上述实验之前,代码在任何数量的线程上都工作得很好。

EN

回答 1

Stack Overflow用户

发布于 2017-08-27 02:42:32

即使在再次启用CPU之后,OMP线程的数量也只有一半(因为我禁用了奇数)。

解决方案:我不得不在最后重启服务器。在此之后,一切都会正常工作。

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

https://stackoverflow.com/questions/45775251

复制
相关文章

相似问题

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