我编写了代码,读取和解析可变数量的.dat文件,并将它们存储到2D向量中,每个文件以分隔的向量表示。现在,我试图利用并行处理(GPU)来对这些向量进行一些计算。然而,对于我来说,许多问题仍然是模棱两可的,如果你能向我澄清这些问题,我将不胜感激。
extent的维度?因为我有基于文件的可变维数。或者我可以声明extent而不声明像concurrency::extent<2> eA;这样的维度--如果不是,还有什么可供选择的呢?array<T,N>时,我是否可以使用T作为泛型类型(例如使用boost::any),因为我的向量是异构的(一些数字和一些文本)?发布于 2013-09-04 07:47:14
1)不可能在运行时设置范围的维度。它是一个模板参数,必须在编译时设置。您只能在运行时设置每个维度的大小。
另一种方法是声明一个一维数组,然后在C++中使用索引偏移量数学手动解压各种维度。
( 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没有进一步描述你的问题,很难提供更多的建议。
https://stackoverflow.com/questions/17204239
复制相似问题