Я новичок в программировании MPI, учебе stiil, я был успешным до создания производных типов данных, определяя структуры. Теперь я хочу включить Vector в свою структуру и хочу отправить данные в Process. например:Использование векторов в MPI (C++)
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 и отправил данные?
Я пробовал читать через форумы, но я не могу получить четкое изображение из ответов, представленных там. Надеюсь, что я смогу получить четкое представление или подход к отправке данных.
PS: я могу отправлять данные по отдельности, но его накладные расходы на отправку данных можно использовать в MPI_Send/Recieve, если мы рассмотрим домен очень большой (10000 * 10000)
Спасибо за быстрый ответ, проблема здесь я хочу отправить всю структуру за один раз вместо отправки одной переменной векторных и других типов данных, тем самым уменьшая коммуникационные издержки между процессами ... и у меня есть 10 векторов для быть отправлен для общения .... следовательно, это приводит к медленному времени вычислений и там, уменьшая эффективность – lsk1985
@ lsk1985, ОК. Я недостаточно опытна с MPI, чтобы оказать вам большую помощь. Сожалею. Я просто буду стараться избегать отправки указателей между процессами (вместо данных, на которые они указывают). –
Если у вас есть массив указателей, создайте MPI_Type_hindexed, который представляет собой строку блоков, с смещением, выраженным в байтах. Это требует лишь небольшой арифметики адресов. –