Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem zůstává El Capitan od HPE (Cray) s výkonem 1,809 exaFLOPS. Druhý Frontier má výkon 1,353 exaFLOPS. Třetí Aurora má výkon 1,012 exaFLOPS. Nejvýkonnější superpočítač v Evropě JUPITER Booster s výkonem 1,000 exaFLOPS je na čtvrtém místě. Nejvýkonnější český superpočítač C24 klesl na 192. místo. Karolina, GPU partition klesla na 224. místo a Karolina, CPU partition na 450. místo. Další přehledy a statistiky na stránkách projektu.
Microsoft představil Azure Cobalt 200, tj. svůj vlastní SoC (System-on-Chip) postavený na ARM a optimalizovaný pro cloud.
Co způsobilo včerejší nejhorší výpadek Cloudflare od roku 2019? Nebyl to kybernetický útok. Vše začalo změnou oprávnění v jednom z databázových systémů a pokračovalo vygenerováním problém způsobujícího konfiguračního souboru a jeho distribucí na všechny počítače Cloudflare. Podrobně v příspěvku na blogu Cloudflare.
Byla vydána (Mastodon, 𝕏) první RC verze GIMPu 3.2. Přehled novinek v oznámení o vydání. Podrobně v souboru NEWS na GitLabu.
Eugen Rochko, zakladatel Mastodonu, tj. sociální sítě, která není na prodej, oznámil, že po téměř 10 letech odstupuje z pozice CEO a převádí vlastnictví ochranné známky a dalších aktiv na neziskovou organizaci Mastodon.
Byla vydána nová major verze 5.0 svobodného 3D softwaru Blender. Přehled novinek i s náhledy a videi v obsáhlých poznámkách k vydání. Videopředstavení na YouTube.
Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.
Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou
… více »Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
VKD3D-Proton byl vydán ve verzi 3.0. Jedná se fork knihovny vkd3d z projektu Wine pro Proton. Knihovna slouží pro překlad volání Direct3D 12 na Vulkan. V přehledu novinek je vypíchnuta podpora AMD FSR 4 (AMD FidelityFX Super Resolution 4).
Objavil som zaujímavý skriptovací jazyk zo sveta HPC: Julia . Syntax je podobná jazyku LUA (kto programoval v MATLABe, alebo Pythone, tiež sa v ňom nestratí), ale inak je to jazyk z úplne iného súdka: dynamický, strong typed - orientovaný na rýchlosť a efektivitu – používa JIT compiler. V určitých typoch výpočtových úloh dokáže Julia dosiahnuť vyšší výkon než C/C++, pričom je často porovnateľná s Fortranom a Chapelom – najmä pri numerických operáciách a prácou vektormi a maticami, ktoré si vie compiler dobre zoptimalizovať).
No a čím je tento jazyk výnimočný? Je to jeden z mála jazykov obsahujúci skutočný implicitný paralelizmus (podobne ako iný statický HPC jazyk Chapel ktorý sme si spomínali v minulosti), podporuje vykonávanie kódu na CPU aj GPU (GPGPU). Okrem toho podporuje SIMD (počas jednej inštrukcie sa spracováva viacero hodnôt) a distribúciu výpočtov medzi viac počítačov (Grid computing – keď jeden počítač nestačí).
Taktiež má vlastnosti ako broadcasting (v jazyku Chapel sa tomu hovorí „propagácia“), čo znamená, že pracujeme pomocou operátora bodka "." s celým poľom či inou kolekciou (napr. range) ako by to bola jedna hodnota:
arr = [1:5...] # [1, 2, 3, 4, 5] arr1 = arr .^ 2 # Operátor "^" je mocnina – keď použijeme operátor ".^", bude to druhá mocnina všetkých položiek poľa. # Namiesto: `map(a -> a ^ 2, arr)` – platí aj pre iné operátory. println(arr1) # [1, 4, 9, 16, 25]
Samozrejme, dajú sa použiť aj knižničné funkcie ako map, filter, fold atď., ale broadcasting je rýchlejší, lebo si to JIT kompilátor zoptimalizuje tak, že sa spracováva viac hodnôt naraz (SIMD). Má to aj makrá, takže jazyk sa dá „ohýbať“. Tiež sú tam rôzne druhy cyklov, ktoré sa dajú optimalizovať na rýchlosť.
Julia obsahuje viacrozmerné polia (väčšina moderných jazykov vychádzajúcich z C obsahuje len pole polí, ale nie skutočné viacrozmerné polia. Pokiaľ ste ale niekedy programovali v Basicu, Pascale či Fortrane istotne si viacrozmerné polia pamätáte.
arr = [
1 2 3
4 5 6
]
println(arr[2, 1]) # vypíše 4, keďže polia sa indexujú od 1
Jazyk má pár zvláštností, napríklad že polia sa indexujú od 1 a najprv začínajú riadkami (Y), až potom stĺpcami (X) (podobne ako v matematike, naopak ako v mainstreamových jazykoch). Faktom ale je, že práca s jednotkou je prirodzenejšia a hlavne nám to skracuje kód.
Všadeprítomný je multiple dispatch. OOP to nemá – má to len štruktúry, nad ktorými voláme funkcie. Zapúzdrenie sa robí cez moduly, ale tie moc nezapúzdrujú (moduly sa mi v Julii vôbec nepáčia).
Pokiaľ chceme v Julii napísať rýchly backend a k tomu spraviť GUI, môžeme komunikovať napríklad cez HTTP, sockety, gRPC, ale ja som použil ZeroMQ (package ZMQ), ktoré je rýchle ako sockety, ale pritom jednoduché na použitie ako HTTP.
Tiskni
Sdílej:
using JuMP using HiGHS M = [0 8 2; 1 0 5; 1 4 0;;; 0 4 3; 9 0 4; 3 7 0;;; 0 1 2; 5 0 8; 2 2 0] model = Model( HiGHS.Optimizer) x= @variable(model, x[1:3,1:3,1:3] ≥ 0) @constraint(model, diagonal[i=1:3], sum(x[i,i,1:3]) == 0) from_c = @constraint(model, sum(x,dims=1) .== sum(M,dims=1)) to_c = @constraint(model, sum(x,dims=2) .== sum(M,dims=2)) time = @constraint(model, sum(x,dims=3) .== sum(M,dims=3)) @objective(model, Min, sum(x .^2 )) optimize!(model) @show solution_summary(model)
Faktom ale je, že práca s jednotkou je prirodzenejšia a hlavne nám to skracuje kód.Jestli je indexování pole od jedničky přirozenější je asi subjektivní, ale o tom, že to zkracuje kód bych dost pochyboval. Implementoval jsem relativně dost algoritmů pro práci s vícerozměrnými poli paralelně v Matlabu a Pythonu a v Matlabu furt někde honím jedničku.
Já bych neřekl, že nové jazyky jsou variací na Céčko.Ale jsou. Bud je to assembler s trochou syntaktickeho cukru (proc asi je "unsafe" v Rustu), nebo n-ta varianta LISPu. Ostatni inovativni pristupy se moc neuchytily, nebo je odval cas (treba Algol, nebo "pictures" v COBOLu a PL/1)...
Chapel ale umožňuje explicitně zvolit jakoukoli dolní mez pole.To umí i Fortran, ale nijak extrémně užitečné mi to nepřijde. Napadá mě třeba symetrický index kolem nuly (nějaké FFT třeba) nebo snaha sladit zápis matematiky (např. při použití nějakých konkrétních polynomů). Ale spíš je v tom pak akorát bordel. Zas si ale člověk může změnit výchozí spodní mez z jedničky na nulu, takže je to vlastně fajn...
array[18..120]Uzasny. Takze ti to rozbijou lidi soudem uznani za zletile, podobne az se nejaka baba dozije 120 (coz s rostouci delkou doziti muze klidne nastat, rekord je neco okolo 115).
Takový kód je přehlednější.To je asi otázka názoru. Hlavně bude záležet na tom kdo a jak ten kód píše. A protože znám své kolegy, mám raději jazyky, které neumožňují být příliš kreativní... Tu motivaci ale pochopitelně chápu, ale jak píšete víše:
...Je to mapování n-tice hodnot na výslednou hodnotu. Funkce to dělá algoritmem, pole to dělá tabulkou hodnot - jinak je to to samé...Pro mě je indexování pole jakási low-level operace, pokud potřebuji nestandardní index, volím raději funkci. Ono u možnosti měnit spodní mez nemusíte chtít skončit. Třeba byste rád index, který se neinkrementuje o jedničku, či není lineární, motivace by se asi našla. Ale nemám pochopitelně nic proti tomu, aby to jazyk podporoval, zejména pokud to jeho uživatelé využívají.
V tom, že je potřeba špatným programátorům přistřihnout křídla, máte samozřejmě pravdu. Je třeba se přizpůsobit té které situaci.To se bohužel snadněji řekne, než udělá... Se zbytkem pochopitelně souhlasím snad jen s poznámkou, že řídká pole sice obsahují hromady nul, ale obsahují je, tzn. není to ekvivalentní poli, které ten index nemá vůbec (viz ten příklad sudých indexů). Sice netuším, jak jsou interně implementována, ale nějaký overhead tam bude muset být. Pokud jde o ta asociativní pole, tak přesně ta jsou podle mého názoru vhodná pro zobrazení/mapování netriviálních indexů. Pole jako taková mají podle mě uplatnění především tam, kde provádíte nějaké náročné operace na větším množství dat, kde – přesně, jak píšete – využijete s výhodou možnosti paralelizace. Alespoň tak to mám já. Pole je hromada dat, kterou je třeba zpracovat a index je více méně podružný, pro data, kde má index nějaký význam používám asociativní datové typy.
Chapel ale umožňuje explicitně zvolit jakoukoli dolní mez pole.Pascal také, ale lidé se do něj moc nehrnou. To je škoda, odnaučili by se dělat spoustu blbostí
A co se C týče:
int array[201]={0}, *teplota=&array[100];