Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
6. Superscalare e VLIW
6. Superscalare e VLIW
Il video esplora il modo in cui i processori utilizzano l'esecuzione superscalare per rilevare ed estrarre il parallelismo tra le istruzioni binarie per migliorare le prestazioni. Discute l'importanza della logica di controllo nell'identificare i casi in cui le istruzioni possono essere eseguite simultaneamente, ad esempio con una mancanza di dipendenze tra di loro. Il video introduce anche due esempi di design del processore, superscalare e VLIW, con quest'ultimo che sposta la responsabilità di rilevare le dipendenze ai compilatori, generando lunghe istruzioni da eseguire in parallelo. Sebbene VLIW riduca il controllo del tempo di esecuzione, i punti inutilizzati nella lunga parola dell'istruzione possono comunque causare uno spreco nell'unità di esecuzione.
7. SIMD e multithreading hardware
7. SIMD e multithreading hardware
Il video spiega due modi per affrontare le sfide del parallelismo: Single Instruction, Multiple Data (SIMD) e hardware multithreading (SMT). SIMD consente alle istruzioni hardware di essere eseguite in parallelo su più elementi di dati, semplificando la programmazione e la logica di decodifica. SMT sfrutta il parallelismo a livello di thread eseguendo contemporaneamente flussi di istruzioni indipendenti, richiedendo file di registro aggiuntivi e un'attenta condivisione della cache. Il video illustra anche l'implementazione della pianificazione dei thread con suddivisione temporale, in cui i thread occupano a turno il percorso dati del processore in modalità round-robin, riducendo la latenza e consentendo a più thread di accedere contemporaneamente a unità di calcolo e sistemi di memoria. In definitiva, il processore può ospitare tutti i thread necessari, anche se l'aumento delle prestazioni potrebbe non essere così significativo su un processore a thread singolo.
8. Architettura del processore multicore
8. Architettura del processore multicore
Questo video spiega l'architettura dei processori multicore e i loro vantaggi, come più core che operano in modo indipendente e condividono alcuni componenti, mentre ogni core ha la propria pipeline e cache di dati. L'importanza della gerarchia della cache nel colmare il divario di velocità tra il microprocessore e l'accesso alla memoria è evidenziata utilizzando più livelli di cache che sfruttano la località temporale e spaziale. Il video tocca anche il design system-on-chip, che combina diverse unità funzionali e interfacce in un singolo chip per ridurre i costi e il fattore di forma. Nel complesso, il video fornisce un'utile introduzione alla complessità e ai compromessi coinvolti nella progettazione di processori multicore.
9. Architettura GPU
9. Architettura GPU
L'unità di elaborazione accelerata (APU) è un processore eterogeneo con core a basso consumo e unità GPU tutte sullo stesso chip. Le GPU hanno un gran numero di core shader che possono essere programmati con istruzioni e le loro cache sono generalmente non coerenti, rendendo il loro design più semplice e consentendo prestazioni molto più elevate quando molti core operano contemporaneamente. AMD e Nvidia utilizzano unità di calcolo di piccole dimensioni per supportare l'operazione su più parti di dati contemporaneamente e dispongono di file di registro di grandi dimensioni per supportare il cambio di contesto rapido. Il relatore spiega anche come gestire il flusso di controllo nell'architettura GPU, in particolare nella gestione delle istruzioni di ramo che potrebbero produrre risultati non validi, ma i programmatori non devono preoccuparsi molto di questi problemi perché i fornitori di processori hanno già fornito la logica di controllo nell'hardware. Nel complesso, le GPU sono processori popolari per carichi di lavoro complessi nel mercato moderno, in particolare nel campo dell'intelligenza artificiale e dell'apprendimento automatico.
10. Interni FPGA
10. Interni FPGA
Questo video illustra l'architettura e le caratteristiche dei gate array programmabili sul campo (FPGA). Gli FPGA hanno una logica programmabile, che consente loro di essere riprogrammati per adattarsi a nuove funzionalità e hanno accesso diretto ai dati attraverso enormi quantità di input e output (I/O). La struttura della tabella di ricerca negli FPGA consiste in più livelli di multiplexer che possono essere programmati per definire funzioni logiche. Gli FPGA utilizzano registri programmabili che possono essere utilizzati per contatori, registri a scorrimento, macchine a stati e funzioni DSP. Ogni blocco rettangolare sul chip rappresenta un Logic Array Block (LAB), con ciascun LAB contenente dieci Adaptive Logic Modules (ALM). Gli FPGA sono utilizzati in settori come dispositivi di consumo, automotive, strumentazione medica, comunicazione e trasmissione.
e trasportare bit e come l'input ai registri può provenire da elementi logici precedenti.
11. Memoria OpenCL su un sistema GPU
11. Memoria OpenCL su un sistema GPU
L'istruttore spiega la mappatura della memoria OpenCL sulla GPU AMD e i diversi livelli di memoria in un sistema GPU. Il dispositivo di calcolo dispone di un processore di comandi che gestisce le direttive alle unità di calcolo, che funzionano come core con più corsie SIMD, file di registro privati e memoria privata. Il programma del kernel ha lo scopo di fornire lavori autonomi che consentano di utilizzare tutti i core disponibili e ridurre la latenza di accesso alla memoria. L'oratore menziona anche il concetto di intensità aritmetica, che si riferisce al rapporto tra calcolo e movimento dell'asse di memoria, e come dovrebbe essere alto per evitare che la larghezza di banda della memoria della GPU sia il fattore limitante.
12. OpenCL Esempio: moltiplicazione di matrici
12. OpenCL Esempio: moltiplicazione di matrici
Questo video introduce la moltiplicazione di matrici come esempio di programmazione OpenCL. Il relatore dimostra come il codice C viene scritto per creare cicli indipendenti che possono attraversare righe e colonne della matrice. Vengono discussi gli elementi di lavoro e come possono essere mappati agli elementi della matrice in OpenCL. Viene spiegata un'implementazione del kernel, coprendo gli argomenti della funzione del kernel, come viene chiamata e il suo corpo. L'oratore mostra come la matrice di input viene memorizzata in un array a dimensione singola utilizzando i numeri di riga e di indice per calcolare gli indici. In definitiva, la funzione kernel calcola il prodotto scalare per produrre l'elemento nella matrice di output. Viene enfatizzato l'approccio lineare alla memorizzazione delle matrici nella memoria fisica.
13. Struttura di un programma OpenCL (parte 1)
13. Struttura di un programma OpenCL (parte 1)
Nel video "Struttura di un programma OpenCL (parte 1)", viene spiegato il processo di creazione di un'applicazione OpenCL. Il programma deve prima interrogare la piattaforma OpenCL per comprenderne le risorse e creare un contesto OpenCL e una coda di comando. I buffer vengono quindi creati per lo scambio di dati tra l'host e la memoria del dispositivo e il programma del kernel viene compilato in un file binario per l'esecuzione sul dispositivo. Il video prosegue spiegando come creare buffer di sola lettura e sola scrittura, allocare spazio per le matrici di output e copiare i risultati nell'host. Viene sottolineata l'importanza di controllare le chiamate API per l'esecuzione corretta.
14. Struttura di un programma OpenCL (parte 2)
14. Struttura di un programma OpenCL (parte 2)
Il terzo passaggio nella programmazione OpenCL prevede la compilazione del kernel, che è diversa per i dispositivi FPGA poiché viene eseguita offline. Il programma di creazione CL con sorgente e C TX viene utilizzato per creare un programma, seguito dal programma di creazione CL per creare il programma in formato binario. La funzione del kernel corretta viene selezionata utilizzando il punto di ingresso appropriato e gli argomenti del kernel devono essere inizializzati utilizzando l'argomento del kernel set CL con il puntatore corretto. L'oratore entra nei dettagli sull'impostazione corretta degli argomenti nella moltiplicazione di matrici. Discutono quindi dell'impostazione delle dimensioni dei gruppi di lavoro locali e globali, dell'esecuzione del kernel e dell'ottenimento dei risultati utilizzando l'API CL nel buffer di coda. Infine, il relatore menziona brevemente gli eventi nella programmazione OpenCL.
15. Demo di moltiplicazione di matrici OpenCL
15. Demo di moltiplicazione di matrici OpenCL
Il video "OpenCL Matrix Multiplication Demo" spiega il processo di esecuzione di un esempio di moltiplicazione di matrici utilizzando il framework OpenCL. Include più file di codice sorgente come un programma C principale per il lato host, un programma kernel e un makefile. Il video copre diversi aspetti del framework OpenCL, ottenendo ID di piattaforma e dispositivo, creando un contesto OpenCL, oggetti del programma e del kernel, la gestione del buffer per l'host e la creazione e l'inizializzazione dei buffer sul dispositivo. Il presentatore mostra anche un kernel campione che esegue operazioni dot product e una demo del risultato finale su un motore di calcolo AMD Radeon pro 575.