gpt4 book ai didi

multithreading - OpenMP 可以用于 GPU 吗?

转载 作者:行者123 更新时间:2023-12-03 11:01:35 30 4
gpt4 key购买 nike

我一直在网上搜索,但我对这个话题仍然很困惑。任何人都可以更清楚地解释这一点吗?我来自航空航天工程背景(不是计算机科学背景),所以当我在网上阅读有关 OpenMP/CUDA/etc 的信息时。和多线程 我不太明白所说的很多内容。

我目前正在尝试并行化用 FORTRAN 编写的内部 CFD 软件。这些是我的疑惑:

  • OpenMP 使用来自 CPU 的多个线程来共享工作负载。它也可以用来让 GPU 获得一些工作吗?
  • 我读过有关 OpenACC 的内容。它是否类似于 OpenMP(易于使用)?

  • 我也读过 CUDA 和内核,但我在并行编程方面没有太多经验,我对内核是什么一无所知。
  • 对于 FORTRAN(如果 OpenMP 不这样做并且 OpenACC 不可移植),是否有一种简单且可移植的方法来与 GPU 共享我的工作负载?

  • 你能给我一个“傻瓜”类型的答案吗?

    最佳答案

    是的。 OpenMP 4 目标结构旨在支持各种加速器。 GCC 7+(参见 12 ,尽管后者尚未更新以反射(reflect) OpenMP 4 GPU 支持)、Clang(参见 345 )和 Cray 提供了对 NVIDIA GPU 的编译器支持。英特尔 C/C++ 编译器中提供了对英特尔 GPU 的编译器支持(参见例如 6 )。

    IBM 为 NVIDIA GPU 开发的 OpenMP 4+ 的 Clang/LLVM 实现可从 https://github.com/clang-ykt 获得。构建配方在 "OpenMP compiler for CORAL/OpenPower Heterogeneous Systems" 中提供。

    Cray 编译器支持 NVIDIA GPU 的 OpenMP 目标。来自 Cray Fortran Reference Manual (8.5) :

    The OpenMP 4.5 target directives are supported for targeting NVIDIA GPUs or the current CPU target. An appropriate accelerator target module must be loaded to use target directives.



    英特尔编译器支持面向 C/C++ 的英特尔 Gen 图形的 OpenMP 目标,但不支持 Fortran。此外,不支持 teamsdistribute 子句,因为它们不是必需的/不合适的。下面是一个简单的示例,展示了 OpenMP 目标功能如何在不同环境中工作。
    void vadd2(int n, float * a, float * b, float * c)
    {
    #pragma omp target map(to:n,a[0:n],b[0:n]) map(from:c[0:n])
    #if defined(__INTEL_COMPILER) && defined(__INTEL_OFFLOAD)
    #pragma omp parallel for simd
    #else
    #pragma omp teams distribute parallel for simd
    #endif
    for(int i = 0; i < n; i++)
    c[i] = a[i] + b[i];
    }

    Intel 和 GCC 的编译器选项如下。我没有为 NVIDIA GPU 设置 GCC,但您可以看到 documentation 以获取相应的 -foffload 选项。
    $ icc -std=c99 -qopenmp -qopenmp-offload=gfx -c vadd2.c && echo "SUCCESS" || echo "FAIL"
    SUCCESS
    $ gcc-7 -fopenmp -c vadd2.c && echo "SUCCESS" || echo "FAIL"
    SUCCESS

    关于multithreading - OpenMP 可以用于 GPU 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28962655/

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