【问题标题】:OpenACC: DEVICE TYPEOpenACC:设备类型
【发布时间】:2021-01-22 05:36:54
【问题描述】:

我看到很多函数,例如acc_get_num_devices(),需要输入设备类型。我使用了返回 devtype=2 的 int devtype=acc_get_device_type()

(在文档中: acc_get_num_devices( 设备类型 ) 返回指定类型的设备数量)

这个 2 是什么意思?有哪些设备类型?设备类型是整数吗?

(对我来说似乎很荒谬,我在文档中找不到这些信息)

【问题讨论】:

    标签: gpu openacc


    【解决方案1】:

    有关device_type 用法的一般说明,请参阅specification 的第2.4 节。有关您可能会遇到的典型设备类型的建议,另请参阅附录 A(不是规范的正式部分)。

    device_type 用于指定特定的加速器类型,它是实现定义的。因此,可供选择的特定类型将由您正在使用的 OpenACC 感知编译器定义。

    使用 PGI 编译器实现,device_type 的选项应该对应于-ta=... 编译器开关的可用选项。

    在 OpenACC 指令上使用 device_type 子句的典型用法是(进一步)限制特定设备类型的该指令的行为。例如,特定的优化(例如要使用的向量长度的选择)可以在特定的device_type 上运行。

    Here 是一个特殊的(过时的)示例。 device_type 用于并行化特定循环或按顺序运行它,具体取决于您实际运行的设备类型。我说已过时是因为我认为 -ta=radeon 不是最新版本的 PGI OpenACC 编译器(17.x 之后)支持的配置。您可以在this blogthis blog 中看到另一个使用device_type 的示例

    我相信在 C/C++ 中,数据类型是枚举类型,而在 Fortran 中,它可能形式上是整数。自然地,在 C/C++ 中,枚举可能具有底层整数关联。与其担心特定实现中特定整数值的含义,不如使用枚举/定义来引用这些。

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2018-05-06
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 1970-01-01
      • 2016-08-03
      相关资源
      最近更新 更多