【发布时间】:2023-04-01 07:30:01
【问题描述】:
所以在MATLAB 中,如果我创建一个N x N x N x N x 6 维矩阵,我可以将值分配给6 个一组的矩阵,如下所示:
myMatrix(1,1,1,1,:) = [69, 3, 864, 21, 95, 20];
是否有类似的方法可以在 C++ 中以 6 个为一组写入 N x N x N x N x 6 维矩阵?
另外,有没有类似的方法来设置 6 个元素等于另外 6 个元素,即 myArray(N,N,N,8,:) = myArray(N,N,N,6,:)?
(请不要使用 std::vector 解决方案 - 需要将矩阵保持为数组形式,因为现有代码是使用 c++/CUDA 为数组构建的,并且非常复杂)
【问题讨论】:
-
您可能想澄清为什么不能使用
stl解决方案。 -
您是否希望它适用于您现在使用的任何数据类型(数组),或者您可以用不同的数据类型替换它,只要矩阵元素存储在连续的内存中?
-
数组高度首选,因为我是一个菜鸟编码器,我熟悉它们
-
不使用
stl的一种方法是使用表达式模板,请参阅Implementing Matlab's colon : operator in C++ expression templates class。您不妨看看BlueBird library,它使用 CUDA 实现了表达式模板。 -
对于那些提议使用
stl的人:CUDA内核代码不支持stl。见Using std::vector in CUDA device code 和Does CUDA 5 support STL or THRUST inside the device code?。
标签: c++ arrays matlab matrix cuda