Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[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…


Sljedeća stranica »