我目前正在研究openacc API,我想知道是否可以在设备上创建一个数组,而主机上没有任何相应的分配数组。
假设我想使用我的旧的cuda kernel,并且只通过openacc API. 我需要一些仅在设备上使用的 256 个元素的数组。如果我只在主机上声明我的指针而不分配,它们可能有顺序地址。
如果我present_or_create在这些指针上使用了一个子句,我的大小为 256 个元素,我会在设备上以不同的数组结尾吗?或者主机上的连续地址,加上我的数组的长度,会被认为是同一个数组的一部分?
这里是一个例子:指针 A 的地址是 0,指针 B 的地址是 4。
如果我pcreate在A[0:256]and上执行两个操作B[0:256],因为主机上的数据范围是[0 , 1024]and [4 , 1028],我最终会在设备上使用两个不同的 256 个元素数组,还是最终只有一个具有 range 的数组[0 , 1028]?
我是否必须首先在主机上分配我的两个数组以确保有两个不同的数组,或者这种方法应该可以正常工作吗?