在FORTRAN中使用新列扩展密集矩阵的最有效方法是什么?
假设T是密集矩阵m乘以
我想用n + 1来制作它。 我能想到的一个策略:在每个步骤重新分配并分配最后一列或者是否有更好的方法,例如之前分配一些空间并检查是否足够,如果没有重新分配的东西?有什么想法吗?
答案 0 :(得分:2)
假设m
和n
在某种意义上不是很大,所以你的矩阵适合记忆,而你所追求的是及时表现,我会做什么我会分配一个大矩阵并分别存储实际大小。例如,这就是BLAS库用作“领先维度”的原因。然后,当您需要添加列时,检查实际大小是否仍小于最大大小,并在必要时重新分配内存。
答案 1 :(得分:1)
如果您有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