[PARPRO] 1. laboratorijska vježba - 2020/2021
Cvija
Koja je preporuka za jezik i IDE?
Cvija
Ako netko slučajno koristi Ubuntu i VSCode, imao sam problema pa možda bude od pomoći…
Znači, prvo instalirajte openMPI:
$ sudo apt install libopenmpi-dev
U VSCode trebate imati instaliran dodatak:
C/C++ IntelliSense, debugging, and code browsing.
Kada je to sve spremno, stvorite novu datoteku u nekom direktoriju i kopirate neki kod sa službene stranice predmeta (main.c npr.):
#include "mpi.h"
#include <stdio.h>
int main(int argc, char** argv) {
// Initialize the MPI environment
MPI_Init(NULL, NULL);
// Get the number of processes
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
// Get the rank of the process
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
// Get the name of the processor
char processor_name[MPI_MAX_PROCESSOR_NAME];
int name_len;
MPI_Get_processor_name(processor_name, &name_len);
// Print off a hello world message
printf("Hello world from processor %s, rank %d"
" out of %d processors\n",
processor_name, world_rank, world_size);
// Finalize the MPI environment.
MPI_Finalize();
}
Sada bi trebalo sve vezano za mpi biti podcrtano, iduće što bi trebalo napraviti je pokrenuti program (ja sam to napravio Run -> Start Debugging -> C++ GDB/LLDB -> gcc - Build and debug active files) -> to se napravi samo zato da bi se .vscode direktorij stvorio
Kad se on stvori, sve što je u njemu se izbriše i doda se datoteka imena c_cpp_properties.json koja izgleda ovako:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/lib/x86_64-linux-gnu/openmpi/include"
],
"defines": [],
"compilerPath": "/usr/bin/mpicc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
Nakon toga se ide na “Run -> Start debugging -> C++ GDB/LLDB -> mpicc - Build and debug active files”
Kad se završi debagiranje u terminalu se pokrene sljedeća naredba
mpirun -np 5 --oversubscribe ./main
koja bi trebala rezultirati sljedećim ispisom ili sličnom ovome
Hello world from processor ime_racunala, rank 1 out of 5 processors
Hello world from processor ime_racunala, rank 3 out of 5 processors
Hello world from processor ime_racunala, rank 4 out of 5 processors
Hello world from processor ime_racunala, rank 0 out of 5 processors
Hello world from processor ime_racunala, rank 2 out of 5 processors
Nadam se da će nekome bit od pomoći
moukie
U cemu je lakse napravit ovaj labos, Pythonu ili C-u?
Piton skoro da ne znam beknut, C znam onoliko koliko sam ga morao koristit za pipi,asp i nasp ali mi isto definitivno nije prvi izbor
RogerRoger
Ja sam ga krenuo raditi u C++-u i čini se ok zasad.
Pitanje vezano uz zadatak: kao argument mpiexecu predaje se broj filozofa, ali koliko je vilica? Onoliko koliko i filozofa ili dvije? EDIT: nvm opet sam pročitao, vilica je koliko i filozofa.
moukie
Pisem ovo u Pythonu i pokusavam nesto ispisat, uspavat dretvu 10 sec i onda opet nesto ispisat s ovim odsječkom
I to radi kako sam zamislio kada pokrenem program kao najobicniji Python program(tj runnam kod u samo jednom procesu), ali kada pokrenem preko mpiexec-a taj pogram na vise procesa dogada mi se da se prvo odradi cijeli ‘sleep’ i onda ispisuje citav ispis odjednom, ukljucuji i ono sto je trebalo biti prije sleep-a
Kada pokrecem na vise procesa to radim s mpiexec -n 4 python -m mpi4py helloworld.py
Zna li tko zasto se ovo ponasa tako cudno i sta treba napravit?
MsBrightside
moukie sjećaš se kako si popravio?
Ziher
Kako ovo debuggirati (radim u C++)? Meni apsolutno nista ne ispisuje dok pokrenem sa mpiexec -n 4 Philosophers.exe, a dok pokrenem za 5 procesa onda mi izbaci debug assertion failure s apsolutno nikakvim traceom.
Stavio sam kontrolni ispis poslije MPI_Init, ali cak niti to ne ispisuje
Ziher
Ziher Solved: potrebno je flushat output 🤦♂️
Jel vam filozofi vjecno jedu ili samo jednom?
a_ko_si_ti
Ziher Trebaju vjecno jest
Skaxen
Ziher mozes malo pojasniti sto znaci flushati output? isto sam u c++ i ne ispisuje mi nista na terminal sve dok svi procesi ne zavrse.
glider
from mpi4py import MPI
ImportError: DLL load failed: The specified procedure could not be found.
Kako rijesiti ovaj error? Vi koji radite u Pythonu jeste samo preko pipa instalirali mpi4py ili treba još nešto?
moukie
toblerone
probaj ponovno instalirat MPI preko one microsoftove stranice, meni je to rjesilo slican neki error cini mi se taj isti
glider
moukie upalilo je,hvala
Juren
Napravio sam template i upute za izradu labosa u Javi… nadam se da ce pokoristit nekome 🙂
https://github.com/JurenIvan/MPJ-Template
Ziher
Sljedeci tjedan ovo odgovaramo?
Klokan
Ziher mislim da nikome to nije jasno
Noggenfogger
Klokan se to na faksu odgovara ili?
Smolaa
A piše u onoj obavijesti za labos offline provjera pa oni to valjda sami provjeravaju bez odgovaranja
Noggenfogger
Smolaa scimalo me jer sam prije par min vidjela u kalendaru da mi je bio termin danas u pclab haha hvala 🙂
Smolaa
Skaxen samo dodaj << std::flush na svaki std::cout koji imaš
megi7
Smolaa imas ideju kako za c? fflush(stdout) nakon svakog printfa mi ne pomaze…