Quote:IMHO, the most interesting development towards a Forth on the GPU is SPIR-
V, the virtual machine for Vulcan (and OpenCL). Conceptually, this
should be an umbilical Forth, so you write Forth code, which gets
translated into SPIR-V, and you can let it run as shader or compute core.
01-31-2022, 04:03 AM (This post was last modified: 01-31-2022, 04:21 AM by mikikg.)
Zanimljivo, nisam skorije radio sa nekim DAC-kićem koji ima ovavku inicialnu preciznost tj kada DAC dobije instrukciju da na primer postavi 110mV pa zatim relativno merenje i komanda za 120 mV i instrument pokaže ovo sa fotke a pri tome taj DAK-ić dolazi za nožice kontrolera i ima setling-time reda 2ns i sve se pokrece kroz FORTH tj u ovom konkretnom slučaju TAQOZ Forth na 8-core Propeller 2 kontroleru!
Imam problema sa brzinom opreme, najbrži FTDI 232R USB interface koji imam radi do 3MBaud-a asinhronu serisku komunikaciju, inače Propeller 2 radi do nekih 20MBaud : ) ... Inače ima auto-speed detekciju, tj ovaj kontroler se ne buni ni za jednu brzinu, šta imaš i kolko možes ti teraj ...
BTW: Da ne nabrajam šta sve ima u ovom TAQOZ i kakve sve podrške, samo kada sam video da je neko u tu verziju uključio i "drajver" za Si5351 Clock Generator, pomislio sam da se neko šali samnom!?
Obzirom da P2 ima 64 IO pinova, i neka bude da upotrebimo 10 za uSD, konzolu, neku memoriju, ostaje još 54 slobodnih pinova, od kojih SVAKI i svi odjednom, mogu biti: adc, dac, IO, komparatori, digitalna logika i još gomilu funkcija golih smart pinova, a bez bitnog angažovanja jezgara.
P2 ima jako moćan hardver smart pinova, plus što ima 8 jezgara koji praktično rade istovremeno (samo prvih nekoliko taktova treba da se ulanči bafer i posle su istovremeno angažovana).
Sam Forth zahteva drugačiji način razmišljanja od ostalih jezika i apsolutna je greška da pokušate neki svoj kod (npr C i td...) da "preradite" na Forth.
Dobićete daleko lošije performanse od maksimalnog rezultata. Treba drugačije razmišljati iz korena.
Kod Forth je dobro iscepkati masivniji kod na više sitnih reči, koje ograničeno u jednom mahu koriste stek, a na taj način se maksimalno izbegava pravljenje i upotreba varijabli i štedi se jako na vremenu izvršenja...
Takođe, za razliku od mase ostalih jezika, ovde možete imati gomilu povratnih vrednosti iz "funkcije", tj. iz REČI.
Broj povratnih vrednosti je praktično ograničen samo dubinom steka.
07-14-2022, 04:27 PM (This post was last modified: 07-14-2022, 04:36 PM by mikikg.)
Uspeo sam da spojim minimalni Forth koji sam postavio ovde sa Qt-om.
Vrlo interesatna priča, prvo što to odprilike da to niko nije probao niti koristio (osim jednog rusa, administrator nekog foruma : ), drugo što mi je trebalo od same ideje i pomisli da tako nešto uradim i poteram neki osnovni koncept odprilike manje od jednog dana, treće radi mnogo dobro, četvrto kako se to "bezobrazno dobro" integriše i kako se prelepo skače iz konteksta u kontekst preko stack-a, peto Qt (C/C++) je postao napokon interaktivan kada mu se ubaci Forth interpreter i napokon mogu da izvršim sekvencu komanti poput ove koja se zove "skok" koja hvata nekoliko Qt kontrola i "klikne ih" u razmaku od jedne sekunde, da mi preskoči tamo neke korake da ne moram ja stalno to da klikćem ručno ...
Hehe, spomenuh u ecmX temi da sam pokrenuo Forth na GPU!
I evo jedan primer, 200 Forth VM-ova (virtualnih masina) koji rade paralleno na grafickoj kartici!
Svaka VM je kao neki mali MCU koja imam 8 ulaza i 8 izlaza i jedan 8x7-Seg displejcic
Napravio sam specialno Forth jezgro koje moze da radi i na pravom MCU STM32, i na PC samostalno ili kroz NGINX, i kroz WebASM u browseru i na GPU, isti programi svuda samo u razlicitim kontekstima!
Interaktivno sve moze da se pali i gasi i menja program u letu, svi rade nad istim skupom nekih podata (ako trazim tako), tj kada udje neki novi podatak to moze da procesira XYZ razlicitih Forth VM-ova istovremeno - paralelno ...
Yesterday, 09:48 PM (This post was last modified: Yesterday, 09:58 PM by mikikg.)
Evo nastavka priče od onih 200 Forth VM-ova na grafičkoj, sad je to preraslo u ozbiljan projekat
Forth jezgra pisana ručno u asembleru, za svaku porodicu procesora posebno
Jedan isti Forth, a ispod njega ručno pisano jezgro za svaki procesor posebno. Jezgro je mala virtuelna mašina: NEXT petlja, opkodi i tabela skokova.
Svako jezgro se proverava protiv iste reference (moj forth.c): isti ulaz, pa se poredi stek, status i cela memorija VM-a, bajt po bajt.
Živo, pravo ovde: ekran sa prozorima crta Forth u WASM jezgru, preko GPU-a vašeg pregledača (prozor Demo ima film, logo, tunel, plazmu...). ceo ekran
1. Koja jezgra imam i koliko su velika
Veličina u bajtovima flash-a, samo jezgro, bez programa i podataka.
Porodica
Čipovi
Jezgro (B)
Provereno
DOS 16-bit
8086, .COM
563
DOS emulator
PIC16
PIC16F18855, PIC16F17125
924
pravi čip (PICkit 5)
x86-32
i386+, Linux bez libc
1 028
Linux
WASM
browser
1 392
Node, browser
PRU
TI PRU-ICSS (AM335x, AM64)
1 520
pravi PRU0 na BBB
C2000
TI Piccolo F28x
1 682
simulator
RISC-V
RV32IMC: ESP32-C3/C6, CH32V
2 104
QEMU
Xtensa
ESP32, S2, S3
2 342
QEMU
Thumb-1
STM32 F0, RP2040, nRF51
2 346
QEMU
Thumb-2
STM32 F1/F4/G4/H7
3 214
QEMU + prava BBB
AArch64
RPi 3/4, Zero 2 W
3 496
QEMU
8051
8051, 8052
4 031
simulator
x86-64
PC, serveri
4 035
Linux
ARMv6
RPi Zero, BeagleBone Black
4 552
prava BBB
Z80
Z80
—
simulator
PTX
NVIDIA GPU
—
RTX 5060 Ti
Od pola kilobajta do četiri i po, zavisno od procesora.
2. Konzola (REPL) nad ASM jezgrom
Pun interaktivni Forth (parser, rečnik, ispis, sve) radi direktno nad ručno pisanim jezgrom.
Jezgro
Konzola (B)
Gde
Rezultat
x86-64
25 792
PC, Linux
201/201 isto kao forth.c
Thumb-2
15 721
Cortex-M4 (-Os); pravi test na BBB
201/201, 1,7–1,8x brža od forth.c
3. GPU — hiperparalelno
Svaka nit na grafičkoj je jedan ceo Forth VM, sa svojom memorijom i stekovima. Pustim N VM-ova odjednom, pa onda svaki od njih ponovo kroz CPU referencu i uporedim stek, status, broj koraka i celu memoriju.
N VM-ova
GPU koraka/s
1 CPU jezgro
GPU/CPU
isto kao referenca
1
1,6 M
520 M
0,003
1 / 1
1 024
681 M
513 M
1,3
1 024 / 1 024
16 384
10,8 G
531 M
20
16 384 / 16 384
65 536
17,9 G
504 M
36
65 536 / 65 536
262 144
12,9 G
486 M
27
262 144 / 262 144
Do 262 144 Forth mašina istovremeno na RTX 5060 Ti, nijedna razlika u odnosu na referencu.
Vrh je ~18 milijardi Forth koraka u sekundi, oko 36x jedno CPU jezgro.
Kad se uračuna i prenos podataka na karticu i nazad, ostaje ~11x.
7 hours ago(This post was last modified: 7 hours ago by ddanijel.)
Pokusavam da razumem ovo iznad ali mi ne ide, moze neko krace objasnjenje u par recenica i neki konkretan upotrebni primer ili ako moze jos bolje 3 (TRI) primera za sta bi sluzilo?
Ali bih zamolio ako mozes ti da napises svojim recima, da ti ne pise AI jer u tom slucaju opet dolazimo na pocetak nerazumevanja.
Linux is like a wigwam NO Windows NO Gates and an Apache inside
40 minutes ago(This post was last modified: 9 minutes ago by mikikg.)
Ukratko nekoliko primera:
1) Digitalni blizanci - Digital Twin, sa ARM arhitekturom bukvalno 1:1 isti binary code na kontroleru i u cloud-u, za ostale platforme na nivou VM-a
2) Integracija sa raznim "Legacy Systems" i replikacije podataka (preko eXtremeDB), razni adapteri za poslovne aplikacije od kojih se jos uvek neke vrte i koriste pod DOS-om
3) Kompleksni industriski protokoli, poseban osvrt na PRU jedinice u Sitara SoC
4) ERP sistemi sa kompleksnim pravilima, logika moze da se menja u letu i adaptira potrebama na nivou korisnika
5) Kompleksna analitika nad podacima u realnom vremenu + vizuelizacija
6) Konsolidacija i optimizacija (serverskih) resursa
7) Automatizacija, telemetrija i AI na "ivici" - Edge automation
Evo samo jedan tizer (screen shot) sta je ispod haube i kako se to sve integrise sa nasom novom cloud infrastrukturom koju uskoro pustamo kao online servis.