Xeon Phi Programming 中 nocopy 子句的含义

Meaning of nocopy clause in Xeon Phi Programming

我是 Xeon Phi Programming 的新手,我目前正在尝试学习显式卸载编程...我一直在学习英特尔提供的某些教程,但我无法正确理解 nocopy 子句,如果有人知道,请尝试通过举例说明它在不同场景中的用法,如果您能向我介绍网络上的任何交互式教程,将对我有很大帮助。

对于默认的#pragma offload,会发生以下五件事:

  1. 在 Xeon Phi
  2. 上分配 space
  3. 将数据移至 Xeon Phi
  4. 做数学
  5. 从 Xeon Phi 移动数据
  6. 释放分配的缓冲区

nocopy 子句告诉 pragma 跳过第 2 步和第 4 步。

一个用例是当您进行异步卸载时。

在第一代 Xeon Phi 的 PCIe 或第二代 Xeon Phi 的结构中移动数据有延迟,尤其是对于大型阵列。如果您可以在执行卸载传输的同时在主机上执行其他操作,效率会更高。

异步卸载是当您结合使用#pragma offload_transfer 和#pragma offload 来只移动数据而不计算,以及#pragma offload 来进行计算,当然,在两个编译指示之间做一些事情你的主机。

您为#pragma offload 指定了 nocopy 子句,因为您已经使用第一个#pragma offload_transfer.

将数据传输到 Xeon Phi