Я не уверен, что ваши структуры будут работать так, как вы собираетесь здесь, но я могу поделиться своим опытом с отправкой структур с помощью MPI_Send.
Вместо создания явного типа данных MPI можнопросто отправьте саму структуру, так как все ее содержимое находится в непрерывном фрагменте памяти.Хитрость заключается в предоставлении правильного размера и типа данных для операции MPI_Send.
Используя ваши структуры, вот что я делал в прошлом (предполагая, что переменная vertex_list list
уже была определена):
MPI_Send(&list, sizeof(vertex_list), MPI_BYTE, <rankToSendTo>, <tagInteger>, <comm>);
Таким образом, буфер данных для отправки является указателем на структуру списка, размер буфера - это размер vertex_list в байтах, а тип данных MPI - просто байты.
На принимающей сторонеВам просто нужно предоставить ссылку на vertex_list в качестве получающего буфера:
vertex_list receiveList;
MPI_Recv(&receiveList, sizeof(vertex_list), MPI_BYTE, <rankOfSender>, <tagInteger>, <comm>, <status>);
Надеюсь, это поможет!