oneAPI GPU 优化指南 - OpenMP 部署调优指南 - OpenMP 指令

本章节翻译by chenchensmail@163.com  原文:OpenMP Directives (intel.com)

Intel® 编译器, icx、 icpx 和 ifx 支持各种 OpenMP 指令,用于控制计算的部署 和数据映射到设备。这些包括:

  • target

  • teams

  • distribute

  • target data

  • target enter data

  • target exit data

  • target update

  • declare target

  • dispatch

target 构造指定代码的特定部分在设备上执行, 以及如何将数据映射到设备。

teams 构造创建多个线程组,每个组 由一个主线程和多个工作线程组成。 如果 teams 没有指定 num_teams 子句, 则团队数量由实现定义。

distribute 构造将循环的迭代分配给各个团队的主线程, 因此每个主线程执行迭代的子集。

target data 构造将变量映射到设备数据环境。 根据任何 map 子句,变量在 target data 区域的范围内进行映射。

target enter data 指令指定变量映射到设备。 使用此指令时, map 子句中指定的映射类型 必须为 to 或 alloc

target exit data 指令指定变量从设备上 unmapped。 使用此指令时, map 子句中指定的映射类型必须为 fromrelease 或 delete

target update 指令根据指定的 motion 子句 使设备上变量的值与其原始主机变量一致。

declare target 指令指定变量、函数 (C、C++ 和 Fortran )和子程序( Fortran )映射到设备。

declare variant 指令声明基础函数的专用变体, 并指定使用该专用变体的上下文。

dispatch 构造控制给定函数调用是否发生变体替换。

map 子句确定原始主机变量如何映射 到设备上的相应变量。映射类型包括:

  • to:在进入 target 区域时,

    原始主机变量的值被复制到设备上。

  • from:在退出 target 区域时,

    设备上的变量值从设备复制到原始主机变量。

  • tofrom:在进入 target 区域时,

    原始主机变量的值被复制到设备上, 并在退出 target 区域时复制回主机。

  • alloc:在设备上分配原始主机变量的

    未初始化副本(值不从主机复制到设备)。

指令可以组合。例如,可以使用以下组合指令:

  • target teams

  • target teams distribute

  • target teams distribute parallel for

  • target teams distribute parallel for simd

建议尽可能使用组合指令, 因为它们允许编译器和 runtime 决定如何最好地将部署循环的迭代划分 以便在 GPU 上执行。

 上一章                                    主目录​​    上级目录                                                               下一章

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值