我正在尝试学习并行计算的基础知识,但我在计算机上遇到了一个问题.看看下面的代码.基本上,我想打印出"Hello World!"这一行.我的电脑拥有的每一个核心.我的电脑有四个核心,因此它应打印出该行四次.如果我使用注释掉的'cout'行而不是'printf'行,输出将全部混乱.这是因为'\n'转义命令与"Hello World!"分开执行,因此新行输出将随机发生.'printf'行是这个问题的解决方案,因为该行是一次性执行的(不会分成像'cout'行这样的部分).但是,当我使用'printf'时,我的输出仍然混乱,好像我使用'cout'.我不知道为什么会这样做.我在另一台计算机上尝试了完全相同的代码,它完美无缺.只有我的电脑继续用'printf'混淆输出.我已经通过电子邮件向我的CS教授发了电子邮件,他不知道为什么要在我的电脑上这样做.我知道我在计算机上正确设置了OpenMP.有并行计算经验的人是否知道为什么这会弄乱我的电脑?
#include <omp.h>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
#pragma omp parallel
{
printf("Hello World!\n");
//cout << "Hello World!\n" << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为了显示我正在谈论的内容,这是我在计算机上运行上述代码时的输出:
你好禾
你好,世界!
RLD!
你好,世界!