Byly vyhlášeni vítězové a zveřejněny vítězné zdrojové kódy (YouTube, GitHub) již 29. ročníku soutěže International Obfuscated C Code Contest (IOCCC), tj. soutěže o nejnepřehlednější (nejobfuskovanější) zdrojový kód v jazyce C.
Evropská komise předložila evropský balíček pro technologickou suverenitu, tedy soubor opatření, která mají posílit kapacity EU v oblasti polovodičů, umělé inteligence, cloudu a open source. To Evropě pomůže stát se lídrem v oblasti umělé inteligence, posílit její digitální autonomii a vytvářet podmínky pro udržitelnější digitální budoucnost.
OpenCV (Open Source Computer Vision, Wikipedie), tj. open source multiplatformní knihovna pro zpracování obrazu a počítačové vidění, byla vydána v nové major verzi 5.
Byla vydána nová verze 9.7 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.
Vývojáři webového prohlížeče Ladybird dnes oznámili, že mění způsob vývoje. S blížícím se vydáním alfa verze přestávají přijímat veřejné pull requesty. Všechny otevřené veřejné pull requesty budou uzavřeny. Tým nedokáže garantovat bezpečnost AI generovaných pull requestů.
OpenLogi (GitHub) je open source náhrada aplikace Logi Options+ pro přizpůsobení myší od společnosti Logitech. Zatím běží pouze na macOS.
Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za květen (YouTube).
Úřad pro ochranu osobních údajů řeší desítky stížností na jednotné měsíční hlášení zaměstnavatele, které stát spustil počátkem dubna. Systém, jenž má firmám odlehčit od desítek formulářů, nejenže výrazně zatížil jejich účetní oddělení, ale docházelo v něm i k únikům osobních dat zaměstnanců k firmám, kde nepracovali. Podle ministerstva práce a sociálních věcí stála za problémem technická chyba. „Incident se týkal několika stovek
… více »Byla vydána (𝕏, Bluesky) nová verze 22.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.
Vim Classic byl vydán ve verzi 8.3. Drew DeVault oznámil tento fork editoru Vim (verze 8.2.0148, tj. těsně před zavedením Vim9 skriptování) v březnu letošního roku. Důvodem forku bylo, že vývojáři editorů Vim a Neovim začali při vývoji využívat LLM.
double a[3], b[3], c[3]; [...] c[0]=a[0]*b[0]; c[1]=a[1]*b[1]; c[2]=a[2]*b[2];dokáže to gcc optimalizovat a použít na to vektorový součin (MULPD) místo jednotlivých násobení? Díky.
-mfpmath=sse -msse -msse2 by to mohlo dělat gcc samo, ne?
$ gcc -ggdb3 -O3 -march=pentium4 -mfpmath=sse,387 -msse -msse2 -msse3 sse1.c -o sse1
$ objdump -d -S sse1
[...]
08048354 |main|:
#include|stdio.h|
int main(void){
8048354: 8d 4c 24 04 lea 0x4(%esp),%ecx
8048358: 83 e4 f0 and $0xfffffff0,%esp
804835b: ff 71 fc pushl 0xfffffffc(%ecx)
804835e: 55 push %ebp
804835f: 89 e5 mov %esp,%ebp
8048361: 51 push %ecx
8048362: 83 ec 54 sub $0x54,%esp
volatile double a[3], b[3];
double c[3];
a[0]=.5; a[1]=.5; a[2]=.5;
8048365: f2 0f 10 05 c0 84 04 movsd 0x80484c0,%xmm0
804836c: 08
804836d: f2 0f 11 45 e0 movsd %xmm0,0xffffffe0(%ebp)
8048372: f2 0f 11 45 e8 movsd %xmm0,0xffffffe8(%ebp)
8048377: f2 0f 11 45 f0 movsd %xmm0,0xfffffff0(%ebp)
b[0]=.5; b[1]=.5; b[2]=.5;
804837c: f2 0f 11 45 c8 movsd %xmm0,0xffffffc8(%ebp)
8048381: f2 0f 11 45 d0 movsd %xmm0,0xffffffd0(%ebp)
8048386: f2 0f 11 45 d8 movsd %xmm0,0xffffffd8(%ebp)
c[0]=a[0]*b[0]; c[1]=a[1]*b[1]; c[2]=a[2]*b[2];
804838b: f2 0f 10 5d e0 movsd 0xffffffe0(%ebp),%xmm3
8048390: f2 0f 10 6d c8 movsd 0xffffffc8(%ebp),%xmm5
8048395: f2 0f 10 55 e8 movsd 0xffffffe8(%ebp),%xmm2
804839a: f2 0f 10 65 d0 movsd 0xffffffd0(%ebp),%xmm4
804839f: f2 0f 10 45 f0 movsd 0xfffffff0(%ebp),%xmm0
80483a4: f2 0f 10 4d d8 movsd 0xffffffd8(%ebp),%xmm1
printf("c=%g,%g,%g\n",c[0],c[1],c[2]);
80483a9: f2 0f 59 c1 mulsd %xmm1,%xmm0
80483ad: f2 0f 11 44 24 14 movsd %xmm0,0x14(%esp)
80483b3: f2 0f 59 d4 mulsd %xmm4,%xmm2
80483b7: f2 0f 11 54 24 0c movsd %xmm2,0xc(%esp)
80483bd: f2 0f 59 dd mulsd %xmm5,%xmm3
80483c1: f2 0f 11 5c 24 04 movsd %xmm3,0x4(%esp)
80483c7: c7 04 24 b0 84 04 08 movl $0x80484b0,(%esp)
80483ce: e8 bd fe ff ff call 8048290 |printf@plt|
return 0;
}
[...]
-O2 -ftree-vectorize -ftree-vectorizer-verbose=3 -march=pentium4):
c[0]=a[0]*b[0]; c[1]=a[1]*b[1]; c[2]=a[2]*b[2]; se nezvektorizuje (fuj, to je hnusný slovo...), ale
for(int i=0; i<3; i++) c[i]=a[i]*b[i]; ano.
for udělá stejně něco podobné tomu prvnímu. Zřejmě ne úplně.)
Jak autor zmíněného článku píše, podobné optimalizace mohou vést k nestabilnímu kódu.
Tiskni
Sdílej: