[PARPRO] 2. laboratorijska vježba - 2021/2022
Daeyarn
Maddy ja saljem stanje u obliku dva integera koji predstavljaju stupce, prvi oznacava potez racunala, a drugi oznacava potez covjeka
feel_d_boot
Ima li netko da je uspija pokreniti onaj njihov exe na lunuxu, nedamisezajebavat s ovim labosom
mmmmDa
iNut sudo apt install wine i onda sam wine x.exe
viliml
rm connect4.exe
g++ -o connect4 main.cpp board.cpp
./connect4
indythedog
indythedog Evo odgovora
Na pitanje možemo li doći isprobati na računalima na faksu koja imaju >8 jezgri, kaže da se može doći ali da imaju samo Windows 7/linux i mpich, tj. pretpostavljam da ovo znači da podržavaju samo C/C++ jer kad sam ga pitao podržavaju li Python kaže da ne. Drugim rječima tough luck za nas koji smo radili u Pythonu/nekom drugom jeziku
Na pitanje kako pokrenuti na više računala, kaže na isti način na koji je pokazao za 1. labos - pokrenemo više procesa na različitim računalima, a da točan način ovisi o konkretnoj MPI implementaciji. Kaže da npr. za microsoft mpi prilikom pokretanja se koristi mpiexec i njegove opcije, pa se u argumentima navedu čvorovi na kojima se pokreće kao IP ili mrežno ime.
Jedino što sam ja mogao naći u vezi toga je ovako nešto https://stackoverflow.com/questions/39709877/mpi-execute-program-on-more-than-one-computer, sama naredba je jednostavna ali se čini da prije toga treba napraviti dosta podešavanja, pa se ovo čini kao jako zeznut način
tldr: tko nije radio u C/C++ i nema komp sa 8 jezgri je u problemima
indythedog
indythedog
Evo nešto što bi trebalo radit:
https://stackoverflow.com/questions/15903408/specify-the-machines-running-program-using-mpi, u kombinaciji sa https://www.cyberciti.biz/faq/ubuntu-linux-install-openssh-server/
Jedina fora je da taj 2. komp na koji se spajate mora imat Linux, ali to se da zaobić korištenjem npr. wsl-a na windowsima ili slično
Bucc
Lukak
indythedog Ja sam odgovarao Lab prosli tjedan. Racunalo mi ima 4 jezgre i nisam nista ekstra radio (jednostavno pokrenuo 8 procesa na 4 jezgre). Prof je pogledao mjerenja, skuzio da nakon 4 nema nekog napretka pa i prokomentirao da ocito imam 4 jezgre i tjt, dobio sve bodove, nisam imao nikakvog problema
Daeyarn
koji bi bio postupak ako posaljemo labos a mjerili smo na racunalu gdje procesor nema 8 jezgri, jel to samo manje bodova ili nam kazu da dodemo u sljedeci termin za pola bodova ili kak
jer nejde mi se sutra u subotu na faks iz drugog grada samo da napravim mjerenja na 8 jezgri
Retard00
Daeyarn napraviš labos sa onolko jezgri kolko imaš i bok. Ak pogledaš na ferku, na predaji zadatka, nikakva mjerenja uopće ni ne treba predat.
[obrisani korisnik]
Daeyarn pa kaj nije rok do 17.?
anon00
Pošaljite mi svoj labos, pokrenem ga na 8 jezgri pa vam pošaljem rezultate 😏
Nocna_smjena
Koliko vremena treba za ovaj labos ako neznam sto radim?
mmmmDa
Nocna_smjena najgori dio je shvatit sta se tocno trazi tak da procitaj ovu i prethodne dvije teme za labos i pogledaj 5. i 6. poglavlje u skripti
viliml
Maddy U MPI možeš slati niz brojeva - tome služi size
poruke. Znači možeš poslati svih N x M
brojeva koji predstavljaju ploču, samo ih treba postaviti sekvencijalno u buffer.
Ja sam kako bih smanjio volumen poruka slao samo niz poteza (indeksa stupaca). Svi procesi na početku pročitaju datoteku sa stanjem ploče i onda kad zaprime novi zadatak odsimuliraju taj prvi dio.
feel_d_boot
viliml koja ti je verzija g++ kompajlera jer meni ovaj tvoj način izbaciva pun k grešaka, neuk sam na ovom polju
Daeyarn
[obrisani korisnik] mislio sam da je sutra dok nije dosla obavijest, my bad
Tompa007
U kojem dijelu treba paralelizirati ovo? Nije mi skroz jasno, jel bi mi zadatak trebao biti provjera dali je trenutno stanje pobjeda odnosno provjera tog stanja na temelju igraca i sljedecih stanja ili kao doslovna provjera dal je ta trenutna tablica pobjednik, i u kojem dijelu treba to paralelizirat?
Recimo ako gradimo stablo do n dubine jel onda gradnja dtabla treba biti paralelizirana ili tek prolazak od dolje do gore treba biti paraleliziran temeljno po dubini, ili negdje skroz drugdje, jel neko pls skuzio kaj se trazi u zadatku nije mi nikako jasno
anon00
𝐓𝐇𝐄 𝐒𝐄𝐂𝐑𝐄𝐓 - 𝐂𝐋𝐔𝐁
Pogledaj ovaj odgovor u mailu sto je profesor napisao anon00
Po tom bi ja rekao da treba napraviti ovako (pa nek me netko ispravi ako je krivo)
Glavni proces uzme trenutno stanje ploce i za njega krene raditi stablo. Na vrhu stabla je čvor koji sadrži trenutno stanje ploce i onda u sljedecoj razini stoji 7 mogucih koraka koje racunalo moze napraviti, a za svaki od tih 7 mogucih koraka ima jos 7 mogucih koraka koje nakon tog covjek moze napraviti (ovo je sad 2. razina stabla). Ovo se vrtilo u glavnom procesu slijedno i sad imas stablo koje ima 2 razine, a u toj drugoj razini imas 49 cvorova - to ces pretvoriti u 49 zadataka koje ces dodjeljivati radnicima, a svaki radnik ce u jednom zadatku slijedno dalje za sebe napraviti podstablo do one razine koja mu je određena parametrom (npr do razine 7).
Dakle glavni proces pocinje kreirati stablo do druge razine gdje ima 49 cvorova - to pretvoris u zadatke i paraleliziras i daš radnicima da za svaki od tih zadataka slijedno izvrše algoritam (prakticki samo trebaju pokrenuti onaj njihov c++ primjer) i vrate ti najbolji rezultat (onaj decimalni broj).
Kad se na toj 2. razini svih 49 radnika izvrši i vrate tu ocjenu onda valjda (slijedno, samo glavni proces) treba odrediti koji je potez najbolji.
Moguce da sam totalno u krivo, ali mi ovo jedino ima smisla
Spuk Pretpostavljam kao i prosli labos - pokreni program i pokazi da radi, zatim komentiraj kod i sto si gdje napravio i zbog cega i jos ce trebati pokazati ona dva grafa (ubrzanje i ucinskovitost)
Spuk
Sta ce se provjeravat kad mi dodjemo na termin labosa? Ocemo tamo morat to izvrtit ili komentirat kod ili sta?
Fikalo
Spuk vjerojatno to a i ove ostale stvari koje su napisane u tekstu zadatka, dokumetacija koja opisuje faze razvoja i grafove ubrzanja i učinkovitosti
Spuk
Fikalo sta ce onda ispitivat jednu osobu pol sata da prodju korz to sve. Pa di je kraj ovom maltretiranju vise
Fikalo
anon00 a kaj s ovim
nisam vidio drugdi da se to spomnje, na ferku se spominju samo grafovi s mjerenjima, je briemo da se i to treba?
BillIK
anon00 Dakle glavni proces pocinje kreirati stablo do druge razine gdje ima 49 cvorova - to pretvoris u zadatke i paraleliziras i daš radnicima da za svaki od tih zadataka slijedno izvrše algoritam (prakticki samo trebaju pokrenuti onaj njihov c++ primjer) i vrate ti najbolji rezultat (onaj decimalni broj).
šta je stvarno ta njihova Evaluate metoda ekvivalentna ovome ((broj_pobjeda_u_dubini_n - broj_poraza_u_dubini_n)/(broj_mogućih_poteza) što nas traži?
Tompa007
anon00 Kolega, VELIKO Hvala