在 FORTRAN 中用新列扩展密集矩阵的最有效方法是什么?
说 T 是一个密集矩阵 m x n
我想把它变成 n+1 的 m。我可以想到的一种策略:在每一步重新分配并分配最后一列,还是有一些更好的方法,例如在之前分配一些空间并检查是否足够,如果没有,则进行重新分配之类的事情?有任何想法吗?
假设m
并且n
在某种意义上不是非常大,以便您的矩阵适合内存并且您所追求的是及时的性能,我会分配一个大矩阵并分别存储实际大小。例如,这就是 BLAS 库用作“领先维度”的内容。然后,当您需要添加列时,检查您的实际大小是否仍小于最大大小,并在必要时重新分配内存。
如果您有 Fortran 2003 编译器,则可以使用 move_alloc: http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/fortran/lin/compiler_f/lref_for/source_files/rfmvallo 。 htm