我编写的代码可以读取和解析可变数量的.dat文件,并将它们存储到2D向量中,每个文件都用分开的向量。现在,我正在尝试利用并行处理(GPU)来对这些向量执行一些计算。然而,许多询问对我来说仍然含糊不清,如果你能向我澄清,我会很感激。
extent
尺寸?因为我有基于文件的可变维数。或者我可以声明extent
而不声明concurrency::extent<2> eA;
这样的维度,如果没有,那么什么是替代选项? array<T,N>
时;我可以使用T
作为通用类型(例如使用boost::any
),因为我的向量是异构的(某些数字和某些文本)?答案 0 :(得分:3)
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
如果没有进一步描述您的问题,很难提供更多建议。