【问题标题】:what is the command line argument for running process in multiple cores (linux)在多核(linux)中运行进程的命令行参数是什么
【发布时间】:2013-01-16 06:17:20
【问题描述】:

我正在尝试在多个内核中运行我的程序。我的桌面有 12 个内核,希望计算机一个一个地使用 1,2,3,4,......,11,12,并想测试程序在不同数量的内核中的性能。我尝试在可执行文件之后使用 -t4 或 -t 4。

./a.out -t4 

但我无法确定它是否正好使用 4。谁能帮我理解这一点或指出我正确的方向。

【问题讨论】:

  • 您要设置核心亲和力吗? stackoverflow.com/questions/8486314/…cyberciti.biz/tips/…
  • 谢谢你的链接..你看我正在使用线程并希望这些线程使用 1 到 12 的核心。我听说我们可以在 Linux 中使用命令行来做到这一点,比如 -t4 for四核..
  • 你不能完全控制你在哪个内核上运行,但是当你在你的程序中创建线程时,你可以设置特定内核的亲和力(我认为 api 是 sched_setaffinity )。我认为这是需要在您的代码中完成的事情,而不是在命令行中。您的代码可以使用命令输入来控制线程/内核的数量。
  • 非常感谢*100 thang .. 为我指出正确的方向:)

标签: c++ linux multithreading gcc parallel-processing


【解决方案1】:

您的程序必须是多线程的才能使用您机器的多个内核。

这意味着程序的实际代码必须了解线程并有效地使用它们。

您不能简单地要求程序在给定数量的线程上运行。

您必须使用诸如 pthread 之类的线程库来生成线程并在它们上分配工作。

【讨论】:

  • 你不能简单地要求一个程序在给定数量的线程上运行。啊,反正还没有!
  • 我目前正在使用多线程程序..我使用大量线程..所以我想测试所有内核以找出最好的内核数..
  • 你使用线程池吗?然后可以通过给定的参数配置线程池的线程数。
【解决方案2】:

您应该查看 libnuma 库。

您可以通过编程方式设置希望不同线程在哪些内核上运行,也可以使用命令行选项运行它。这是一些详细文档的链接:http://www.halobates.de/numaapi3.pdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多