在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不适用(参见这个问题)