U příležitosti 30. výročí vydání počítačové hry Quake byla vydána nová epizoda s názvem Dawn of the Machine (Steam).
Vládní CERT upozorňuje (𝕏) na sérii bezpečnostních záplat (CVSS 9.9) v produktech Cisco řešících kritické zranitelnosti umožňující obejití autentizace, eskalaci oprávnění, vzdálené spuštění kódu a odepření služby. Úspěšné zneužití může útočníkům umožnit získat neoprávněný přístup k dotčeným systémům, kompromitovat zařízení Cisco Catalyst SD-WAN a Cisco IOS XE, spustit libovolný kód, zpřístupnit citlivé informace nebo narušit dostupnost postižených systémů.
Soud v americkém státě Nové Mexiko ve čtvrtek nařídil internetové společnosti Meta Platforms zaplatit 567 milionů dolarů (téměř 12 miliard Kč) za újmy, které její platformy působí mladým lidem. S přihlédnutím k dřívějšímu verdiktu tak má společnost celkem zaplatit 942 milionů dolarů, což je malý zlomek jejího ročního výnosu, který loni činil 60 miliard dolarů. Čtvrteční verdikt firmě také nařizuje, aby změnila způsob, jakým její
… více »Mark Russinovich (CTO v Microsoft Azure) se na LinkedIn pochlubil svým projektem MS Paint Doom napsaným pomocí Claude. Hru Doom umožňuje hrát v programu Malování (Microsoft Paint). Malování funguje jako monitor. Herní engine (ViZDoom) běží na pozadí a každý vykreslený snímek hry vkládá automaticky přes schránku (clipboard) do Malování.
Platformy ChatGPT i Roblox by mohly být zařazeny na seznam mimořádně velkých on-line platforem nebo internetových vyhledávačů, na něž se vztahují zvláštní podmínky podle nařízení o digitálních službách (DSA). Vzhledem k tomu, že ChatGPT i Roblox oznámily počet uživatelů nad prahovou hodnotou DSA, je toto označení „rozhodně možné“ a mohlo by „přijít dříve či později“. On-line platformy a vyhledávače zařazené na seznamy DSA musejí
… více »Společnost Cloudflare představila Cloudflare OS (GitHub), tj. open source platformu navrženou pro integraci umělé inteligence (agentů) přímo do pracovních procesů organizací.
Byla vydána nová verze 5.13 svobodného multiplatformního softwaru pro konverzi a zpracování digitálních fotografií primárně ve formátů RAW RawTherapee (Wikipedie). Vedle zdrojových kódů je k dispozici také balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.
Jean-Baptiste Kempf na svém blogu představil novou verzi 9.0 "Lei" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie).
Richard Hughes oznámil, že službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzoruje také společnost NVIDIA.
Edvard Rejthar na blogu zaměstnanců CZ.NIC představil svou aplikaci SlideRshow (GitHub). Funguje jako prohlížeč fotek, ale i jako jejich organizér a prezentátor. Neinstaluje se, běží přímo v prohlížeči. Bez serveru. Offline.
Premennú prostredia CFLAGS používa gcc pri
kompilácii zdrojových kódov v jazyku C. V Gentoo túto premennú nastavujeme v súbore
/etc/make.conf a Portage ju pred kompiláciou balíčka prečíta a
nastaví. Premenná CXXFLAGS funguje rovnako, ale pre jazyk
C++.
Ak nemáte problém s diskovým priestorom, ani s časom potrebným na
kompiláciu, môžete bezpečne použiť nasledujúcu hodnotu CFLAGS
a CXXFLAGS:
CFLAGS="-O3 -fomit-frame-pointer -pipe"
CXXFLAGS="$(CFLAGS)"
Výsledný program však nebude ušitý na mieru vášmu procesoru a bude využívať iba inštrukčnú sadu procesora i386 (samozrejme ak vlastníte procesor založený na tejto architektúre).
Najprv by sme si mali povedať pár slov o tom, ako pracuje GCC. Ako už možno viete, GCC obsahuje viac kompilátorov naraz - kompilátory pre jazyky C, C++, Objective C, Fortran a Javu, ale aj ďalšie. Kompilátor GCC sa skladá z dvoch častí - frontend a backend.
Každý jazyk má vlastný frontend. Frontend načíta (preparsuje) a spracuje samotné zdrojové kódy. Výstupom frontendu je reprezentácia zdrojového kódu v jazyku RTL (Register Transfer Language). Dá sa povedať, že RTL je abstraktný štruktúrovaný assembler. Je to veľmi všeobecný a zložitý jazyk zároveň, preto nemá zmysel ho používať pre bežné programovanie.
Strom RTL sa pri kompilácii nachádza v pamäti len v binárnej forme. V binárnej forme vstupuje do backendu kompilátora GCC, ktorý je všeobecný pre celý kompilátor. Backend generuje z RTL stromu kód assemblera pre určený procesor. Backend tiež vykonáva optimalizácie nad RTL stromom a aj pri generovaní assemblera.
Backend vie vykonať niekoľko desiatok rôznych optimalizácií a nie všetky sú vhodné v každej situácii. Preto sú rôzne druhy optimalizácií roztriedené do skupín, aby ich bolo možné jednoducho zapínať - o chvíľku si o nich povieme.
Zostali vám nezodpovedané otázky? Ak vás zaujíma, ako vyzerá RTL, skúste
skompilovať jednoduchý program s parametrom -dr:
gcc -dr zvyšné parametre
Ak chcete vedieť, ako prebiehajú rôzne optimalizácie v backende kompilátora GCC, prečítajte si článok The GNU Instruction Scheduler z roku 1989 (podstata GCC sa nezmenila).
Najdôležitejší je parameter optimalizácie -Ox.
Určuje, ktorú skupinu optimalizácií chceme pri kompilovaní použiť. Písmeno
x treba nahradiť číslom, alebo písmenom želanej skupiny. Popis
jednotlivých skupín optimalizácií:
-O0-O1-O2-O3-Os-O2, ktoré nezväčšia veľkosť výsledného programu a pridá
ďalšie optimalizácie pre veľkosť výsledku. Rýchlosť a nároky na pamäť sú
podobné, ako pri -O2.Ak špecifikujete viac parametrov -Ox naraz, použije
sa iba posledný.
Parameter -fomit-frame-pointer znemožní debugovanie
(používateľ to nepotrebuje) a zmenší veľkosť binárky.
Parameter -pipe urýchli kompiláciu, pretože
gcc nebude medzivýsledky ukladať na disk, ale ponechá ich v
pamäti.
Každý typ procesora má vlastnú inštrukčnú sadu - inštrukcia je jeden úkon, ktorý procesor dokáže vykonať. V assembleri nepoužívame príkazy, ale priamo inštrukcie procesora. Z toho vyplýva, že program v assembleri je závislý na procesore, pre ktorý je určený a nedá sa spustiť na inom.
Našťastie nové procesory poznajú všetky inštrukcie starších procesorov a inštrukčnú sadu len rozširujú o ďalšie inštrukcie. Túto vlastnosť majú procesory z radu Intel x86 - procesory bežných PC (i386, i486, Pentium atď.).
Ako som už povedal, kompilátor GCC generuje z RTL kódu kód assembleru a potrebuje teda vedieť, pre ktorý procesor má assembler vygenerovať. Na platforme x86 generuje predvolene pre procesor i386 a ten je možné použiť na ktoromkoľvek vyššom procesore.
Parameter -march=architektúra určuje inštrukčnú sadu
procesora, na ktorom má program fungovať. Ak chceme, aby program fungoval
aj na starších procesoroch, ale chceme ho optimalizovať pre svoj procesor,
môžeme použiť jeden z parametrov:
-mcpu=architektúra (gcc verzie 3.3 a nižšie)-mtune=architektúra (gcc verzie 3.4 a vyššie)(Verziu gcc zistíme pomocou prikazu: gcc -v.)
Za slovo architektúra dosaďte označenie procesora, pre ktorý kompilujete. Označenia všetkých procesorov nájdete v manuálovej stránke GCC. Ak kompilujete pre procesor typu x86, hľadajte sekciu Intel 386 and AMD x86-64 Options (jednoduchšie je nechať vyhľadať na manuálovej stránke reťazec athlon).
LDFLAGS používa linker (program, ktorý spája časti zdrojových kódov do spustiteľného súboru, alebo knižnice). Bezpečná hodnota premennej LDFLAGS je:
LDFLAGS="-Wl,-O1"
Ak chcete dostať zo systému maximum a ste ochotný trochu riskovať:
LDFLAGS="-Wl,-O1 -Wl,--sort-common -z -combreloc -Wl, \
--enable-new-dtags -Wl,--relax"
V niektorých prípadoch sa pri kompilácii glibc môžu
vyskytnúť problémy. Je lepšie nepoužívať v hodnote LDFLAGS
parameter -Wl,--relax:
LDFLAGS="-Wl,-O1 -Wl,--sort-common -z -combreloc
-Wl,--enable-new-dtags"
Problémy pre kompilácii robia aj OpenOffice.org a
GStreamer. Tu sa odporúča radikálne riešenie - nepoužívať
žiadnu hodnotu LDFLAGS:
LDFLAGS=""
V týchto špeciálnych prípadoch si môžete usporiť námahu s editovaním
súboru /etc/make.conf a premenné určiť priamo z príkazového
riadku:
# LDFLAGS="" emerge gstreamer
# LDFLAGS="" emerge openoffice
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
-march ktere pouzivaji bezne distribuce misto -mcpu. Existuji "objektivni testy" mezi temito rezimy?
$ mplayer MPlayer 1.0pre7-4.0.1 (C) 2000-2005 MPlayer Team CPU: Intel Pentium M Banias (Family: 6, Stepping: 5) Detected cache-line size is 64 bytes CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1 Compiled with runtime CPU detection - WARNING - this is not optimal!... no nezdá se mi, že by v mojí binární distribuci byl mplayer zkompilován zcela bez optimalizací
No mě se zase zdá, že to, co tady vidíme, je jen detekce procesoru.ovšem výsledkem této detekce se pak mplayer řídí a používá kód optimalizovaný pro dané možnosti ... což jaksi vyvrací názor, který se snaží článek vsugerovat, a to že binární distribuce optimalizace nepoužívají ...
... binární distribuce optimalizace nepoužívají ...
To som nikdy nepovedal! Povedal som, že binárne distribúcie nie sú prispôsobené každému procesoru na mieru, ale len pre nejakého spoločného predchodcu väčšiny procesorov.
A tento príklad je zmätočný, pretože sa týka iba jedného programu (mplayer) a nie celej distribúcie.
ano, takto doslovně ne, na druhou stranu já jsem neřekl, že jsi napsal přímo toto, takže mi taky taky nepodsouvej něco, co jsem neřekl! inkriminovaná věta zní: "Pretože binárne balíky nie sú optimalizované pre váš procesor a sú badateľne pomalšie." mezi "přebásněním" slov "nie sú optimalizované pre váš procesor" na "optimalizace nepoužívají" je z významového hlediska pouze jediný rozdíl, a to že jsem si dovolil zobecnit "ne pro váš procesor" na "pro žádný procesor", jelikož sjednocení množin {váš procesor} v případě čtenářů ábíčka zahrnuje nejspíš téměř všechny architektury, na kterých Linux běhá - pokud s tím nesouhlasíš, měl bys dokázat, že průnik množin {všechny modely procesorů, pro které jsou některé balíky v různých binárních distribucích optimalizovány} a {všechny modely procesorů, na kterých čtenáři provozují Linux} je prázdný... binární distribuce optimalizace nepoužívají ...To som nikdy nepovedal!
Povedal som, že binárne distribúcie nie sú prispôsobené každému procesoru na mieru, ale len pre nejakého spoločného predchodcu väčšiny procesorov.kde se toto tvrzení v článku vyskytuje?
A tento príklad je zmätočný, pretože sa týka iba jedného programu (mplayer) a nie celej distribúcie.zmatečná je jedině tvoje reakce, kolega J, na kterého jsem reagoval, psal o tom, že optimalizace má smysl u jednotlivých programů a uvedl: "Vyplati se to pro veci jako trebas mplayer.", v dané souvislosti je tedy nesmysl mluvit o celé distribuci
Compiled with runtime CPU detection - WARNING - this is not optimal!
No, nezda se ze by tady nekdo umel cist.
No, nezda se ze by tady nekdo umel cist.ok, až se to naučíš, tak začni od článku a pokračuj mojí první reakcí, pak třeba pochopíš, proč jsem na tvoji zmínku o mplayeru reagoval takto (případně si přečti ještě moji odpověď lzapovi)
$ mplayer MPlayer dev-CVS-060102-08:04-3.4.5 (C) 2000-2005 MPlayer Team CPU: Advanced Micro Devices Athlon 64 Newcastle,Winchester,San Diego,Venice; Sempron Palermo (Family: 15, Stepping: 0) CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1 Přeloženo pro CPU x86 s rozšířeními: MMX MMX2 3DNow 3DNowEx SSE SSE2
, anebo nějakou jinou, super rychlou paměť (stačilo by tak o řád pomalejší jak RAM).
Keep in mind that -O3 enables optimizations that generally make code worse, not better. Use it only if you know it will improve your code.A občas sa stane, že kvôli tomu niečo padne. V každom prípade použitie kompilátoru od Intelu má omnoho lepší efekt :)
Ok, priznávam, že -O3 nemá vo väčšine prípadov tie najlepšie výsledky, ale aj tak sú tie najhoršie prípady takmer rovnaké ako pri -O2 (vyvracajúci dôkaz ocením).
Ja som nepovedal, že --omit-frame-pointer znemožní debugovanie na všetkých platformách.
Nejvíc mi padá stejnak Opera, která je snad jediným binárním programem v mém PC...(ano, OOo si překládám)
Vyplati se -O3 nebo -Os? Zatim pouzivam -O3, ale možná by bylo vhodnějšíByly doby, kdy jsem nadsene kompiloval s -O3. Od te doby, co jsem redukoval na -02, vyrazne klesl pocet komplikaci pri kompilacich (de facto na 0). Jineho efektu si nejsem vedom. Myslim, ze je to i ve smyslu doporuceni vyvojaru Gentoo, viz prispevek vyse.
# MAKEOPTS provides extra options that may be passed to 'make' when a # program is compiled. Presently the only use is for specifying # the number of parallel makes (-j) to perform. The suggested number # for parallel makes is CPUs+1. #MAKEOPTS="-j2"Zdroj: /etc/make.conf.example
Bežne sa odporúča použiť hodnotu: počet procesorov + 1To je pro másla 8-)