【发布时间】:2014-06-10 17:32:36
【问题描述】:
我正在寻找这样的东西:
fmat A = randu<fmat>(4,5);
float **a = A.to_array(); // Return matrix as float**
有人知道如何在Armadillo 中做到这一点吗?
【问题讨论】:
-
双指针(例如
float**)是 C++ 从 C 继承的最糟糕的东西之一。最好不要在任何新代码中使用此类功能。这是不安全的,需要大量的样板代码才能正确跟踪。如果不使用它,你会省去很多麻烦。如果您需要传递数据,最好传递对fmat对象的引用。例如,void fn(const fmat& A) -
嗨@mtall,我之所以使用它是因为我想将原始矩阵传递给一个需要
float**的CUDA函数。 -
如果您想要基于 GPU 的矩阵乘法,请使用带有 nvBLAS 的 Armadillo,而不是标准的 BLAS。一般来说,使用 GPU 进行矩阵乘法只对大于 5000x5000 的矩阵大小有用。