Portál AbcLinuxu, 30. dubna 2025 16:00
V sobotním příspěvku Kdo si hraje, nezlobí (se), aneb výuka architektur počítačů v krizi se chceme podělit o zkušenosti s výukou Architektury počítačů v minulém semestru a otevřít prostor k diskuzi i experimentování.
Update: Díky vstřícnosti organizátorů konference jsme dostali k dispozici prostor ještě v sobotu večer od 18:00 (možná i 17:30) na pokračování s experimentováním s naším HW (Hardwarové bastlení na dálku). Kdo se chce připravit, tak si může prohlédnout záznam přednášky Input/Output on MZ_APO Education Kit nebo se i pustit do návrhu vlastní periferie v FPGA. Jak nový návrh nahrát z běžícího systému je pro výukový APO design popsané ve Wiki našeho projektu integrace CTU CAN FD pro Zynq.
Update 2: Záznam přednášky
V třetím týdnu výuky v minulém semestru byl vyhlášený úplný zákaz kontaktní výuky. Nejdříve na přechodnou dobu, kdy vyučující ze dne na den hledali cesty jak vůbec studenty kontaktovat a předat materiály alespoň na ty nejdříve plánované dva týdny (můj zápisek Záznam povídání o paměti a jeho příprava). Poté byli postavení před úkol přejít na distanční výuku do konce semestru. Po strávení většiny času z těch dvou týdnů editováním 140 GB video záznamu z posluchárny jsem dospěl k závěru, že dohromady s vedením cvičení nemám šanci takovou časovou investici a zátěž zvládnout a přešel jsem na nahrávání doma v provizorně vytvořeném virtuálním studiu. O použité technice mám rozepsaný zápisek, ale do přednášky na konferenci OpenAlt 2020 ho určitě vydat nestihnu. V příspěvku se pokusím v rychlosti o některých nápadech a zkušenostech pohovořit naživo. Výsledek přípravy přednášek je k dispozici na YouTube a odkazy na letošní videa jsou přidaná i do zápisku o plánování letošního běhu.
Zásadní pro výuku základní koncepce jednocyklového a zřetězeného procesoru byl simulátor QtMips. Studenti, kteří si ho podle pokynu vyzkoušeli a doma nainstalovali již během začátku semestru mohli plynule přejít na distanční formu výuky podle videí a probírat dotazy a příklady na setkáních se svými cvičícími v časech původně plánovaných cvičení v laboratoři. Pro snadné předávání aktualizovaných příkladů z přednášek a pro procvičení jsme použili GIT (stud-support). Pokud někdo bude mít chuť zkusit úlohy řešené studenty tak si zkuste třeba sladit a optimalizovat na nejnižší počet cyklů algoritmus třidění čísel v paměti s tím, že máte možnost na procesor integrovat maximálně 16 slov paměti cache (popis úlohy v šabloně seminaries/qtmips/apo-sort/apo-sort-template.S). Testovat lze jak v grafické nebo online verzi simulátoru. Automatické vyhodnocení a kontrola na serveru pak využívaly řádkovou verzi simulátoru a plnohodnotný MIPS toolchain (mips-elf-gnu). Po nainstalování pak stačí v adresáři s příkladem zadat make run_test
.
Za běžných podmínek pak semestr končí využitím získaných znalostí k naprogramování aplikace pro plnohodnotný systém s procesorem ARM Cortex-A9, na kterém běží distribuce Debian. Přitom vlastní procesorový modul MicroZed je doplněný sadou jednoduchých periferií vstupních a výstupních jak v podobě reálného hardware tak v podobě na míru vytvořeného FPGA návrhu se bloky registrů s bity přímo odpovídajícími LED diodám, čtené poloze voličů atd. Popis periferií připravených pro náš předmět je k dispozici na stránce Přípravek MicroZed APO. Popis prvních kroků, jak s výukovým kitem pracovat pak na stránce Nápověda k práci s přípravkem MicroZed APO. Základní šablona pro přípravu vlastní aplikace s přímým přístupem k registrům periferií z uživatelské aplikace se nachází v GITu mzapo_template. Práce v běžném provozu předpokládá fyzický přístup ke kitům. Stáli jsme tedy před rozhodnutím buď semestrální úlohu zrušit, či zcela nahradit jinou prací nebo zpřístupnit hardware přes Internet. Vzhledem k zátěži studentů dalšími předměty a u některých i ztrácení se v problematice bez kontaktu a porady se spolužáky jsme umožnili těm, kdo měli z práce na dálku obavy, aby odevzdali podobnou práci implementovanou pro simulátor. Ten původně zamýšlený pro grafické aplikace a rychlé spouštění kódu nebyl a jeho použití i po vypnutí většiny vizualizací nebylo komfortní. Odvážnějším studnetům jsme nabídli práci na dálku a po výrobě dalších 20 kitů financovaných z výzvy RPAPS (Rozvojové projekty akademických pracovníků a studentů 2020) jsme kity půjčovali i s lokální instalací systému domů. Pro práci na dálku jsme zajistili přístup k sedmi kitům přes SSH a možnost jejich sledování přes YouTube. Jeden kit byl a stále je k dispozici v zobrazení s vyšším rozlišením přes VLC a ffplay.
ffplay -fflags nobuffer rtmp://147.32.86.117/live/mzapo100
Pozor, počáteční prodleva je velmi vysoká, video se přeposílá přes NGINX z VLC jako RTMP stream (Pokud by někdo uměl poradit, jak počáteční prodlevu zkrátil, radu velmi uvítám). Poté je již latence přenosu i ke mě domů 1.5 sekundy, tedy použitelná na experimentování s HW. Postupně jsme pro studenty přidali i na dva kity možnost nastavovat otočné voliče na dálku přes modelářská serva a doplnily sestavy i přípravky se stejnosměrnými motory.
Během sobotní přednášky plánuji poskytnout privátní klíč ke kontaktování desky a zájemci si mohou vyzkoušet manipulovat s periferiemi, otáčet servy nebo naimplementovat i kompletní servořízení stejnoměrného motoru s inkrementálním čidlem. Vzorem může být článek Linux pro řízení: minimalistické řešení řízení stejnosměrného motoru. V případě naší desky a Zynqu je úloha výrazně zjednodušená, protože výstup inkrementálního čidla je zpracovaný do formy čítače polohy již na úrovni FPGA. Přípravek běží z overlayfs vrstvy v tmpfs nad vyexportovaným svazkem z mého školního počítače. (během semestru běžely kity z diskless infrastruktury katedry). Cílový systém je i na dálku monitorovaný přes sériový port z mého počítače a vysláním dostatečně dlouhého break signálu je možné systém na dálku resetovat a začne poté nabíhat z cela čistého exportovaného svazku. Poškození dat tedy nehrozí. Jinak tento konkrétní kus je trvale používaný v systému kontinuální integrace a testování našeho projektu CTU CAN FD. Může se tedy stát, že kolegové pošlou do repozitáře i během soboty změnu a svět se případným experimentátorům změní pod rukama, výukové periferie se nahradí naším projektem řešeným pro části jednoho velkého automobilového koncernu.
Těším se na vás v sobotu. Něco s kolegou Karlem Kočím o našich zkušenostech popovídáme, budeme rádi, když se do diskuze zapojí i další, ať již naši cvičící, studenti nebo další zájemci a odborníci a přinesou něco nového. Kdo se trochu připraví, tak si i s našimi hračkami (simulátorem a jednou deskou MZ_APO - další nyní slouží v jiném předmětu) mohou vyzkoušet experimentovat. Plánuji pohled na destičku připojit do BigBlueButton jako dalšího účastníka konference. Práci studentů a případnou nápravu/reboot HW jsem během semestru kontroloval z domova. Během soboty budu prezentovat přímo z naší místnosti na Galerii nad Strojovnu, takže budu i fyzicky přítomný. Pokud by někdo moc zlobil, tak kit má i dostupné tlačítko reset a nebo lze vypojit zdroj ze zásuvky.
S přáním Ať vám i vašim blízkým umožní zdraví plnit si své sny a nic a nikdo vám nebrání sdílet radost a výsledky vaší práce a tvorby z mého letošního PF 2020, které je nyní o mnohem aktuálnější než v době jeho rozesílání,
Pavel Píša
Tiskni
Sdílej:
Já jen dodám, že to je právě ten problém, to přeposílání.Tak tohle lidem zkuste vysvětlit. Přesměrování čehokoliv na Google je přece samozřejmost.
Přesměrování něčeho mimo mailserver je v dnešní době nefunkční věc.Zopakuju, co jsem napsal: tak to zkuste vysvětlit lidem. Přesměrování čehokoliv na Google je samozřejmost.
musí se naladit SRS a další věci (nikdo to na serverech nemá nastaveno) a i tak to nebude ideální.Mám a není
Pokud mají třeba vlastní řešení, tak zakázat možnost přesměrování na externí adresy, nebo k tomu dát jednoduché poučení, ať to nedělají a nastaví si vybírání.Zakázat - no jestli nám přijdete pomoct se zvedáním telefonů, tak klidně, ale vemte si s sebou tak deset lidí na výpomoc
Proto je v dnešní době nejlepším řešením si nastavit automatické vybírání schránky.Mně přijde nejlepší řešení dát přeposílající server/obálkovou adresu do allowlistu. Jenže to by Google nesměl být capitalism gone amok:
Něco z toho lze řešit pomocí SRS, které se nasadí na ten přeposílací serverUž jsem psal - jde to, ale selže DMARC, protože mechanismus standardizovaný pro obálkové adresy aplikuje na adresy ve zprávě. Na to se musí použít ARC, to určitě povede k nějakému dalšímu problému, takže kolečko, kdy monopolní Google každých pár let vymyslí nový standard, aby lidem provozování vlastních poštovních služeb co nejvíc znepříjemnil, může pokračovat. Samozřejmě ze svých serverů rozesílají spam taky, ale s tím se nic dělat nedá. Prostě "capitalism gone amok" to vystihuje přesně. A nikdo si na ně nedošlápne, když mají obrat větší než HDP států, kde nabízejí své služby.
Pritom by možno stačilo označiť v google mail :"Toto nie je SPAM." Vidim problém, že niektorí to buď neoznačia alebo to umýselne urobia. Potom google nevie čo vlastne s tým má urobiť.
Iný prístup je poučenie, že správa čo prišla do schránky sa považuje za doručenú. Ďalšie doručovanie už nie je na zodpovednosti Vysokej školy.
Přidáš si doménu, oni ti na základě toho vygenerují DNS záznamKouknu. Ale jinak dobrý, co 10000 domén? To je teda separátní problém, ale úplně podobný - maily poslané přes tenhle server (relay pro desktopové poštovní klienty) občas zahučí u googlu v černé díře. A to ten server je nastavený extra paranoidně, aby se přes něj nespamovalo, i když lidem ukradnou přihlašovací údaje. Fakt neberu to, že Google zahazuje maily na základě nějakých platných důvodů (mailservery fakt mám nastavené dobře včetně PTR a spol.) Prostě házejí klacky pod nohy konkurenci. Ostatně totéž platí i pro jejich ostatní aktivity třeba u webu.
Nic co by jí mohla škola nabídnout.Ne každá škola má po ruce kvalifikovaného ajťáka, který bude schopen něco takového vyrobit. A naopak každá učitelka si může doma (nechat) postavit všechno tak, jak chce, aniž by kvůli tomu bylo potřeba pořádat výběrové řízení. (Ve kterém před lepším řešením snadno vyhraje lépe vypapírované řešení.)
zajistit si alespoň trochu slušnou konektivitu by snad problém být nemělJe to zakázka, musí to projít přes výběrové řízení, což pro začátek znamená, že někdo (ten ajťák, kterého škola nejspíš nemá) musí vědět, co vlastně chce. Napsat do zadání "trochu slušná konektivita" ke kýženému výsledku nepovede.
bohužel od té doby, co o obsazení těchto postů rozhodují politické klikyTedy od vzniku škol.
A ano, výklad s projektorem na ukázky a tabulí na kreslení s komunikujícími a dotazujícími se studenty a kolegy naživo video v žádném přídě plně nenahradí.Přímý přenos s nějakým jabberem, matrixem nebo něčím takovým na kladení dotazů, by nešel? (Tím neříkám jako náhrada přednášky naživo, ale furt lepší než offline video.)
Pozor, počáteční prodleva je velmi vysoká, video se přeposílá přes NGINX z VLC jako RTMP stream (Pokud by někdo uměl poradit, jak počáteční prodlevu zkrátil, radu velmi uvítám). Poté je již latence přenosu i ke mě domů 1.5 sekundyVzhledem k tomu, že se tam prakticky nic nehýbe, tipnul bych si, že zdroj toho videa neposílá moc B-snímků, protože všechno jde řešit rozdílem oproti předchozímu. Tj. že počáteční latence není nic jiného, než čekání na to, až ten enkodér nějaký B-snímek vyrobí, i když to potřeba není. Pokud by to tak bylo, mohlo by stačit vynutit generování B-snímků v kratších intervalech
/usr/bin/vlc -I dummy v4l2:///dev/video0:chroma=yu12:width=1920:height=1080:fps:30 --sout=#transcode{vcodec=h264,acodec=none,vb=1200,fps=30,venc=x264{preset=ultrafast,tune=zerolatency,keyint=30,bframes=0,ref=1,level=30,profile=baseline,hrd=cbr,crf=20,ratetol=1.0,vbv-maxrate=1200,vbv-bufsize=1200,aud,lookahead=0,repeat-headers=1}}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=xxx}
Na druhou stranu se mi i podle nějaké dokumentace a dalšího zdá, že ffplay na začátek nabírá nejdříve buffer nějaké, celkem značné velikosti a teprve potom začne řešit co v něm vlastně má.
Dobře chodící připojení z VLC jako klienta se mi nastavit nepodařilo. Vždy to bylo s velkou prodlevou.
Předem díky za případné další nápady.
Na druhou stranu se mi i podle nějaké dokumentace a dalšího zdá, že ffplay na začátek nabírá nejdříve buffer nějaké, celkem značné velikosti a teprve potom začne řešit co v něm vlastně má.Těžko říct. Zkusil jsem a zdálo se mi to taky - mplayer s
-nocache
i mpv s --cache=auto
a no
přehrávání spustí v podstatě vždycky stejně, nějakých půl minuty po spuštění programu. Na druhou stranu tohle
mkfifo stream rtmpdump -r rtmp://147.32.86.117/live/mzapo100 --live --quiet >stream mpv --cache=no streampřestane přehrávat nějakých 5 sekund po ukončení toho rtmpdump. Což ovšem může znamenat, že zahodí zbytek cache, když narazí na konec dat v tom souboru. Jinak jsem to spletl, není to B-snímek, ale (velké i) I-snímek. Zkuste se podívat na parametry sout-x264-keyint/keyint, možná to pomůže. Jestli jsem dobře pochopil, tak při výchozí hodnotě můžou být při 30fps v intervalu 8 sekund.
ten keyframe/iframe interval jsem se právě snažil zkrátit tou volbou keyint=30... a to jsem to v tom příspěvku to "keyint" hledal, než jsem odpověděl. No jo, tak příště
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.