在(c++ -AMP)中处理异构向量

processing heterogeneous vectors in (C++-AMP)

本文关键字:处理 异构 向量 c++ -AMP      更新时间:2023-10-16

我已经编写了读取和解析可变数量的。dat文件并将它们存储为2D矢量的代码,每个文件在单独的矢量中。现在,我试图利用并行处理(GPU)来对这些向量执行一些计算。然而,许多问题对我来说仍然是模棱两可的,如果你能给我澄清,我将不胜感激。

  1. 当我声明时,我必须定义extent的尺寸吗?因为我有基于文件的可变维数。或者我可以声明extent而不像concurrency::extent<2> eA;那样声明维数吗?如果不能,有什么替代选择?
  2. 当我声明array<T,N>;我可以使用T作为通用类型(例如使用boost::any),因为我的向量是异构的(一些数字和一些文本)?

1)不可以在运行时设置区段的维度。它是一个模板参数,必须在编译时设置。您只能在运行时设置每个维度的大小。

另一种方法是声明一个一维数组,然后在c++ AMP lambda中使用索引偏移数学手动解压缩各个维度。

2)没有。c++ AMP仅限于GPU可以处理的类型的子集。不能使用boost::any.

c++ amp兼容的函数或lambda只能使用c++amp兼容类型,包括以下内容:

- int
- unsigned int
- float
- double
- C-style arrays of int, unsigned int, float, or double
- concurrency::array_view or references to concurrency::array

不进一步说明你的问题,很难提供更多的建议。