我有一个可以接受一维数组的函数(double[]
)作为参数,而我的源数据是一个二维数组(double[,]
) 的 'cnt' 3d 点数量,就像这样
double[,] points = new double[3,cnt]
但我真正想做的是将三个第二个暗淡数组中的每一个传递给函数gpu.Average(double[] arg)
,最好不必按 value[i] 复制数组 value[i] 的内容。这在 C# 中可能吗?
示例代码
这有效:
double[] points1d = new double[cnt];
// ... fill points1d with data, then
double a = gpu.Average(points1d); // <- Alea.gpu.Average() accepts a 1d array
但正如所说,我想将第二个维度传递给函数 gpu.Average() ,而不必运行 for 循环三次来复制到一维数组中:
double[,] points2d = new double[3,cnt];
// ... fill points2d with 'cnt' items of data and
// then pass it on
double x = gpu.Average(points2d[0,??]); // How to pass on 2nd dim?
double y = gpu.Average(points2d[1,??]);
double z = gpu.Average(points2d[2,??]);
这是否可能无需将数据复制到一维数组中?
(顺便说一句,计算平均值并不是 GPU 并行库的一个很好的使用示例,这只是一个比较不同数据类型和结构的执行时间的测试用例)。
// Rolf