Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Jakub Štech

Stran: 1 ... 5 6 [7] 8 9 ... 22
91
Vývoj / Re:GCC optimalizace pro různé ISA
« kdy: 25. 10. 2021, 00:21:34 »
Když to přepíšu do C a nechám zkompilovat zigem (jde to přes libclang a llvm), tak je ta funkce v RV64 podstatně ukecanější, ale neumím určit, jestli to je jiným nastavením optimalizace (ReleaseSmall vs. -Os), nebo se v Zigu se silnějším typovým systémem daří lépe hledat invarianty.

zig cc main.c -target riscv64-linux -Os -o main:
Kód: [Vybrat]
0000000000000000 <is_prime>:
       0: 11 46         addi    a2, zero, 4
       2: 85 45         addi    a1, zero, 1
       4: 63 64 c5 02   bltu    a0, a2, 0x2c <is_prime+0x2c>
       8: 9b 55 15 00   srliw   a1, a0, 1
       c: 09 46         addi    a2, zero, 2
       e: bb 76 c5 02   remuw   a3, a0, a2
      12: 1b 07 06 00   sext.w  a4, a2
      16: b3 37 d0 00   snez    a5, a3
      1a: 33 37 b7 00   sltu    a4, a4, a1
      1e: 7d 8f         and     a4, a4, a5
      20: 05 06         addi    a2, a2, 1
      22: 75 f7         bnez    a4, 0xe <is_prime+0xe>
      24: 13 b5 16 00   seqz    a0, a3
      28: 93 45 15 00   xori    a1, a0, 1
      2c: 2e 85         mv      a0, a1
      2e: 82 80         ret

92
Vývoj / Re:GCC optimalizace pro různé ISA
« kdy: 24. 10. 2021, 23:48:37 »
Zajímavé hraní :-) paradoxně mi tu RV64 vychází jako nejkratší. Krátká aritmetická funkce:

Kód: [Vybrat]
fn is_prime(n: u32) bool {
    var i: u32 = 2;

    while (i <= n / 2) {
        if (n % i == 0) {
            return false;
        }

        i += 1;
    }

    return true;
}

Chvíli jsem musel přemýšlet, protože v jednoduchém programu, kdy jen funkci zavolám z mainu s nějakým parametrem, mi Zig během kompilace dokázal, že jsou všechny argumenty známé a tak funkci vůbec nezkompiloval, rovnou dosadil výsledek :-)

RV32 mi chybí, ve standardní knihovně není implementace jednoho syscallu.

zig build-exe -O ReleaseSmall main.zig:
Kód: [Vybrat]
0000000000208c36 <is_prime>:
  208c36: 89 f9                         mov     ecx, edi
  208c38: d1 e9                         shr     ecx
  208c3a: 6a 02                         push    2
  208c3c: 58                            pop     rax
  208c3d: 89 c6                         mov     esi, eax
  208c3f: 39 c8                         cmp     eax, ecx
  208c41: 77 0d                         ja      0x208c50 <is_prime+0x1a>
  208c43: 89 f8                         mov     eax, edi
  208c45: 31 d2                         xor     edx, edx
  208c47: f7 f6                         div     esi
  208c49: 8d 46 01                      lea     eax, [rsi + 1]
  208c4c: 85 d2                         test    edx, edx
  208c4e: 75 ed                         jne     0x208c3d <is_prime+0x7>
  208c50: 39 ce                         cmp     esi, ecx
  208c52: 0f 97 c0                      seta    al
  208c55: c3                            ret

zig build-exe -O ReleaseSmall main.zig -target i386-linux:
Kód: [Vybrat]
004087b1 <is_prime>:
  4087b1: 57                            push    edi
  4087b2: 56                            push    esi
  4087b3: 89 ce                         mov     esi, ecx
  4087b5: d1 ee                         shr     esi
  4087b7: 6a 02                         push    2
  4087b9: 58                            pop     eax
  4087ba: 89 c7                         mov     edi, eax
  4087bc: 39 f0                         cmp     eax, esi
  4087be: 77 0d                         ja      0x4087cd <is_prime+0x1c>
  4087c0: 89 c8                         mov     eax, ecx
  4087c2: 31 d2                         xor     edx, edx
  4087c4: f7 f7                         div     edi
  4087c6: 8d 47 01                      lea     eax, [edi + 1]
  4087c9: 85 d2                         test    edx, edx
  4087cb: 75 ed                         jne     0x4087ba <is_prime+0x9>
  4087cd: 39 f7                         cmp     edi, esi
  4087cf: 0f 97 c0                      seta    al
  4087d2: 5e                            pop     esi
  4087d3: 5f                            pop     edi
  4087d4: c3                            ret

zig build-exe -O ReleaseSmall main.zig -target arm-linux:
Kód: [Vybrat]
00028100 <is_prime>:
   28100: 70 40 2d e9   push    {r4, r5, r6, lr}
   28104: 00 40 a0 e1   mov     r4, r0
   28108: a0 60 a0 e1   lsr     r6, r0, #1
   2810c: 02 10 a0 e3   mov     r1, #2
   28110: 01 50 a0 e1   mov     r5, r1
   28114: 06 00 51 e1   cmp     r1, r6
   28118: 05 00 00 8a   bhi     0x28134 <is_prime+0x34> @ imm = #20
   2811c: 04 00 a0 e1   mov     r0, r4
   28120: 05 10 a0 e1   mov     r1, r5
   28124: eb 02 00 eb   bl      0x28cd8 <__umodsi3>     @ imm = #2988
   28128: 01 10 85 e2   add     r1, r5, #1
   2812c: 00 00 50 e3   cmp     r0, #0
   28130: f6 ff ff 1a   bne     0x28110 <is_prime+0x10> @ imm = #-40
   28134: 00 00 a0 e3   mov     r0, #0
   28138: 06 00 55 e1   cmp     r5, r6
   2813c: 01 00 00 83   movwhi  r0, #1
   28140: 70 80 bd e8   pop     {r4, r5, r6, pc}

zig build-exe -O ReleaseSmall main.zig -target aarch64-linux:
Kód: [Vybrat]
0000000000216a94 <is_prime>:
  216a94: 08 7c 01 53   lsr     w8, w0, #1
  216a98: 4a 00 80 52   mov     w10, #2
  216a9c: e9 03 0a 2a   mov     w9, w10
  216aa0: 5f 01 08 6b   cmp     w10, w8
  216aa4: a8 00 00 54   b.hi    0x216ab8 <is_prime+0x24>
  216aa8: 0a 08 c9 1a   udiv    w10, w0, w9
  216aac: 4b 81 09 1b   msub    w11, w10, w9, w0
  216ab0: 2a 05 00 11   add     w10, w9, #1             // =1
  216ab4: 4b ff ff 35   cbnz    w11, 0x216a9c <is_prime+0x8>
  216ab8: 3f 01 08 6b   cmp     w9, w8
  216abc: e0 97 9f 1a   cset    w0, hi
  216ac0: c0 03 5f d6   ret

zig build-exe -O ReleaseSmall main.zig -target riscv64-linux:
Kód: [Vybrat]
000000000001778c <is_prime>:
   1778c: 9b 55 15 00   srliw   a1, a0, 1
   17790: 09 46         addi    a2, zero, 2
   17792: 9b 06 06 00   sext.w  a3, a2
   17796: 63 e6 d5 00   bltu    a1, a3, 0x177a2 <is_prime+0x16>
   1779a: 3b 77 c5 02   remuw   a4, a0, a2
   1779e: 05 06         addi    a2, a2, 1
   177a0: 6d fb         bnez    a4, 0x17792 <is_prime+0x6>
   177a2: 33 b5 d5 00   sltu    a0, a1, a3
   177a6: 82 80         ret

zig build-exe -O ReleaseSmall main.zig -target powerpc-linux:
Kód: [Vybrat]
10018e9c <is_prime>:
10018e9c: 54 64 f8 7e   srwi 4, 3, 1
10018ea0: 38 c4 00 01   addi 6, 4, 1
10018ea4: 38 a0 00 02   li 5, 2
10018ea8: 28 06 00 02   cmplwi  6, 2
10018eac: 41 81 00 0c   bt      1, 0x10018eb8
10018eb0: 60 a6 00 00   ori 6, 5, 0
10018eb4: 48 00 00 04   b 0x10018eb8
10018eb8: 38 c6 ff ff   addi 6, 6, -1
10018ebc: 7c c9 03 a6   mtctr 6
10018ec0: 7c a6 2b 78   mr      6, 5
10018ec4: 42 40 00 18   bdz 0x10018edc
10018ec8: 7c a3 33 96   divwu 5, 3, 6
10018ecc: 7c a5 31 d6   mullw 5, 5, 6
10018ed0: 7c a5 18 51   sub.    5, 3, 5
10018ed4: 38 a6 00 01   addi 5, 6, 1
10018ed8: 40 82 ff e8   bf      2, 0x10018ec0
10018edc: 7c 06 20 40   cmplw   6, 4
10018ee0: 38 60 00 00   li 3, 0
10018ee4: 38 80 00 01   li 4, 1
10018ee8: 41 81 00 08   bt      1, 0x10018ef0
10018eec: 4e 80 00 20   blr
10018ef0: 38 64 00 00   addi 3, 4, 0
10018ef4: 4e 80 00 20   blr

zig build-exe -O ReleaseSmall main.zig -target mips-linux:
Kód: [Vybrat]
00029adc <is_prime>:
   29adc: 00 04 10 42   srl     $2, $4, 1 <main+0x1>
   29ae0: 24 03 00 02   addiu   $3, $zero, 2 <main+0x2>
   29ae4: 24 06 00 02   addiu   $6, $zero, 2 <main+0x2>
   29ae8: 24 41 00 01   addiu   $1, $2, 1 <main+0x1>
   29aec: 2c 25 00 03   sltiu   $5, $1, 3 <main+0x3>
   29af0: 00 25 18 0a   movz    $3, $1, $5
   29af4: 10 66 00 07   beq     $3, $6, 32 <is_prime+0x38>
   29af8: 00 c0 28 25   move    $5, $6
   29afc: 00 85 00 1b   divu    $zero, $4, $5
   29b00: 24 a6 00 01   addiu   $6, $5, 1 <main+0x1>
   29b04: 00 a0 01 f4   teq     $5, $zero, 7 <main+0x7>
   29b08: 00 00 08 10   mfhi    $1
   29b0c: 14 20 ff f9   bnez    $1, -24 <is_prime+0x18>
   29b10: 00 00 00 00   nop <main>
   29b14: 03 e0 00 08   jr      $ra
   29b18: 00 45 10 2b   sltu    $2, $2, $5

93
Vývoj / Re:GCC optimalizace pro ruzne ISA
« kdy: 24. 10. 2021, 13:50:39 »
-O0 a -Os na GCC produkuje velmi špatnej RV kód, porovnej s -O2 nebo -O3 a bude tam toho házení vidlema podstatně míň (a výstup bude paradoxně kratší než s -Os).

94
Software / Re:Poznámkový software
« kdy: 21. 10. 2021, 19:24:28 »
Myslím že ve všech bodech vyhovuje https://logseq.com/

- poznámky jsou ve stromu (nebo přesněji v orientovaném grafu, ale typicky se z něj využije jen ta acyklická stromová podmnožina :)
- libovolný podstrom lze otagovat, připojit na více místech v hierarchii
- lze připojit multimedia
- umí zobrazit (graficky) závislosti mezi nody, tj. graf
- free software
- používá to lokální storage v prohlížeči

95
Server / Re:Zabezpečení výrobních zařízení v továrně
« kdy: 06. 10. 2021, 19:43:31 »
Jestli to máte na síti, tak stačí i něco tak hloupýho, jako program, co se v určitou hodinu (před začátkem výroby) připojí přes ssh na to zařízení a několika příkazy dešifruje klíč (do RAM).

96
Hardware / Re:Balíčky z Aliexpresu
« kdy: 02. 10. 2021, 14:12:04 »
Aliexpress měl s předstihem hotovou integraci DPH, takže je to teď naopak úplně bez problémů. Cokoliv objednáš, dorazí bez průtahů. Samozřejmě neschopnost lokální buňky české pošty platí stále.

97
Odkladiště / Re:Chytrá domácnost - jak na to?
« kdy: 30. 09. 2021, 00:40:11 »
LEDky na proudově regulované větvi se běžně nepoužívají? Když jsem stavěl, tak jsem ani neuvažoval o ničem jiném, prostě mám ve stropě nějakou logiku (do které vedou dráty z vypínačů, čidel atd.) která řídí buck, a ten reguluje proud skrz kvalitní LED lampy a pásky. Obvod je triviální, výměna kus za kus (mám "skladem", je to jen bluepill v hloupým baseboardu), případný fallback je přemostění bucku spínačem.

98
Odkladiště / Re:Chytrá domácnost - jak na to?
« kdy: 28. 09. 2021, 22:03:11 »
Jestliže není problém 4 W trvale do zámku, tak tam nějaký dráty už vedou, ne? A tím pádem je můžeš přerušit tím čidlem, ono to může být klidně v zárubni nebo kdekoliv jinde. A v podstatě to ani nemusí být bezkontaktní čidlo, stejně dobře poslouží např. zvonkový tlačítko s doběhovým časovačem :-)

99
Odkladiště / Re:Chytrá domácnost - jak na to?
« kdy: 28. 09. 2021, 17:07:27 »
Né, tam žádný baterky nejsou, prostě ta 12V větev která by tekla permanentně do zámku se bude přerušovat PIRkou, která tou stejnou větví bude napájená. Když bude 12V zdroj zapnutej, tak budou dveře otvírat samy, a když ho vypneš, tak zůstanou zamčený.

Například tohle https://www.toplux.cz/led-ovladace/06801/ zapojeno takhle

Kód: [Vybrat]
Zdroj 12V ────┬───────────────────────────┐
              │ ┌───────────────────────┐ │
              └─┤ Vin               Vsw ├─┘
                │       PIR čidlo       │
              ┌─┤ GND              Vout ├─┐
              │ └───────────────────────┘ │
              │                     ┌─────┴─────┐
              │                     │   Zámek   │
              │                     └─────┬─────┘
              ┴                           ┴

Edit: ale záložní cestu ze dvorka domů 100% měj, protože všechno může selhat, třeba ten 12V zdroj :D

100
Odkladiště / Re:Chytrá domácnost - jak na to?
« kdy: 28. 09. 2021, 14:51:47 »
Těch 12 V přece můžeš do zámku posílat přes 12V PIR čidlo (nebo jinou detekci osoby, třeba optickou závoru), takže je-li ta větev zapnutá (spínačem "odemčeno"), systém odemkne každému, ale zároveň bude odběr v klidu jen pár mW.

101
Zkusil jsem to na stroji s RK3399 (A72+A53) a na obecnej problém armu to určitě nevypadá. 39MiB archiv s nějakou hudbou, 12 souborů.

unzip Cherlene.zip  0.71s user 0.06s system 99% cpu 0.770 total

tj. zhruba 50 MiB/s

102
Odkladiště / Re:Solární elektrárna - co za dodavatele?
« kdy: 25. 09. 2021, 16:36:01 »
Souhlas, NCM do baráku bych se bál, radši LiFePO. Důvod pro ně je jasný, je to na kWh levnější. Určitě by ale nebyl problém si nechat navrhnout patřičně velkou náhradu z Pylontechů nebo jiných lithium-fosfátových modulů.

103
Odkladiště / Re:Solární elektrárna - co za dodavatele?
« kdy: 24. 09. 2021, 23:32:36 »
Taky hlas za S-Power, dělal jsem pro ně nějaký vývoj a firma je to dobrá, nejsou to šmelináři. Hodně rychle vyrostli, tak je tam občas trochu chaos, jak píšete :-)

Na webu mají pár fotek realizací plochých střech, určitě nebude problém si říct o fotky detailů ve vyšší kvalitě.

104
Distribuce / Re:Mizející místo na disku v Ubuntu
« kdy: 20. 09. 2021, 21:39:08 »
Není něco skryto nějakým mountem? Modelová situace

Kód: [Vybrat]
dd if=/dev/zero of=/dev/big-invisible-file bs=1G count=90
mount -t devtmpfs udev /dev

potom stačí rootfs nabindovat někam jinam a znova prohlédnout:

Kód: [Vybrat]
mkdir /tmp/investigation
mount --bind / /tmp/investigation
ncdu /tmp/investigation

105
Odkladiště / Re:Chytrá domácnost - jak na to?
« kdy: 20. 09. 2021, 17:50:04 »
1 kW? (...) co tam proboha tolik žere?

Kvůli úspoře ve vývoji se do všeho cpe Linux s webserverem, jenže se pak těžko dostanete k odběru v nanoampérech, jako je možné s vhodným ultra low power MCU. Když máte stovky čidel, gatewayí, smart žárovek s 0.5 W na kus, většinu napájenou zdroji s malou účinností v malé zátěži, tak se to nasčítá. Výrazně lepší je situace, když se s tím v domě počítá od začátku a je k dispozici DC síť, místo desítek nezatížených adaptérů tam pak centrálně pracuje jeden dobře zatížený meanwell.

@Charon351 moje zkušenosti jsou irelevantní, za poslední 2-3 roky se to strašně změnilo (k lepšímu). V době, kdy fotovoltaický panel je v podstatě nejlevnější střešní krytina, skoro ani nemá smysl dávat na střechu něco jiného. :-) Stavěl jsem tehdy DIY z komponent od GWL, a od té doby se situace změnila tak, že za stejnou cenu vám to udělá firma na klíč a se zárukami.

Stran: 1 ... 5 6 [7] 8 9 ... 22