Jestem nowicjuszem w programowaniu MPI, uczeniu się przez stiil, odniosłem sukces do tworzenia pochodnych typów danych poprzez definiowanie struktur. Teraz chcę włączyć wektor w mojej strukturze i chcę wysłać dane w całym procesie. na przykład:Wykorzystanie wektorów w 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
Teraz za pomocą MPI chcę wysłać dane w strukturze przez procesy. Czy możliwe jest tworzenie wektorów MPI_type_struct i przesyłanie danych?
Próbowałem czytać na forach, ale nie jestem w stanie uzyskać klarownego obrazu z podanych tam odpowiedzi. Mam nadzieję, że będę w stanie uzyskać jasny pomysł lub podejście do wysyłania danych. PS: mogę wysyłać dane indywidualnie, ale jest to obciążenie związane z wysyłaniem danych za pomocą może MPI_Send/Recieve, jeśli uznamy domenę za bardzo dużą (powiedzmy 10000 * 10000)
Dziękuję za szybką odpowiedź, problem tutaj chcę wysłać całą strukturę w tym samym czasie zamiast wysyłania pojedynczej zmiennej wektorów i innych typów danych, zmniejszając w ten sposób narzut komunikacji między procesami ... i mam 10 wektorów do być wysyłane przez komunikację .... stąd prowadzi to do powolnego czasu obliczeń i tam, zmniejszając wydajność – lsk1985
@ lsk1985, OK Nie jestem wystarczająco doświadczony z MPI, aby być bardzo pomocny. Przepraszam. Po prostu staram się unikać wysyłania wskaźników pomiędzy procesami (zamiast danych, które wskazują). –
Jeśli masz tablicę wskaźników, utwórz MPI_Type_hindexed, który jest wierszem bloków, z przesunięciem wyrażonym w bajtach. Wystarczy trochę arytmetyczna adresu. –