определить структуру MPI с оператором упорядочения & lt; в переполнении стека

У меня есть структура для сериализованной программы, которую я хочу распараллелить с MPI. Я использую MPICH. Моя программа использует < оператор на стуркте для создания карты idДля вершин, поэтому для создания карты такого же типа мне нужно сохранить этот оператор в моей структуре.

struct Vertex{
int id;
int degree;
double credit;
bool operator <(const Vertex& x) {return this->id < x.id;}
};

Мне нужно знать, как переопределить эту структуру с типом данных MPI. Пока у меня есть это …

  MPI_Datatype vertex_type, oldtypes[3];
int blockcounts[4];
MPI_Aint offsets[4], extent_int, extent_double,
lower_bound_int, lower_bound_double;

offsets[0] = 0;
oldtypes[0] = MPI_INT;
blockcounts[1] = 1;

MPI_Type_get_extent(MPI_INT, &lower_bound_int, &extent_int);
offsets[1] = extent_int;
oldtypes[1] = MPI_INT;
blockcounts[1] = 1;

offsets[2] = 2*extent_int;
oldtypes[2] = MPI_DOUBLE;
blockcounts[2] = 1;

MPI_Type_get_extent(MPI_DOUBLE, &lower_bound_double, &extent_double);
offsets[3] = 2*extent_int + extent_double;
oldtypes[3] = MPI_Aint;
blockcounts[3] = 1;

MPI_Type_create_struct(4, blockcounts, offsets, oldtypes, &vertex_type);
MPI_Type_commit(&person_type);

Я не думаю, что это правильный способ определения оператора в структуре MPI. Я искал документацию по этому поводу, но не смог найти ничего полезного.

https://linux.die.net/man/3/mpi_double
https://www.rc.colorado.edu/sites/default/files/Datatypes.pdf

Есть ли способ, которым я могу дать моей структуре MPI указатель на Vertex < оператор?

0

Решение

Мой вопрос недействителен. Нет необходимости передавать оператор в MPI, потому что MPI связан с передачей данных, а не функций.

Спасибо за ваши комментарии.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]