Pozdrav,

Izvinjavam se zbog kasnog odgovaranja. Želeo sam tokom prethodne nedelje da namestim dual boot konfiguraciju, da bih mogao da koristim i Linux, pa sam odlagao da započnem sa radom i odgovaram na mejlove dok to ne uradim. Međutim, čini se da ću morati da ostanem samo na Windows-u još neko vreme.

CERN je bio sjajno iskustvo. Radio sam na razvoju VecGeom biblioteke za simulaciju geometrije detektora čestica. Na kraju borvka sam napisao i izveštaj, u kome možete naći i više detalja o mom delu posla.

U suštini, simuliraju sudare čestica sa raznim strukturama. Taj posao zahteva vrlo mnogo resursa i vremena, pa pokušavaju da paralelizuju sva izračunavanja koliko god mogu. Trenutno se trude da to postignu tako što će prilagoditi svoj kod radu na GPU. Da bi simulirali razne oblike, ranije su koristili zapreminske modele (simulirali bi ceo cilindar, kocku, nepravilno telo kao jedinstvenu strukturu), međutim oni izazivaju dosta divergencije u paralelnom radu. Zato sad prevode ove zapreminske modele u površinske, gde će svako telo razložiti na više manjih površina. To bi trebalo da pojednostavi jednačine koje se rešavaju i smanji divergenciju pri pokretanju koda na GPU.

Što se samog CERN-a tiče, mesto je prelepo. Kompleks je ogroman, i potrebno je više od pola sata da se prešeta "naselje" u kome sam ja bio. Postoji više takvih "naselja" koja su raspoređena širom akceleratorskog prstena, i za njihov obilazak bili bi potrebni sati. Priroda oko laboratorija je predivna, negovana i čista. U daljini se, preko planina, može videti i Mont Blanc kada je vreme lepo. Zanimljivo mi je bilo što plaćaju pastirima da dovedu ovce do laboratorija i pasu travu po CERN-u, da ne bi morali mašinski da kose travu.

Ljudi tamo su me oduševili. Moj mentor je bio izuzetno posvećen i ažuran, i mnogo sam naučio od njega. Iznenadilo me je koliku mi je autonomiju u radu dao, nije mi postavio bilo kakva ograničenja - samo generalni cilj ka kome treba da idem. U početku mi je ovo bilo čudno, ali sam se vremenom navikao i dosta oslobodio u programiranju.

Imao sam odlično društvo, kako iz komšijskih zemalja, tako i iz dalekog inostranstva. Zaista je bilo uživanje provoditi vreme sa tim ljudima, svim visoko motivisanim, vrednim i sposobnim, a opet uvek spremnim za dobar provod. I stariji su, takođe, bili jako interesantni. Desilo se da mi, tokom prezentacije mog projekta, jedan čovek postavi pitanje za typesafe alternativu za switch strukturu u C++. Uvek sam mislio da dobro i detaljno poznajem C++, no njegovo pitanje uopšte nisam ni razumeo, pa je moj mentor odgovorio umesto mene. Ispostavilo se da je čovek koji je postavio pitanje u timu za postavljanje standarda C++ i da me je pitao za nešto što su u jezik ubacili u poslednjoj verziji. Desilo mi se prvo u Petnici, pa na fakultetu, a najskorije u CERN-u, da me oduševi količina znanja koju ljudi oko mene imaju.

Sve su šanse da ću ponovo otići u CERN sledećeg leta, pošto mi je menor ponudio da se opet vratim. Trenutno mi se ne sviđa ideja da tamo živim i radim za stalno. Švajcarska je, iako prelepa, prilično sterilna, i mnogo su mi draži ljudi koje znam u Srbiji. Ipak, biće mi drago ako nastavim tamo da radim po par meseci godišnje.

Hteo sam da se ponovo zahvalim što ste me primili na ovaj projekat. Jako mi je zabavno da radim naučno programiranje. Mentor mi je rekao da me je pozvao jer je video da sam radio na QGHG, tako da bez rada na Institutu ne bih imao priliku da vidim ni CERN.

Pozdravi,
Dušan


On 27-Sep-22 8:26 PM, Marko Vojinovic wrote:

Pozdrav Dusane i Nenade (i ostali),

Evo tekuceg statusa koji zadaci su uradjeni a koji nisu:

1-5:   done
6:     in progress
7:     done
8:     to do
9:     in progress
10:    done (for the moment)
11-13: done
14:    to do
15-23: to do
24:    to do
25-32: to do

Formulacije svih zadataka imate na arhivi mailing liste [1,2,3].

Neki zadaci su reseni, Jaroslav privodi kraju kostur za gui (zadaci 6 i 9), a neresene zadatke mozemo da grupisemo u dva "paketa" zadataka, i tri samostalna zadatka:

 * Paket 15-23 je posvecen Pachner-ovim potezima (u D=2,3,4). Zadatke za Pachner-a za proizvoljno D nisam jos precizno formulisao --- imamo samo one fotke sa table kada sam Nenadu objasnjavao konceptualno kako radi Pachner u proizvoljnoj dimenziji (treba da ih posaljem na listu), ali to sve je skica, treba bolje i preciznije da se formulisu ti zadaci.

 * Paket 25-32 je posvecen crtanju kompleksa na ekran, i implementaciju svega toga uskoro treba da uradimo jer je Jaroslav maltene pri kraju sa konstrukcijom kostura za gui i uskoro ce doci vreme da se taj kostur "popuni mesom", tj. rutinama iz biblioteke i da pocne zaista da "radi" (Jaroslav je namestio maltene svu funkcionalnost elemenata gui-ja, ali se jos uvek ne radi nista sa bibliotekom tj. realnim podacima).

  * Tri "samostalna" zadatka su --- 8 (ucitavanje kompleksa iz fajla), 14 (kacenje novog simpleksa na granicu postojeceg kompleksa), i 24 (dodavanje topology parametra u SimpComp klasu). Ova tri zadatka vec duze vreme cekaju na resavanje, a nisu deo neke vece grupacije zadataka.

Moj predlog za Dusana je da proba da uradi prvo ova tri samostalna zadatka, 8, 14 i 24, za zagrevanje. Posto je vec svojevremeno lepo uradio zadatak 7 (snimanje kompleksa u fajl), zadatak 8 je prirodno vezan za istu tu temu, a 14 i 24 su nezavisni od onih paketa, i mogu da posluze kao dobro zagrevanje za pakete.

Zatim je ideja da se i Dusan i Nenad koncentrisu na resavanje dva paketa, jer to u principu treba da imamo gotovo kad budemo krenuli da povezemo biblioteku sa gui-jem. Neki okvirni plan je da gui "progleda" do kraja godine, a gornja dva paketa zadataka nisu mali posao, pa imajte to na umu.

To je otprilike presek dokle smo stigli i sta nas jos ceka za ovu godinu.

Naravno, ne zelim da vam ja pravim raspored ko ce sta da radi, svako neka uzme sta mu je zanimljivo, ali ovo gore je neka prirodna podela zadataka po smislu, pa imajte to u vidu.

Btw, Dusane, sta se desilo sa tvojim kolegom Nikolom, jel' on jos tu, i jel' zainteresovan da ucestvuje u ovome, ili ne? I drugo, kako je bilo u CERN-u, kakvi su ti utisci? Mozes da sastavis jedan e-mail za nas ostale, da nam prepricas sta si tamo radio, kako sta i na kom nivou rade programeri tamo, i generalno sta si pokupio od znanja i iskustva odande... Mislim da bi nas sve zanimalo da cujemo o tome, pa 'ajde sastavi neki neformalni report o svom boravku u CERN-u, i posalji ga na listu... ;-)

:-)
Marko

[1] http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/2022-February/date.html
[2] http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/2022-March/date.html
[3] http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/2022-April/date.html


Dr. Marko Vojinovic
Group for Gravitation, Particles and Fields
Institute of Physics
University of Belgrade
======================
home page: www.markovojinovic.com
e-mail:    vmarko@ipb.ac.rs



On Mon, 26 Sep 2022, Nenad Korolija wrote:

Zdravo Dušane,

Odlično!
Ovaj zadatak je urađen.
Možeš da baciš pogled na 4 funkcije:
collect_vertices sakuplja vertices u set<KVertex*>.
// Finds a k-simplex with given vertices, if exists:
KSimplex* SimpComp::find_vertices(set<KSimplex*> &s){
build_simplex_one_level_up
seed_single_simplex_or_sphere (generalna).

Za još dosta zadataka imam ideju kako ih rešiti (prodiskutovane sa Markom), pa ako se odlučiš za neki, možemo da budemo na vezi (najverovatnije će nam se ideje preklapati) kako bi svi
ispratili šta kako radimo, jer nam to može značiti za dalje.

Marko, možda bi bilo previše, mada najkorisnije, da radi generalni Pachner-ov potez? Ali ako pređe par zadataka, verovatno će biti uhodan u strukture i funkcije koje već postoje na
raspolaganju.

Pozdrav,
Nenad

On Mon, Sep 26, 2022 at 6:12 PM Dusan Cvijetic <dusancvijetic2000@gmail.com> wrote:
      Pozdrav svima,

      Završene su mi obaveze, pa bih preuzeo sad ovaj zadatak da radim.
      Potvrdite mi samo da ovo nije već odrađeno.

      Pozdravi,
      Dušan

      On 11-Feb-22 10:44 PM, Marko Vojinovic wrote:
      >
      > Implementirati seed f-ju za jedan D-simpleks (za proizvoljnu dimenziju
      > D):
      >
      >   SimpComp* seed_single_simplex( int D );
      >
      >   Input: dimenzija D (pozitivan ceo broj).
      >   Output: pointer na instancirani simplicijalni kompleks koji se
      > sastoji od jednog D-simpleksa.
      >
      > Ova f-ja predstavlja opsti slucaj f-ja seed_single_edge(),
      > seed_single_triangle() i seed_single_tetrahedron(), koje rade isti
      > posao za D=1,2,3. Postupak i ovde ide u tri glavna koraka:
      >
      > (1) Instancirati nov simplicijalni kompleks zadate dimenzije D i
      > metodom create_ksimplex() kreirati simplekse svih nivoa od k=0 do k=D.
      > Broj simpleksa datog nivoa k je jednak "D+1 nad k+1" (broj kombinacija
      > k+1-vog reda od D+1 elemenata), tj. (D+1)! / ( (k+1)! (D-k)! ).
      > Specijalno, ukupan broj verteksa (k=0) je D+1.
      >
      > (2) Popuniti podklasu neighbors svakog simpleksa pointerima na njegove
      > susede, koristeci add_neighbor(). Za slucaj proizvoljnog D-simpleksa
      > ne mozemo da se oslonimo na sliku, vec se mora implementirati
      > algoritam za prepoznavanje suseda (vidi nize).
      >
      > (3) Simpleksima nivoa k = D-1 dodeliti boju boundary, i za svaki
      > simpleks zadati vrednost boje na true.
      >
      > Algoritam za odredjivanje da li je dati n-simpleks podsused datog
      > k-simpleksa se realizuje na sledeci nacin:
      >
      > (2.1) Prvo se za svaki k-simpleks (k>0) zadaju njegovi susedi nivoa
      > k=0 (verteksi). Posto u celom kompleksu imamo tacno D+1 verteksa,
      > svaki k-simpleks ima tacno "D+1 nad k+1" razlicitih verteksa, po
      > definiciji D-simpleksa. Drugim recima, treba birati redom svaku
      > kombinaciju k+1-ve klase od D+1 verteksa, i dodeljivati ih kao susede
      > nivoa k=0 redom svakom k-simpleksu (jedna kombinacija u jedan
      > k-simpleks, tako da ne postoje dva k-simpleksa sa istim skupom 0-suseda).
      >
      > (2.2) Kada je korak (2.1) zavrsen, mozemo da odgovorimo na pitanje da
      > li je dati n-simpleks podsused datog k-simpleksa (n<k), tako sto
      > proverimo da li su svi 0-susedi n-simpleksa istovremeno i 0-susedi
      > k-simpleksa. Ako jesu, onda je n-simpleks podsused k-simpleksa, a ako
      > postoji makar jedan verteks koji pripada n-simpleksu a ne pripada
      > k-simpleksu, onda nije podsused.
      >
      > Koristeci kriterijum (2.2), za dati k-simpleks prodjemo kroz sve
      > n-simplekse 0<n<k, i one koji ispune kriterijum stavimo u pod-susede
      > k-simpleksa nivoa n, i takodje u n-simpleks stavimo k-simpleks kao
      > nad-sused nivoa k. Ovo ponoviti za sve k-simplekse 1<k<=D.
      >
      >
      > :-)
      > Marko
      >
      >
      > Dr. Marko Vojinovic
      > Group for Gravitation, Particles and Fields
      > Institute of Physics
      > University of Belgrade
      > ======================
      > home page: www.markovojinovic.com
      > e-mail:    vmarko@ipb.ac.rs
      >
      >
      --
      QGHG-it-dev-list mailing list
      QGHG-it-dev-list@ipb.ac.rs
      http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list