Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. Proces 2 treba poslati posljednji element polja decimalnih brojeva naziva abc od 5 elemenata svim ostalim
- procesima unutar komunikatora COMM_WORLD. Procesi koji dobiju navedeni element polja trebaju taj
- element pohraniti na istu memorijsku lokaciju kao i na procesu 2. Koji je ispravan način da se to učini?
- Obrazložite (i ispravne i neispravne).
- - MPI::COMM_WORLD.Broadcast(&abc[4], 5, MPI::FLOAT, 1)
- Neispravan način zbog neispravnog naziva funkcije, pogrešnog broja količine podataka.
- - MPI::COMM_WORLD.Bcast(abc+4, 1, MPI::FLOAT, 1)
- Neispravan način zbog pogrešne oznake procesa.
- - MPI::COMM_WORLD.Broadcast (&abc[4], 1, MPI::FLOAT, 2)
- Neispravan način zbog neispravnog naziva funkcije i pogrešne oznake procesa.
- - MPI::COMM_WORLD.Bcast(abc+5, 1, MPI::FLOAT, 2)
- Neispravan način zbog slanja elementa koji je izvan granica polja i pogrešne oznake procesa.
- - MPI::COMM_WORLD.Bcast(&abc+4, 1, MPI::FLOAT, 2)
- Ispravan način.
- 2.
- #include <iostream>
- #include <mpi.h>
- using namespace std;
- int main(int argc, char* argv[])
- {
- int vectorSize;
- float prosjek = 0;
- int *vector;
- int velicina_spremnika;
- int *vector_spremnik;
- float decNumber;
- MPI::Init(argc, argv);
- int rang = MPI::COMM_WORLD.Get_rank();
- int velicina = MPI::COMM_WORLD.Get_size();
- int maticni_proces = 0;
- if(rang == maticni_proces) {
- cout << "Velicina vektora: ";
- cin >> vectorSize;
- velicina_spremnika = vectorSize/velicina;
- vector = new int[vectorSize];
- vector_spremnik = new int[velicina_spremnika];
- for(int i = 0; i < vectorSize; i++) {
- cin >> vector[i];
- }
- cout << "Decimalni broj: ";
- cin >> decNumber;
- }
- MPI::COMM_WORLD.Barrier();
- MPI::COMM_WORLD.Bcast(&decNumber, 1, MPI::FLOAT, maticni_proces);
- MPI::COMM_WORLD.Bcast(&velicina_spremnika, 1, MPI::INT, maticni_proces);
- MPI::COMM_WORLD.Scatter(vector, velicina_spremnika, MPI::INT, vector_spremnik, velicina_spremnika, MPI::INT, maticni_proces);
- for(int i = 0; i < velicina_spremnika; i++) {
- vector_spremnik[i] *= decNumber;
- }
- MPI::COMM_WORLD.Barrier();
- MPI::COMM_WORLD.Gather(vector_spremnik, velicina_spremnika, MPI::INT, vector, velicina_spremnika, MPI::INT, maticni_proces);
- // MPI::COMM_WORLD.Reduce(&vector[rang], &prosjek, 1, MPI::INT, MPI::SUM, maticni_proces);
- if(rang == 0){
- cout << "Vektor:"<<endl;
- for(int i = 0; i < vectorSize; i++) {
- cout << vector[i] << endl;
- prosjek += vector[i];
- }
- cout << "Prosjek: "<< prosjek/vectorSize << endl;
- }
- //MPI::COMM_WORLD.Barrier();
- /*
- if(rang == 0) {
- cout << "Velicina vektora: ";
- cin >> vectorSize;
- vector = new int[vectorSize];
- for(int i = 0; i < vectorSize; i++) {
- cin >> vector[i];
- }
- cout << "Decimalni broj: ";
- cin >> decNumber;
- }
- */
- MPI::Finalize();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement