gpt4 book ai didi

windows - OpenACC 与 OpenMP

转载 作者:行者123 更新时间:2023-12-04 18:40:21 26 4
gpt4 key购买 nike

您好,我测试了 OpenACC vs OpenMP vs Nothing,但我得到了奇怪的结果。

  • 代码:
        #include <stdio.h>
    int main () {
    int a,sum=0;
    (#pragma omp for/#pragma acc parallel loop/nothing)
    for( a = 0 ; a < 2000000000; a = a + 1 ){
    sum+=a%2;
    }
    printf("sum = %d\n",sum);
    return 0;
    }
  • 我为 Windows 10 使用子系统 Ubuntu
    ( https://docs.microsoft.com/en-us/windows/wsl/install-win10 ) 和
    GCC 7.1(C 编译器)并得到以下结果:Nothing = OpenMP(约 5 秒内正确结果); OpenACC 更快,但结果错误(0 vs 1 000 000 000)
  • 我将 VMware 与 Ubuntu 一起使用,结果是:什么都没有
    什么都没有(程序无限执行,我只是关闭终端);开放式ACC
    显示结果比 OpenMP 更快,但再次显示错误结果。
  • 如果我使用带有 OpenMP 的控制台中的 Intel C++ 编译器,我在 Ubuntu
  • 中得到大约 1.3 秒与约 5 秒

    该怎么办?

    最佳答案

    您有多个不同的线程覆盖 sum ,因此你得到错误的结果。你需要告诉它这是一个“减少”

    #pragma omp parallel for reduction(+:sum)

    或者
    #pragma acc parallel loop reduction(+:sum)

    关于windows - OpenACC 与 OpenMP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48972219/

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