abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 03:00 | Komunita

    Na stránkách Evropské komise, na portálu Podělte se o svůj názor, se lze do 3. února podělit o názor k iniciativě Evropské otevřené digitální ekosystémy řešící přístup EU k otevřenému softwaru.

    Ladislav Hagara | Komentářů: 4
    včera 19:44 | Zajímavý software

    Společnost Kagi stojící za stejnojmenným placeným vyhledávačem vydala (𝕏) alfa verzi linuxové verze (flatpak) svého proprietárního webového prohlížeče Orion.

    Ladislav Hagara | Komentářů: 4
    včera 19:11 | IT novinky

    Firma Bose se po tlaku uživatelů rozhodla, že otevře API svých chytrých reproduktorů SoundTouch, což umožní pokračovat v jejich používání i po plánovaném ukončení podpory v letošním roce. Pro ovládání také bude stále možné využívat oficiální aplikaci, ale už pouze lokálně bez cloudových služeb. Dokumentace API dostupná zde (soubor PDF).

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 14:22 | Zajímavý článek

    Jiří Eischmann se v příspěvku na svém blogu rozepsal o open source AdGuard Home jako domácí ochraně nejen před reklamou. Adguard Home není plnohodnotným DNS resolverem, funguje jako DNS forwarder s možností filtrování. To znamená, že když přijme DNS dotaz, sám na něj neodpoví, ale přepošle ho na vybraný DNS server a odpovědi zpracovává a filtruje dle nastavených pravidel a následně posílá zpět klientům. Dá se tedy používat k blokování reklamy a škodlivých stránek a k rodičovské kontrole na úrovni DNS.

    Ladislav Hagara | Komentářů: 6
    včera 03:33 | Zajímavý software

    AI Claude Code od Anthropicu lépe rozumí frameworku Nette, tj. open source frameworku pro tvorbu webových aplikací v PHP. David Grudl napsal plugin Nette pro Claude Code.

    Ladislav Hagara | Komentářů: 1
    včera 00:11 | Nová verze

    Byla vydána prosincová aktualizace aneb nová verze 1.108 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.108 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    8.1. 20:44 | IT novinky

    Na lasvegaském veletrhu elektroniky CES byl předveden prototyp notebooku chlazeného pomocí plazmových aktuátorů (DBD). Ačkoliv se nejedná o první nápad svého druhu, nepochybně to je první ukázka praktického použití tohoto způsobu chlazení v běžné elektronice. Co činí plazmové chladící akční členy technologickou výzvou je především vysoká produkce jedovatého ozonu, tu se prý podařilo firmě YPlasma zredukovat dielektrickou

    … více »
    NUKE GAZA! 🎆 | Komentářů: 12
    8.1. 16:33 | Zajímavý projekt

    Patchouli je open source implementace EMR grafického tabletu (polohovací zařízení). Projekt je hostován na GitLabu.

    Ladislav Hagara | Komentářů: 0
    8.1. 14:11 | IT novinky

    Český Nejvyšší soud potvrdil, že česká právní úprava plošného uchování dat o elektronické komunikaci porušuje právo Evropské unie. Pravomocným rozsudkem zamítl dovolání ministerstva průmyslu a obchodu. To se teď musí omluvit novináři Českého rozhlasu Janu Cibulkovi za zásah do práv na ochranu soukromí a osobních údajů. Ve sporu jde o povinnost provozovatelů sítí uchovávat údaje, ze kterých lze odvodit, kdo, s kým a odkud komunikoval.

    Ladislav Hagara | Komentářů: 18
    8.1. 02:11 | Komunita

    Google bude vydávat zdrojové kódy Androidu pouze dvakrát ročně. Ve 2. a 4. čtvrtletí.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (5%)
     (5%)
     (0%)
     (10%)
     (20%)
     (4%)
     (5%)
     (3%)
     (11%)
     (51%)
    Celkem 340 hlasů
     Komentářů: 7, poslední 8.1. 15:35
    Rozcestník

    Dotaz: vektory a matice se SIMD (sse2)

    20.12.2006 14:08 vencas | skóre: 32
    vektory a matice se SIMD (sse2)
    Přečteno: 362×
    Zdravím, může mi někdo vyjasnit, které knihovny implementující (malé) matice a vektory používají sse2?
    1. atlas-sse2 je používá, rád bych případně něco s trochu objektovým rozhraním.
    2. Blitz++ si dělá jen svoje optimalizace na úrovni c++ (bez SIMD)?
    3. boost::ublas knihovnu blas (zde v implementaci atlas-sse2) nepoužívá (zběžně pročtené headery)...?
    Konečně, když napíšu něco jako (resp. když je něco takového v nějaké knihovně):
    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.

    Odpovědi

    20.12.2006 14:30 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
    Rozbalit Rozbalit vše Re: vektory a matice se SIMD (sse2)
    Jen střílím, ale při použití parametrů -mfpmath=sse -msse -msse2 by to mohlo dělat gcc samo, ne?
    20.12.2006 14:54 vencas | skóre: 32
    Rozbalit Rozbalit vše Re: vektory a matice se SIMD (sse2)
    Mezitím jsem si to vyzkoušel a bohužel nedělá (mimochodem, HTML validita příspěvků, to je fakt PITA - < a > jsem nahradil |).

    Kompilace: řekl bych, že -march=pentium4 implikuje -msse{,2,3}, ale v man to není. Na výsledek to každopádně nemá vliv; -ggdb3 taky nemá vliv, akorát je vidět zdroják v dumpu. Pořád tam je 3x mulsd.
    $ 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;
    }
    [...]
    
    21.12.2006 10:16 vencas | skóre: 32
    Rozbalit Rozbalit vše Re: vektory a matice se SIMD (sse2)
    Co se gcc týče, našel jsem článek Automatic vectorization for the masses. Zkoušel jsem to na gcc-4.1 a výsledek je následující (options -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.
    (Myslel jsem si, že když se rozbalují smyčky (loop unrolling), tak se z 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.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.