sens
g/CozienaProfdyuktywnoscINfrmtyczn

Dzień dobry, zapraszam na prezentację o tym, jak się spawnuje wątki w języku Julia

Od razu muszę zaznaczyć, że chociaż wygląda to dość dziwnie, nawet jak na paradygmat funkcyjny, to zaskakująco wszystko jest bardzo zmyślnie zaprojektowane. Całkiem spoko język. Jak lubicie robić wykresy na przykład, to polecam wypróbować.

https://i.imgur.com/V9UlTT9.png

Na początku mamy iterator Y, który zwraca jakieś tam liczby po prostu.

Operator |> to oczywiście znana wszystkim rura, czyli tzw. pipe. Przekazujemy to z lewej jako argument funkcji po prawej. Ale przed operatorem stoi jeszcze kropka. Kropka magicznie aplikuje prawą funkcję do każdego elementu z Y. Kropka działa też z innymi operatorami i funkcjami, po prostu taki spread, c'nie.

Czyli dla każdego y zwracana jest funkcja Channel, która jako pierwszy argument przyjmuje inną funkcję, ale tutaj jest on przekazzany w notacji znanej ze swifta tudzież z ruby, że ciało funkcji się pisze poza listą argumentów (tylko że w Julii funkcja nie jest ostatnim argumentem , tylko pierwszym (i to dosłownie, bo tu się liczy od 1, nie od 0). Powodem jest fakt, że leniwa ewaluacja jest tu bardzo mocno grana i wtedy rzekomo lepiej iterować argumenty zaczynając z prawej strony; patrz foldr w haskellu czy coś tam).

Więc ten Channel robi kilka rzeczy.

  • Po pierwsze dla każdego y tworzy kanały (czyli też pipe tylko w innym znaczeniiu, no po prostu zwykła kolejka FIFO)
  • Po drugie tworzy tyle nowych wątków, ile było elementów w Y i przekazuje im te kanały jako argument. Te wątki coś tam se robią i wrzucają wyniki do swoich kanałów.
  • I po trzecie primo ultimo, zwraca listę stworzonych kanałów do głównego wątku.

Ten wątek może ssobie te wszystkie kanały skonsumować, poprzestawiać i posklejać (u mnie flatten i stack). Oczywiście prawie wszystkie funkcje zwracają iteratory i dopiero w ostateczności liczy się wynik.

Możemy też zauważyć, że istnieje co najmniej 6 różnych konstrukcji, których zadaniem jest przekazanie argumentu do funkcji. Jak nie drzwiami, to oknem. Jak nie możecie się doliczyć, to spokojnie, bo istnieje jeszcze operator złożenia funkcji i jego wersja z kropką.

sens
g/CozienaProfdyuktywnoscINfrmtyczn

To, co można odpierdalać w Julii ze składnią to jest złoto XD

Prezentuję wam tabliczkę mnożenia w ciele ℤₚ

https://i.imgur.com/H9QGdxi.png

Deykun
g/Rosliny

@sens żona się martwi

sens

@Deykun: w sumie to chyba właśnie tak wygląda ten słynny merytoryczny koniec pracy xD

Deykun
g/Rosliny

@sens żona się martwi

sens

@Deykun: może mają becke ze stanowiska beckend developer

sens
g/CozienaProfdyuktywnoscINfrmtyczn

Udało mi się w końcu osiągnąć przybliżenie zbioru Mandelbrota na poziomie 10^-31 na piksel. W javoskrypcie! W przeglądarce!

Zajebisty jest ten trik z perturbacjami. Teraz tylko optymalizacja i mogę zająć się szukaniem pracy xD

Deykun
g/Praca

Sens szukający pracy
https://youtu.be/LCUze7kuNas?t=21

sens

@Deykun: może i prokrastynuję, ale dobrze się bawię

Deykun
g/PiekniLudzie

Nie żeby coś, ale Piękna Funkcja nie dawała proof of life od 2025, a zwykle daje raz na miesiąc

sens

@Deykun: motto Bartosza Żółtaka, króciusieńko: tylko zreperowany samochód jest w stanie dokończyć dowód, czyli

Prowadzić zbiórkę i auto do serwisu
Prowadzić zbiórkę i auto do serwisu
PROWADZIĆ ZBIÓRKĘ I AUTO DO SERWISU
PROWADZIĆ ZBIÓRKĘ I AUTO DO SERWISU
PROWADZIĆ ZBIÓRKĘ I AUTO DO SERWISU AHAHHAHHHA

sens
g/CozienaProfdyuktywnoscINfrmtyczn

tak wygląda zbieżność ciągu z_n+1 = z_n^2+p dla punktów p blisko brzegu głównej kardioidy zbioru mandelbrota

sory za jakość, dbam o transfer

sens
g/PoezjaSpiewana

okej, śwagier, tutaj przy brzegu
am gona giwim e ciken...
ajm gona giwim e ciken

widzisz jak je?
ic forfit, at least forfit, śwagier
it's at least for fit...
no, bierz tą kurwa kurę

dejr ju goł!
kurwa, forfiter
e? predator, kurwa!
it's piękne, it's bjutyful

e.. o kurwa, płynie mi do... do...
uciekaj, kurrwa, stąd
gierary hir
faak... men...

patrz jaki kurwa, szwagier!
popatrz jaka franca!
kurwa, chce mi wskoczyć na tego!
uciekaj! faak...
gary muw ałt...
gary muw aut!!
kypym et bej! ...kurwa!
hej! wskoczyłby mi do tego
holl'on, ajgady wyłączyć na chwilę

sens
g/CozienaProfdyuktywnoscINfrmtyczn

Bawię się tym webgpu, tym razem renderuje sobie zbiór mandelbrota. Już kiedyś pisałem to w C używając 128-bitowych floatów. Oczywiście na GPU to zupełnie inna bajka, bo okazuje się że max co zdecydowana większość GPU obsługuje to 32 bity.

Na 32 bitach to sobie można przybliżyć kilka razy i robi się pikseloza. No to najpierw zaimplementowałem emulacje 64 bitowych floatów. Można przybliżać dwa razy dalej. No ale to nadal trochę sraka, bo fajnie by było przybliżać z dowolną precyzją xd

Okazuje się że jest fajny trik pochodzący z teorii perturbacji czy innego znerdziałego działu matematyki. Ale chodzi mniej więcej o to, że zamiast liczyć sobie każdy piksel z osobna, to liczy się tylko centrum tzw. orbity z wysoką dokładnością, a potem liczy się tylko delty między centrum a interesującym nas punktem. Z niezrozumiałego dla mnie na razie powodu, nie potrzeba do tego większej liczby bitów, żeby działało.

Ofc jest to przybliżenie i trzeba dobrze wybrać to centrum orbity, żeby było ładnie. Później prześlę wam jakiś obrazek xd

sens

Z niezrozumiałego dla mnie na razie powodu,

@sens: omg, ja debil xd przecież to oczywiste

sens
g/CozienaProfdyuktywnoscINfrmtyczn

Bawię się tym webgpu, tym razem renderuje sobie zbiór mandelbrota. Już kiedyś pisałem to w C używając 128-bitowych floatów. Oczywiście na GPU to zupełnie inna bajka, bo okazuje się że max co zdecydowana większość GPU obsługuje to 32 bity.

Na 32 bitach to sobie można przybliżyć kilka razy i robi się pikseloza. No to najpierw zaimplementowałem emulacje 64 bitowych floatów. Można przybliżać dwa razy dalej. No ale to nadal trochę sraka, bo fajnie by było przybliżać z dowolną precyzją xd

Okazuje się że jest fajny trik pochodzący z teorii perturbacji czy innego znerdziałego działu matematyki. Ale chodzi mniej więcej o to, że zamiast liczyć sobie każdy piksel z osobna, to liczy się tylko centrum tzw. orbity z wysoką dokładnością, a potem liczy się tylko delty między centrum a interesującym nas punktem. Z niezrozumiałego dla mnie na razie powodu, nie potrzeba do tego większej liczby bitów, żeby działało.

Ofc jest to przybliżenie i trzeba dobrze wybrać to centrum orbity, żeby było ładnie. Później prześlę wam jakiś obrazek xd

sens
g/CozienaProfdyuktywnoscINfrmtyczn

A tak, proszem państwa, optymalizuje się obliczenia na dużych zbiorach punktów. Dzieli się rekurencyjnie przestrzeń na części, jeżeli dany obszar ma dużo punktów. Dla blisko położonych liczy się dokładnie, a dalekie obszary przybliża się, redukując do pojedynczego, uśrednionego punktu

https://i.imgur.com/xTiaGEg.png

Deykun
g/programowanie

robię kalulator

sens

@Deykun: a ja sie bawie webGPU i se jakieś takie chmurki kolorowe robie

być może nie widać za bardzo, ale to jest 32k wierzchołków, mogę 64k max na swoim sprzencie wysłać na raz do bufora (mógłbym w sumie więcej jakbym nie zarezserwował sobie tyle miejsca na stukture wierzchołka, bo planowałem w ogóle coś innego z tym robić) i nawet tak bardzo nie zacina xDD

sens
g/CozienaProfdyuktywnoscINfrmtyczn

Pytanie do kuców, stawiam że np @Deykun ma świeże CV xd dajesz jebanie o te ATSy? Tzn teraz żeby czatbot nie odrzucił CV to się pisze takie smutne jakby wyplute z LaTeXa na pierwszych ćwiczeniach jednokolumnowe CV. To tak robisz?

Bo ja ostatnie CV to oddałem w 2018 roku xd więc nie jestem na czasie

No i wgl czego używacie do tworzenia CV. Jakieś templatki, MD -> html -> pdf, LaTeX, Google docs, jakieś online gówno?

sens

@Deykun: ja to rzadko używam kopiujwklejek w ogóle, wolę przepisywać manualnie, bo wtedy mam wrażenie, że robię to ze zrozumieniem xD czy tak jest w rzeczywistości? nwm. ale boje sie że już zdziadziałem zupełnie

sens
g/CozienaProfdyuktywnoscINfrmtyczn

Pytanie do kuców, stawiam że np @Deykun ma świeże CV xd dajesz jebanie o te ATSy? Tzn teraz żeby czatbot nie odrzucił CV to się pisze takie smutne jakby wyplute z LaTeXa na pierwszych ćwiczeniach jednokolumnowe CV. To tak robisz?

Bo ja ostatnie CV to oddałem w 2018 roku xd więc nie jestem na czasie

No i wgl czego używacie do tworzenia CV. Jakieś templatki, MD -> html -> pdf, LaTeX, Google docs, jakieś online gówno?

sens

@Deykun: marginesy mam ogarnięte gdzie indziej, dopiero przy generowaniu pdfa :))