在Fortran程序中,我需要计算几个表达式,例如M · v,M T · v,M T · M,M · M T等。在这里,M和v是小尺寸(较小的2D和1D数组)大于100,通常为2-10)
我想知道MATMUL(TRANSPOSE(M),v)
在编译时编写的代码是否可以像MATMUL(N,v)
在N
显式存储为的代码中一样高效地展开N=TRANSPOSE(M)
。我对带有“强”优化标志(例如-O2,-O3或-Ofast)的gnu和ifort编译器特别感兴趣。
我知道 a 的存储std::vector<bool>
不一定是 bool 数组。
如果我想发送接收存储在 a 中的 int 数据std::vector<int>
,我会使用MPI_Send(vect.data(),num_of_ints,MPI_INT,dest_rk,tag,comm)
.
我应该如何使用MPI_Send
发送std::vector<bool>
?尤其 :
vect.data()
缓冲区的指针吗?MPI_CXX_BOOL
不适用(参见这个问题)