dgesvd
似乎是LAPACKE_dgesvd
,其布局为LAPACK_COL_MAJOR
,但查看dgesvd
和LAPACKE_dgesvd
的示例,似乎还有一个额外的步骤在dgesvd
示例中,查询并分配了最佳工作空间。
假设此步骤是要确定输入矩阵是COL_MAJOR
还是ROW_MAJOR
?
假设一旦找到最佳工作空间,那么这是正确的吗?' dgesvd'内部使用适当的布局调用LAPACKE_dgesvd
?
如果我已经知道COL_MAJOR
的矩阵布局比LAPACKE_dgesvd
使用dgesvd
更好(更快/更便宜)?
答案 0 :(得分:0)
我们这里有两个函数,它们指的是两个不同的接口:
if (($(evt.target).parents('.dropdown-content').length === 0 && $(evt.target).children('.dropdown-content').length === 0 && !$(evt.target).hasClass('dropdown-content') && $(evt.target).parent().children('.dropdown-content').length === 0) || ($(evt.target).parents('.dropdown-content').length > 0 && $(evt.target).parent().prop("tagName") === 'A')) {
详细信息see this。
i. dgesvd : calls fortran interface
ii. LAPACKE_dgesvd : calls C interface
时所注意到的那样,dgesvd
的值设置为lwork
,as documented here仅用于计算-1
的大小。因此,如果您已经知道lwork
的大小,则不需要两次调用它。对于lwork
,输入矩阵必须为LAPACK_COL_MAJOR
,因为这是fortran的默认值。此外,无法计算矩阵是行主要还是列主要。dgesvd
是首先实现的dgesvd
接口。 对于矩阵布局信息see this。这是technical paper for C interface