我看到许多函数,如acc_get_num_devices(),需要输入设备类型。我使用了返回devtype=2的int devtype=2。
(在文档化中: acc_get_num_devices( devicetype )返回指定类型的设备数量)
这2意味着什么?有哪些设备类型?设备类型是整数吗?
(在我看来很荒谬,我在文档中找不到这些信息)
发布于 2020-10-07 15:17:48
有关使用规格说明的一般说明,请参阅device_type的2.4节。还请参阅附录A(不是规范的一部分),以了解您可能会遇到的典型设备类型的建议。
device_type用于指定特定的加速器类型,它是实现定义的。因此,可供选择的特定类型将由您正在使用的OpenACC感知编译器定义。
使用PGI编译器实现,device_type的选择应该与-ta=...编译器开关可用的选项相对应。
device_type子句在OpenACC指令上的一种典型用法是(进一步)为特定设备类型对该指令的行为进行条件化。例如,特定的优化(例如选择要使用的向量长度)可以以在特定的device_type上运行为条件。
这里是一个特定的(过时的)示例。根据实际运行的设备类型,device_type用于并行化某个特定循环,或者按顺序运行它。我说它过时了,因为我不认为-ta=radeon是最新版本的PGI OpenACC编译器的受支持配置(在17.x之后)。您可以看到device_type在这个博客和这个博客中使用的另一个例子。
我相信在C/C++中,数据类型是枚举类型,而在Fortran中,数据类型可能是整数。当然,在C/C++中,枚举可能有一个基本的整数关联。与其担心特定实现中特定整数值的含义,不如使用枚举/定义来引用这些值。
https://stackoverflow.com/questions/64241060
复制相似问题