使用 OpenMP 在两个内核上设置线程关联

2024-02-29

我使用的是C程序,在Windows7上用gcc 4.9.2编译,使用OpenMP 4.0。 我的电脑是双核,四个线程。 我想使用线程亲和力传播并使用放置在不同核心上的 2 个线程。因此,当我从 DOS 设置环境变量时:

  • 设置 OMP_NUM_THREADS=2
  • 设置 OMP_PROC_BIND=传播
  • 设置 OMP_PLACES="核心"

当变量 OMP_DISPLAY_ENV=true 时,我得到:

libgomp: Invalid value for environment variable OMP_PLACES

OPENMP DISPLAY ENVIRONMENT BEGIN
  _OPENMP = '201307'
  OMP_DYNAMIC = 'FALSE'
  OMP_NESTED = 'FALSE'
  OMP_NUM_THREADS = '2'
  OMP_SCHEDULE = 'DYNAMIC'
  OMP_PROC_BIND = 'SPREAD'
  OMP_PLACES = ''
  OMP_STACKSIZE = '12872703'
  OMP_WAIT_POLICY = 'PASSIVE'
  OMP_THREAD_LIMIT = '4294967295'
  OMP_MAX_ACTIVE_LEVELS = '2147483647'
  OMP_CANCELLATION = 'FALSE'
  OMP_DEFAULT_DEVICE = '0'
OPENMP DISPLAY ENVIRONMENT END

看来输入无效,所以我将其更改为:

  • 设置 OMP_PLACES="核心"
  libgomp: Affinity not supported on this configuration 
  OPENMP DISPLAY ENVIRONMENT BEGIN
  _OPENMP = '201307'
  OMP_DYNAMIC = 'FALSE'
  OMP_NESTED = 'FALSE'
  OMP_NUM_THREADS = '2'
  OMP_SCHEDULE = 'DYNAMIC'
  OMP_PROC_BIND = 'SPREAD'
  OMP_PLACES = ''
  OMP_STACKSIZE = '3107827'
  OMP_WAIT_POLICY = 'PASSIVE'
  OMP_THREAD_LIMIT = '4294967295'
  OMP_MAX_ACTIVE_LEVELS = '2147483647'
  OMP_CANCELLATION = 'FALSE'
  OMP_DEFAULT_DEVICE = '0'
  OPENMP DISPLAY ENVIRONMENT END

这就是结果:亲和力不支持。即使使用以下方法我也得到相同的结果:

设置 OMP_PLACES="{0},{2},{1},{3}"

你们有人知道如何解决这个问题吗?


我尝试在 Linux 上使用 gcc 4.9.3 编译一个简单的 hello world 代码,并使用您建议的环境变量:

~/tmp$ OMP_DISPLAY_ENV=true OMP_NUM_THREADS=2 OMP_PROC_BIND=spread OMP_PLACES=cores ./a.out 

OPENMP DISPLAY ENVIRONMENT BEGIN
  _OPENMP = '201307'
  OMP_DYNAMIC = 'FALSE'
  OMP_NESTED = 'FALSE'
  OMP_NUM_THREADS = '2'
  OMP_SCHEDULE = 'DYNAMIC'
  OMP_PROC_BIND = 'SPREAD'
  OMP_PLACES = '{0:2},{2:2}'
  OMP_STACKSIZE = '140736864318339'
  OMP_WAIT_POLICY = 'PASSIVE'
  OMP_THREAD_LIMIT = '4294967295'
  OMP_MAX_ACTIVE_LEVELS = '2147483647'
  OMP_CANCELLATION = 'FALSE'
  OMP_DEFAULT_DEVICE = '0'
OPENMP DISPLAY ENVIRONMENT END
Hello from thread 0 / 2
Hello from thread 1 / 2

所以基本上,它对我有用,而且我相信你所尝试的是合法的。但是,您收到的消息Affinity not supported on this configuration我相信亲和力可能根本无法在您的 Windows 7 计算机上使用。我没有这样的环境来测试,但 OpenMP 标准说:

判断是否可以满足关联请求的是 定义的实现。如果亲和力请求无法满足, 那么团队中线程的亲和力是由实现定义的。

我想这就是我们...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 OpenMP 在两个内核上设置线程关联 的相关文章

  • 有没有办法将所有内容都包含在 dbcontext 中?

    当查询一个DbContext急切加载时 需要Include Navigation 为了填充导航属性 然而 在某些情况下 我想简单地Include all实体的导航属性 有没有办法做到这一点 或者有办法做到这一点 我假设你可以反思 但我宁愿避
  • 从数组中输入多个数字,每个数字检查是否为整数

    每个人 我希望有人能帮我弄清楚C语言的一些东西 这是我第一次认真地做IT方面的作业 我没有经验 而且我正在电子学习中学习 所以老师的帮助不是很好 我需要用C语言开发控制台应用程序 用户需要输入10个整数 如果插入的数字不是整数 需要输出错误
  • .NET Core 2 - 从启动中调用存储库方法[重复]

    这个问题在这里已经有答案了 我有以下存储库和类 public interface IValueService GetAll public class ValueService IValueService private DataContex
  • 更新 OSX 命令行工具 6.3 后缺少 C++ 标头 <__debug>

    从 App Store 更新到 Command Line Tools 6 3 后 程序包括
  • 公共领域有哪些替代方案?

    我正在用 java 编写一个游戏 正如问题标题建议的那样 我在类中使用公共字段 暂且 据我所知 公共领域很糟糕 我有一些理解其中的原因 但如果有人能澄清为什么你不应该使用它们 那将不胜感激 问题是 从我所看到的来看 这似乎是合乎逻辑的 是使
  • 如何使用 DesignData 帮助开发 Metro 应用程序?

    我一直在 Windows Phone 应用程序中愉快地使用 DesignData 我希望使用它来帮助在 VS2012 Blend for VS 中的 Metro 风格应用程序中可视化设计 我已经尝试过希望显而易见的方法
  • 泛型类上的 DebuggerDisplay

    我在应用时遇到问题DebuggerDisplay泛型类的属性 DebuggerDisplay foo class Foo DebuggerDisplay Bar t class Bar
  • 如何设置cookie值?

    我正在执行以下操作来设置 cookie 值 HttpCookie mycookie new HttpCookie mycookie mycookie Value value1 Case sensitivity mycookie Expire
  • C语言中的array、&array、&array[0]有什么区别? [复制]

    这个问题在这里已经有答案了 在学习C语言中的数组和指针时 我很困惑 为什么ch ch ch 0 彼此相等 而sptr sptr sptr 0 却不相等 这是我的源代码 int main void char ch 7 1 2 3 4 5 6
  • 阻止用户取消选择列表框中的项目?

    我有一个列表框 里面有很多项目 用户可以单击某个项目来编辑其内容 如何防止用户取消选择所有项目 即 用户不应该无法选择任何内容 您的情况缺少一个案例 即清除列表后 您将选择列表中不再存在的项目 我通过添加额外的检查来解决这个问题 var l
  • C++头文件问题

    我在处理类时尝试了一些 C 代码 这个问题出现在我身上 并且让我有点烦恼 我创建了一个包含类定义的头文件和一个包含实现的 cpp 文件 如果我在不同的 cpp 文件中使用此类 为什么要包含头文件而不是包含类实现的 cpp 文件 如果我包含类
  • C# 的 xml 序列化中是否有一个属性可以跳过空数组?

    C 的 xml 序列化中是否有一个属性可以跳过空数组 这将提高 xml 输出的可读性 好吧 你也许可以添加一个ShouldSerializeFoo method using System using System ComponentMode
  • 如何将此 Boost ASIO 示例应用到我的应用程序中

    我已经阅读了很多 ASIO 示例 但我仍然对如何在我的应用程序中使用它们感到困惑 基本上 我的服务器端需要接受超过100个连接 客户端 这部分是通过使用线程池 通常每个CPU核心2 4个线程 来完成的 为简单起见 我们假设只有一个连接 为了
  • 使用 System.Json 迭代 JSON

    我正在探索 NET 4 5 的功能System Json库 但没有太多文档 而且由于流行的 JSON NET 库 搜索起来相当棘手 我基本上想知道 我如何循环一些 JSON 例如 People Simon Age 25 Steve Age
  • int 类型的构造函数

    考虑到成本 这些情况是否相同 case 1 int a 5 case 2 int a 5 case 3 int a a 5 这三种语法是不同的 请耐心等待 我使用用户定义类型而不是 int 稍后我将回到 int T a 5 Direct i
  • 恐怖分子已弃用

    正在接听另一个问题 https stackoverflow com q 11830514 1468366 我偶然发现了man page http linux die net man 3 herror一个名为的函数herror 看起来很像pe
  • 使用 /clr 或 clr:pure(cpprestsdk 又名 casablanca)编译时不支持互斥

    我创建一个CLR project in visual c with 64 bit配置 并尝试使用cpprestsdk aka casablanca 64bit 但是当我运行项目时 出现了错误 1 gt Build started Proje
  • 返回右值 - 这段代码有什么问题? [复制]

    这个问题在这里已经有答案了 我遇到了以下代码片段 std string test std string m Hello return std move m int main std string m test 我知道上面的代码是不正确且不安
  • 当前线程中的单例

    我的单身人士如下 public class CurrentSingleton private static CurrentSingleton uniqueInstance null private static object syncRoo
  • “while(true) { Thread.Sleep }”的原因是什么?

    我有时会遇到以下形式的代码 while true do something Thread Sleep 1000 我想知道这是否被认为是好的做法还是坏的做法以及是否有任何替代方案 通常我在服务的主函数中 找到 这样的代码 我最近在 Windo

随机推荐

  • 如何使用 PHP 过滤 MySQL 中的数据(一对多关系)

    我想做的事 用户将使用发送一个值GET我会将值存储在名为的变量中 category1 现在包含值的所有行 category1将显示 这就像一个搜索系统 这是我的代码 stmt conn gt prepare SELECT tmdb movi
  • PHP 中有一个像样的 HTML-table-generator 类吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在 PHP 中寻找一个像样的类 它将生成复杂的 HTML 表格 即它应该支持 colspan rowspan 以及行 列和单元格的单独
  • 身份验证类型名称如何在 asp.net vnext 中注册

    因此 我正在更新 MongoDB 的开源 asp net 身份提供程序 以便与 Asp Net Identity 3 0 又名 vnext 配合使用 到目前为止 我已经能够注册提供程序并创建用户 但是在使用 SignInManager 时
  • 从缓存对象中转换 ValueTuple

    当我检查缓存以查看我的 ValueTuple 是否在缓存中时 我使用下面的代码 在这种情况下 返回的值为 null 即缓存中不存在 当代码运行时我得到object not set to instance of an object第一行错误
  • 如何测试 AccessViolationException 的处理

    我需要编写一个测试来验证我的代码是否可以处理 AccessViolationException 或任何其他 WIN32 损坏状态异常 CSE 该异常在不安全的上下文中发生 通常通过调用第 3 方库来处理 这一切都应该在 net 4 0 上使
  • 如何在 IPython 笔记本中播放本地视频?

    我有一个本地视频文件 avi 但可以转换 我想向客户端展示该文件 即它是私有的 无法发布到网络 但我不知道如何在 IPython 笔记本中播放它 经过一番谷歌搜索后 似乎 HTML5 视频标签可能是可行的方法 但我不知道任何 html 无法
  • 部署应用程序时如何避免安装“无限强度”JCE策略文件?

    我有一个使用 256 位 AES 加密的应用程序 Java 不支持该加密 我知道为了让它正常工作 我在安全文件夹中安装了 JCE 无限强度 jar 这对我作为开发人员来说很好 我可以安装它们 我的问题是 由于此应用程序将被分发 最终用户很可
  • 获取我在 Sql Server 中更新的行的 Id

    我正在尝试返回在 sql 中更新的行的 Id UPDATE ITS2 UserNames SET AupIp AupIp WHERE Customer ID TCID AND Handle ID ID SELECT ERROR AS Err
  • 为什么第一个 WCF 客户端调用很慢?

    我试图弄清楚为什么客户端应用程序启动后的第一个 WCF 调用比第二个调用花费更多的时间 我做了什么来测试 实现了简单的自托管 WCF 服务器和控制台客户端 服务器已预热 在运行测试之前我运行它并调用方法几次 绑定是basicHttpBind
  • 重新启动 erlang 进程并保留状态

    我有一个主管进程 它启动多个子进程 目前 当孩子死亡时 我会生成一个具有新 Pid 的新进程 这意味着我丢失了刚刚死亡的子进程的状态信息 我希望我的客户始终使用相同的标识符与子进程进行通信 尽管子进程可能会死亡并由主管重新启动 我正在考虑使
  • 无法将类型“UnsafePointer”的值转换为预期参数类型“UnsafePointer<_>”

    我正在 OS X 的 Swift 中使用外部 C 库 我得到一个值 cda 它在 C 中定义为double 它是一个指向双数组的指针 当导入到 Swift 中时 它会将类型识别为 UnsafeMutablePointer 我正在尝试将此指针
  • 如何在 mpandroidchart 中设置 x 标签和 y 标签的值

    我正在使用 mpandroidchart android 库 我正在实施折线图 这里我可以自己设置x和y标签吗 目前 它正在根据提供给图表的数据集添加值 您能对此提供一些想法吗 您必须在轴对象上使用格式化程序 有两种格式化程序 XAxisV
  • 带有 NULL 的列不能用于 Bigquery 中的联合

    我正在工作中构建动态 sql 生成器 并且在联合查询方面遇到困难 当我运行以下查询时 SELECT NULL AS field 列类型是BOOL默认情况下 它可以用于与整数类型列的联合 如下所示 SELECT field FROM SELE
  • 如何以编程方式“重新启动”Android 应用程序?

    首先 我知道不应该真正终止 重新启动 Android 上的应用程序 在我的用例中 我想在服务器向客户端发送一条特定信息的特定情况下对我的应用程序进行出厂重置 用户只能使用应用程序的一个实例登录服务器 即不允许使用多个设备 如果另一个实例获得
  • 致命错误:在非对象 codeigniter $query->num_rows()==1) 上调用成员函数 where() [重复]

    这个问题在这里已经有答案了 可能的重复 CodeIgniter 在非对象上调用成员函数 select https stackoverflow com questions 8322124 codeigniter call to a membe
  • 在 CQRS http 应用程序中实现 Saga/Process Manager

    按照这个例子 https msdn microsoft com en us library jj591569 aspx https msdn microsoft com en us library jj591569 aspx 图3 它如何适
  • ofstream 无法在 Linux 上运行

    我有一个简单的测试代码 include
  • 递归排列列表

    我想通过递归来解决问题 我有一个给定的字母列表 我想要这些字母的所有排列 直到达到给定的长度 var letters A B C D E F function myRekursion alphabet n if n gt 0 for var
  • 高效利用Android资源

    我试图弄清楚如何有效地使用 Android 的资源系统 既提供最高分辨率的资源 又保持较小的 apk 大小 我的资源文件夹 drawable normal mdpi drawable normal hdpi drawable large m
  • 使用 OpenMP 在两个内核上设置线程关联

    我使用的是C程序 在Windows7上用gcc 4 9 2编译 使用OpenMP 4 0 我的电脑是双核 四个线程 我想使用线程亲和力传播并使用放置在不同核心上的 2 个线程 因此 当我从 DOS 设置环境变量时 设置 OMP NUM TH