Hai mai sognato di eseguire i tuoi algoritmi CUDA direttamente nel tuo browser o di testare i tuoi script di calcolo utilizzando la GPU del tuo PC senza dover lottare con un'installazione complessa? Quindi tieniti forte i pantaloni Freegun, perché HipScript trasformerà il tuo Chrome in una vera e propria stazione di calcolo ad alte prestazioni!
Perché fino ad ora, per sfruttare la potenza delle schede grafiche NVIDIA con CUDA o AMD con HIP, dovevi installare un sacco di SDK, driver e altre chicche che facevano venire i capelli grigi agli amministratori di sistema e anche al sottoscritto. Ma grazie a HipScriptquest'era è finita, finita, chiusa, ciao ciao!
In parole povere, CUDA è l'API sviluppata da NVIDIA per il calcolo GPGPU (calcolo generale su GPU) e in un codice CUDA troviamo una base C++ comune alla CPU e alla GPU, che permette di condividere facilmente le stesse strutture e le stesse funzioni. I kernel sono progettati per essere lanciati da migliaia (o addirittura milioni) di thread, organizzati in “blocchi” e “griglie”. AMD ha risposto rapidamente, creando ANCA : un concorrente quasi gemello di CUDA, che ne utilizza il vocabolario e la sintassi per trarre vantaggio dall'ecosistema già esistente, anche se personalmente lo trovo ancora molto peggio di CUDA.
Grazie a HipScripttutto (CUDA o HIP) ora può essere eseguito direttamente nel browser! Il progetto sfrutta entrambi WebAssembly E WebGPU per eliminare la noiosa installazione di driver o SDK. Se il tuo browser supporta WebGPU (ad esempio Chrome, con alcuni flag attivati), sei quindi attrezzato per testare ed eseguire i tuoi codici con un semplice clic.
Per gli armeggiatori che sono riusciti a leggere questo articolo finora, ecco alcune possibili idee per l'uso:
- Mining leggero di criptovalute : Per testare i tuoi algoritmi di mining direttamente nel browser, eh… E non arricchirti grazie alle spalle dei visitatori del tuo sito.
- Rendering 3D in tempo reale : Per creare visualizzazioni impressionanti per i tuoi progetti
- Apprendimento automatico : Per sperimentare con le reti neurali senza installare PyTorch (perché è particolarmente fastidioso da installare).
- Steganografia e crittografia : per nascondere i dati nelle immagini con algoritmi GPU ottimizzati o eseguire una crittografia avanzata.
- Cracking dell'hashish : O al contrario per la robustezza delle vostre password (legalmente ovviamente!)
- Compressione video : per codificare i tuoi video con algoritmi personalizzati
La magia di HipScript avviene grazie a una catena di compilazione intelligente. Innanzitutto, il tuo codice CUDA/HIP viene convertito in OpenCL tramite il compilatore chipStar. Quindi questo codice OpenCL viene trasformato in SPIR-V/Vulkan con cspv. Poi tinta converte lo shader Vulkan in uno shader WebGPU (WGSL) e, infine, tutto è incapsulato in WebAssembly per essere eseguito nel browser. Non è bellissimo comunque?
Ecco un piccolo esempio di kernel CUDA che viene eseguito direttamente nel browser:
cuda __global__ void addVectors(float* a, float* b, float* c, int n) { int i = blockIdx.x * blockDim.x + threadIdx.x; if (i < n) { c[i] = a[i] + b[i]; } }
Adesso vai al dimostrazione in linea per testare questo codice e altri esempi più avanzati! Inoltre, il supporto per le funzionalità CUDA/HIP è in continua evoluzione. Per il momento HipScript gestisce già la sintassi di base per il lancio dei kernel, della memoria condivisa (statica e dinamica), __syncthreads
o anche printf
per il debug (sebbene esistano alcune limitazioni sui puntatori o sui tipi di numero, come la virgola mobile a 64 bit).
E HipScript non è ancora perfetto poiché al momento è supportato solo un sottoinsieme di funzionalità CUDA/HIP. Le prestazioni non sono ancora al livello nativo. E hai bisogno di un browser recente con WebGPU abilitato.
Nonostante tutto, c'è da divertirsi! Dal punto di vista dell'ottimizzazione, il team ha mostrato ingegnosità nel ridurre le dimensioni dello strumento e gestire la compilazione LLVM in WebAssembly: compressione tramite Brotli per ridurre i download, l'integrazione con Wasmer e a Cloudflare R2 per distribuire ed eseguire il binario in modo efficiente, anche se rimangono alcuni bug da risolvere. Ma non importa, il risultato è già sorprendente: compilare e lanciare il codice CUDA/HIP in una semplice scheda di Chrome è un vero tour de force!
Il codice sorgente è disponibile su GitHub per coloro che desiderano armeggiare o contribuire al progetto. E chissà, forse sarai il primo a creare un'applicazione web rivoluzionaria che sfrutta la potenza pura della GPU direttamente nel browser?
Per maggiori dettagli, visita il blog luci0123nonché sulArticolo Foronix.
Source link
Subscribe to our email newsletter to get the latest posts delivered right to your email.
Comments