gpt4 book ai didi

c++ - 增加 mpi 中的 CPU 数量会增加处理时间?

转载 作者:行者123 更新时间:2023-11-28 02:38:03 25 4
gpt4 key购买 nike

我是并行计算的新手,所以我决定从使用 Mpich2 编译的 hello world 开始。这是代码:

/* helloworld.c */

#include <stdio.h>

/* You MUST include this for the MPI_* functions */
#include "mpi.h"

int main(int argc, char **argv) {
int rank;
char host[150];
int namelen;

/* Initialize MPI. This handles mpich-specific command line arguments */
MPI_Init(&argc, &argv);

/* Get my rank. My rank number gets stored in the 'rank' variable */
MPI_Comm_rank(MPI_COMM_WORLD, &rank);

/* Look up what computer I am running on. Store it in 'host' */
MPI_Get_processor_name(host,&namelen);

printf("Hello world (Rank: %d / Host: %s)\n", rank, host);
fflush(stdout);

/* Finalize: Close connections to the other children, clean up memory
* the MPI library has allocated, etc */
MPI_Finalize();
return 0;
}

我是这样编译运行的:

mpicc helloworld.c -o myhello 
mpirun -nc 2 ./myhello

它有效。然而,我注意到通过增加 CPU 数量,挂钟时间增加了,我希望它减少?!此外,CPU 的数量没有限制,但是我的笔记本电脑有 5 个内核,但我可以根据需要在代码中设置 CPU 的数量,如果超过实际 CPU 的数量,我预计会出现一些错误。

最佳答案

理论上首先并行处理应该按照你说的去做:

  • 由一个人完成的过程如果由两个人完成应该会更快。

虽然这在理论上很不错,但在实践中它实际上是一个完全不同的故事。

在对您的项目一无所知的情况下,我会认为该程序几乎没有可并行处理和/或它太快/太小以至于程序必须执行的消息传递实际上减慢了它的速度。不要忘记,它不仅仅是运行的程序,还有许多其他进程在后台从每个核心完成。

我建议做的是能够真正显示并行过程有用性的事情,例如将数组拆分为不同的段并使用不同的处理器计算每个段(即应该是一个巨大的数组)或读取不同的文本文件同时对它们进行一些处理。

最后一点,你真的应该看看 Amdahl's law这解释了系统可以通过并行处理加速多少。

关于c++ - 增加 mpi 中的 CPU 数量会增加处理时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26872793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com