首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使同一程序在Linux/macOS中以100%的不同核心运行N次执行?

如何使同一程序在Linux/macOS中以100%的不同核心运行N次执行?
EN

Stack Overflow用户
提问于 2018-11-08 10:33:19
回答 1查看 82关注 0票数 0

发问

如何在100%的不同内核中运行相同程序的不同实例?

上下文

我正在运行一个C++11代码在一个iMac Pro (2017)与OSHighSiera10.13.6。相应的可执行文件称为‘bayesian_估测’。

当我运行这个程序的一个实例时,其中一个核心以100%的速度执行该任务,如下所示:

如果我运行更多的实例,每个实例的CPU%就会下降。但是大部分的核心都是闲置的!为什么他们不被使用?例如,请参见3 'bayesian_estimation‘进程运行时会发生什么情况:

或者当我执行7:

理想情况下,在最后一张照片中,我希望有7个核心完全繁忙,每个核心运行一个'bayesian_estimation‘进程。

编辑1

我将提供更多可能有助于查明问题的信息。我编译了我的代码如下:

代码语言:javascript
复制
g++ -std=c++11 -Wall -g bayesian_estimation.cpp -o bayesian_estimation -O2 -larmadillo

我使用过的所有库和包如下:

代码语言:javascript
复制
#include <iostream>     // Standard input and output functions.
#include <iomanip>      // Manipulate stream input and output functions.
#include <armadillo>    // Load Armadillo library.
#include <sys/stat.h>   // To obtain information from files (e.g., S_ISDIR).
#include <dirent.h>     // Format of directory entries.
#include <vector>       // To deal with vectors.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-08 14:13:16

我确定了@bolov在评论中提到的瓶颈的来源。这是由于在代码中使用arma_rng::set_seed_random()来生成Armadillo库中的随机数。如果我删除这一行代码,问题就消失了。

一个问题深入到这个问题,并提供了一个可重复的例子是张贴here

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

https://stackoverflow.com/questions/53205907

复制
相关文章

相似问题

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