gpt4 book ai didi

c++ - MPI 中 vector 的使用(C++)

转载 作者:可可西里 更新时间:2023-11-01 17:43:21 26 4
gpt4 key购买 nike

我是 MPI 编程的新手,仍在学习,我成功地通过定义结构创建了派生数据类型。现在我想在我的结构中包含 Vector 并希望跨流程发送数据。例如:

struct Structure{

//Constructor
Structure(): X(nodes),mass(nodes),ac(nodes) {

//code to calculate the mass and accelerations
}
//Destructor
Structure() {}

//Variables
double radius;
double volume;
vector<double> mass;
vector<double> area;

//and some other variables

//Methods to calculate some physical properties

现在使用 MPI,我想跨进程发送结构中的数据。我可以创建包含的 MPI_type_struct vector 并发送数据吗?

我尝试通过论坛阅读,但我无法从那里给出的回复中获得清晰的画面。希望我能够得到一个清晰的想法或方法来发送数据

PS:我可以单独发送数据,但如果我们认为域非常大(比如 10000*10000),则使用 MPI_Send/Recieve 发送数据会产生开销

最佳答案

在 MPI 中定义结构是一件痛苦的事情。我认为一种更简单的方法是使用 STL vector 保证具有连续分配的内存这一事实。也就是说,您可以通过获取指向第一个元素的指针来将它们视为 C 数组。

std::vector<float> data;
// ... add elements to your vector ...
MPI_Send(&data.front(), data.size(), MPI_FLOAT, 0, 1, MPI_COMM_WORLD);

关于c++ - MPI 中 vector 的使用(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2546298/

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