gpt4 book ai didi

mpi - 我什么时候应该使用 MPI_Datatype 而不是手动序列化?

转载 作者:行者123 更新时间:2023-12-04 05:15:33 25 4
gpt4 key购买 nike

当我需要 MPI_Bcast 一个 64 位整数时,一切就开始了。由于 MPI 不知道如何处理它,我做了:

template<typename T>
inline int BcastObjects(T* pointer,
int count,
int root,
MPI_Comm comm)
{
return MPI_Bcast(pointer,
count * sizeof(*pointer),
MPI_BYTE,
root,
comm);
}

现在我可以这样做:
int64_t i = 0;
BcastObjects(&i, 1, root_rank, some_communicator);

然后我开始使用 BcastObjects 发送一个结构数组。我想知道这样做是否可以?

关于 MPI_Datatype 的手册侧重于如何做,而不是我为什么要这样做。

最佳答案

为什么不直接使用 MPI_INT64_T ?

你总是可以用 MPI_Byte 模拟你自己的数据类型或者你有什么;数据类型的东西在那里,所以你不必。在许多情况下,这要容易得多;如果您想发送其中有“漏洞”的数据(例如,多维数组的一部分,具有间隙的结构中的数据),您可以使用数据类型将其直接映射出来,而您必须手动计算字节字符串并使用类似 MPI_Pack 的内容否则。当然,如果数据结构中的某些内容发生变化,则在更高级别描述数据肯定不会那么脆弱。

关于mpi - 我什么时候应该使用 MPI_Datatype 而不是手动序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14323951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com