gpt4 book ai didi

c - 如何设置 openMP

转载 作者:太空狗 更新时间:2023-10-29 15:59:31 28 4
gpt4 key购买 nike

我想在带有 Eclipse IDE 的 Windows 7 上用 C 测试 openMP。我在任何地方都找不到设置 openMP 的具体步骤。你能帮帮我吗?

最佳答案

我对 OpenMP 的了解不多,但这是我自己尝试的结果。

OpenMP 允许您告诉编译器事物应该并行运行。这是一个数到 10000000000 的示例:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    long result = 0;
    long i;

#pragma omp parallel for reduction(+: result)
    for (i = 0; i < 10000000000; i++) {
        result++;
    }
    printf("%li\n", result);
    return EXIT_SUCCESS;
}

这将像普通的 C 程序一样编译:

$ gcc -o OpenMPTest main.c

它在我的机器上运行 30 秒:

$ time ./OpenMPTest
10000000000

real 0m30.674s
user 0m30.628s
sys 0m0.014s

向 gcc 添加 -fopenmp 选项可启用 OpenMP 支持。这就是让循环在多个线程中运行所需的全部内容。

$ gcc -o OpenMPTest main.c -fopenmp

这将双核系统上的运行时间减半至 15 秒:

$ time ./OpenMPTest
10000000000

real 0m15.840s
user 0m30.123s
sys 0m0.037s

下面是对 #pragma 行功能的简要描述:

#pragma omp

这是 openmp 命令的前缀。

parallel

告诉编译器下一条语句应该并行运行。

for reduction(+: result)

通过加法将来自并行循环的result 变量的所有值合并为一个值。删除它会导致打印出的最终数字不正确。

我知道您使用的是 eclipse,但 MSDN 文档非常适合描述 OpenMP: OpenMP in Visual C++

关于c - 如何设置 openMP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8104560/

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