ITRM20120094A1 - Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale - Google Patents
Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale Download PDFInfo
- Publication number
- ITRM20120094A1 ITRM20120094A1 IT000094A ITRM20120094A ITRM20120094A1 IT RM20120094 A1 ITRM20120094 A1 IT RM20120094A1 IT 000094 A IT000094 A IT 000094A IT RM20120094 A ITRM20120094 A IT RM20120094A IT RM20120094 A1 ITRM20120094 A1 IT RM20120094A1
- Authority
- IT
- Italy
- Prior art keywords
- gpu
- nic
- block
- data
- memory
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 23
- 238000004891 communication Methods 0.000 title claims description 12
- 239000000872 buffer Substances 0.000 claims description 76
- 230000005540 biological transmission Effects 0.000 claims description 52
- 230000009365 direct transmission Effects 0.000 claims description 7
- 238000013467 fragmentation Methods 0.000 claims description 5
- 238000006062 fragmentation reaction Methods 0.000 claims description 5
- 238000012546 transfer Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 239000003999 initiator Substances 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000013598 vector Substances 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3808—Network interface controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Description
Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su GPU, e relativo metodo di comunicazione internodale
La presente invenzione riguarda una scheda di interfaccia di rete per nodo di rete di calcolo parallelo su GPU, e relativo metodo di comunicazione internodale.
Più precisamente, la presente invenzione riguarda una scheda ed un metodo di interfaccia di rete per nodo di rete di calcolo parallelo su GPU che permette di effettuare uno scambio di dati direttamente tra la GPU e la scheda, senza passare per l'host, risparmiando così tempo di comunicazione e perciò velocizzando i calcoli.
L'ambito di applicazione della soluzione della presente invenzione à ̈ principalmente il calcolo distribuito, da pochi nodi di calcolo fino alle soluzioni estreme di tipo HPC ("High Performance Computing", ovvero il calcolo numerico ad alte prestazioni), con migliaia di nodi di calcolo interagenti.
Il comportamento di un'applicazione numerica parallela, al variare del numero di nodi di calcolo su cui viene eseguita, Ã ̈ legato alle sue caratteristiche intrinseche, quali il tipo di calcolo, la dimensione della base di dati, il rapporto tra accessi di memoria detta memoria GPU, in modo tale che l'applicazione che gira sull'host sia informata che la memoria della GPU Ã ̈ in uso o disponibile per essere riutilizzata.
Preferibilmente secondo l'invenzione, la scheda comprende aggiuntivamente, quando il nodo di rete comprende una GPU configurata per trasmettere dati, un blocco di trasmissione diretta da GPU, il quale comprende mezzi atti a ricevere dalla GPU sia i dati da trasmettere sia i relativi metadati, e ad instradarli verso detto blocco di connessione alla rete in trasmissione, in modo tale che sia la GPU ad iniziare un'operazione di trasmissione nei confronti della NIC, senza alcun intervento dell'host.
Preferibilmente secondo l'invenzione, detto blocco di trasmissione diretta da GPU include una logica di controllo di messaggio ed un buffer di messaggio, il buffer di messaggio essendo atto a ricevere dati dalla GPU, la logica di controllo di messaggio essendo atta a ricevere metadati dalla GPU.
Preferibilmente secondo l'invenzione, detto blocco di trasmissione e blocco di ricezione comprendono ciascuno una logica di controllo e rispettivamente un buffer di trasmissione ed un buffer di ricezione.
E' ulteriore oggetto della presente invenzione un metodo di comunicazione internodale di un cluster di nodi, ciascun nodo di rete includendo un host, con una memoria host, su cui à ̈ installabile un'applicazione di calcolo, una GPU con una memoria di GPU, un bus ed una NIC, la NIC comprendendo un blocco di connessione alla rete in trasmissione ed un blocco di connessione alla rete in ricezione, il metodo comprendendo l'utilizzo della tecnica RDMA per la comunicazione di pacchetti di dati tra un nodo ricevente ed un nodo trasmittente, in cui il nodo ricevente, in una fase preliminare, registra un buffer di ricezione presso la NIC e ne comunica, in una fase preliminare, l'indirizzo di memoria al futuro nodo trasmittente ,
il metodo essendo caratterizzato dal fatto che ciascun nodo utilizza la scheda NIC secondo 1'invenzione e dal fatto che:
- in detta fase preliminare:
- l'applicazione di calcolo del nodo ricevente pre-alloca uno o più buffer sulla memoria di GPU del nodo ricevente;
- l'applicazione di calcolo del nodo ricevente registra preventivamente gli indirizzi di memoria di detti uno o più buffer presso la NIC del nodo ricevente, formando una lista di registrazione di buffer;
- detto nodo ricevente comunica preventivamente gli indirizzi di memoria di detti uno o più buffer al nodo trasmittente;
- detto nodo trasmittente invia i dati a partire dalla memoria della sua GPU, utilizzando il blocco di trasmissione della sua NIC a detto nodo ricevente insieme a metadati contenenti l'indirizzo di memoria di detti uno o più buffer, il nodo ricevente utilizzando il blocco di ricezione;
- al momento della ricezione dei pacchetti di dati, il blocco di ricezione della NIC del nodo ricevente riconosce gli indirizzi di memoria di detti uno o più buffer e invia i dati ricevuti alla memoria della sua GPU, utilizzando il blocco di gestione di memoria della GPU.
Preferibilmente secondo l'invenzione, la trasmissione dati tra nodo trasmittente e nodo ricevente comprende le seguenti fasi internamente al nodo trasmittente :
TI . l'host comunica a detto blocco di trasmissione della NIC metadati relativi alla trasmissione di dati, compresa la quantità di dati da trasmettere e l'indirizzo virtuale del buffer di memoria GPU in cui sono presenti i dati da trasmettere,·
T2 . detto blocco di trasmissione manda detti metadati relativi alla trasmissione di dati a detto blocco di gestione di memoria della GPU;
T3 . detto blocco di gestione di memoria della GPU invia dei metadati alla GPU che provocano lo spostamento dei dati da detto indirizzo virtuale (GPU_MEM_ADDR) a detto buffer di trasmissione;
T4 . quando tutti i dati di detta quantità di dati sono presenti in detto buffer di trasmissione, detto L'invenzione verrà ora descritta a titolo illustrativo ma non limitativo, con particolare riferimento ai disegni delle figure allegate, in cui:
- la figura 1 mostra la funzionalità P2P GPU TX dell'invenzione, che permette ad un'applicazione eseguita sull'host di iniziare una trasmissione di dati presenti in un buffer GPU;
- la figura 2 mostra la funzionalità P2P GPU RX del sistema secondo l'invenzione, la quale permette alla scheda di comunicazione secondo l'invenzione di completare la ricezione di dati destinati ad un buffer di memoria GPU;
- la figura 3 mostra la funzionalità "GPU-as-TX-initiator" dell'invenzione, che permette alla GPU stessa di iniziare un'operazione di trasmissione nei confronti della NIC;
- la figura 4 mostra uno schema misto a blocchi e di flusso complessivo della NIC secondo la forma realizzativa relativa alle figure 1-3. Si definiscono i seguenti termini:
- Un cluster à ̈ un calcolatore parallelo dove il nodo di calcolo à ̈ un host di tipo commerciale, eventualmente dotato di uno o più acceleratori di calcolo e di una rete di interconnessione ad alte prestazioni e bassa latenza.
che consente di inviare i dati su iniziativa della GPU) delle trasmissioni, invece dell'host, evitando il passo
Per trasferimenti di piccole dimensioni, il punto permette di evitare i passi 2 e 5, risparmiando un tempo stimabile intorno al 66% dell'intera sequenza 2-5.
Per trasferimenti di grandi dimensioni, à ̈ più complesso stimare i vantaggi offerti dal punto , in quanto, con l'approccio tradizionale, à ̈ possibile ad esempio dividere i grandi vettori di dati in porzioni più piccole e sovrapporre i passi 0 e 0 su porzioni diverse. In questo caso però si osservano rilevanti effetti di cache pollutlon {ovvero quando un programma in esecuzione carica nella cache dati non necessari, provocando lo spostamento di altri dati in livelli più bassi della gerarchia di memoria, causando una perdita di efficienza) dovuti al passaggio dei dati per la memoria dell'host, cosa che à ̈ evitata tramite la tecnica<~>.
Inoltre à ̈ noto in letteratura che l'efficienza di molte delle applicazioni numeriche più diffuse à ̈ limitata nel caso in cui si trasferiscano solo di vettori di dati relativamente piccoli, come sopra spiegato.
Per sfruttare pienamente il punto nella ricezione dei dati, la tecnica RDMA à ̈ essenziale, soprattutto per la ricezione verso zone di memoria GPU. Tradizionalmente, l'approccio RDMA prevede che il nodo ricevitore, in una fase iniziale, registri il buffer di ricezione presso la NIC e ne comunichi preventivamente l'indirizzo di memoria al futuro nodo trasmittente (nodo che poi effettivamente trasmetterà i dai al nodo ricevitore) . Nella soluzione della presente invenzione, al momento della ricezione dei pacchetti di dati, la NIC riconosce che questi sono destinati alla GPU e li sposta sulla stessa, utilizzando i blocchi HW descritti nel seguito, quindi comunicando preventivamente gli indirizzi di memoria della GPU.
Tradizionalmente, l'iniziativa dell'attività TX nasce dall'host. Invece il punto secondo l'invenzione consiste nella capacità di iniziare un trasferimento di rete sulla NIC direttamente dalla GPU, senza dover coinvolgere l'host. Tale capacità può portare a due ottimizzazioni: risparmiare i ys relativi al passo 0, e permettere in alcuni casi di non spezzare il calcolo della GPU in due parti, risparmiando quindi i tempi di inizializzazione dovuti alla ripresa delle porzioni di calcolo successive al trasferimento.
I concetti fondamentali utilizzati nella seguente descrizione dettagliata sono:
- Messaggi e frammentazione;
- Memoria virtuale per host e/o GPU;
- RDMA per RX, pre-registrazione dei buffer;
- Mapping di un intervallo di indirizzi ("address range") del bus sulla GPU.
I blocchi hardware (logiche di controllo e registri di memoria) utilizzati nella presente invenzione sono i seguenti :
— NIC_GPU_TX_BLOCK
- NIC_GPU_RX__BLOCK
- NIC_GPU_DMA_BLOCK
- NIC_EQ_BLOCK
- NIC_DIRECT_GPU_TX
Nel seguito si descrivono tre flussi di dati illustrati rispettivamente nelle figure 1-3, due in trasmissione (TX) e uno in ricezione (RX) che coinvolgono i blocchi HW oggetto dell'invenzione.
Si presuppone che l'host, ad esempio uno dei nodi di un calcolatore parallelo, stia eseguendo un'applicazione accelerata tramite GPU.
Facendo riferimento alla figura 1, la funzionalità P2P GPU TX secondo l'invenzione permette ad un'applicazione eseguita sull'host di iniziare una trasmissione di dati presenti in un buffer GPU. L'architettura descritta consente un approccio cosiddetto Zero-Copy, cioà ̈ senza copie in buffer intermedi di memoria della GPU e/o dell'host, andando a prelevare i dati direttamente dalla loro locazione originale.
La sequenza (riferimenti da 1 a 6 in figura) che permette di ottenere questa funzionalità à ̈ la seguente:
- l'host comunica al blocco NIC_GPU_TX le informazioni della trasmissione (TX_INFO) , quali l'indirizzo del nodo di destinazione remoto (DEST_NODE_ADDR) , la quantità di dati (TX SIZE), l'indirizzo virtuale del buffer di memoria GPU (GPU_MEM_ADDR) in cui sono presenti i dati;
- Il blocco NIC_GPU_TX manda GPU_MEM_ADDR e TX_SIZE al blocco NIC_GPU_DMA_BLOCK, e si mette in attesa che siano caricati TX_SIZE dati nella memoria TX_BUFFER;
- NIC_GPU_DMA_BLOCK (3.a) stimola lo spostamento dei dati da GPU_MEM__ADDR a TX_BUFFER (3.b); i dettagli di come questo venga fatto sono dipendenti dal particolare modello e dalla marca di GPU;
- Quando tutti i TX_SIZE dati sono presenti in TX_BUFFER, NIC_GPU_TX comunica TX_INFO al blocco di trasmissione TX_LINK_BLOCK e segnala il completamento dell'operazione al NIC_EQ__BLOCK;
- TX_LINK_BLOCK sceglie il percorso di destinazione opportuno e inizia a prelevare i dati da TX_BUFFER e a iniettarli nella rete (i dettagli esulano dal focus dell'invenzione); - NIC_EQ_BLOCK, come forma di avviso di completamento dell'operazione descritta, esegue la scrittura di una struttura di dati su una zona di memoria dell'host opportunamente preparata che funge da coda degli eventi (Event Queue o EQ). Tale procedura informa l'applicazione che la zona di memoria GPU utilizzata come buffer à ̈ stata letta ed à ̈ perciò disponibile per essere riutilizzata ed eventualmente modificata.
Facendo riferimento alla figura 2, la funzionalità P2P GPU RX permette alla scheda di comunicazione secondo l'invenzione di completare la ricezione di dati destinati ad un buffer di memoria GPU.
L'architettura descritta consente un approccio cosiddetto Zero-Copy, cioà ̈ senza copie in buffer intermedi di memoria della GPU e/o dell'host, andando a depositare i dati direttamente nella loro destinazione finale. Tale approccio à ̈ ottenuto con una applicazione secondo l'invenzione della tecnica nota RDMA ("Remote Direct Memory Access") ai buffer GPU, e prevede che l'applicazione che gira sull'host abbia preregistrato uno o più buffer di ricezione presso la NIC in un momento precedente al loro effettivo utilizzo (tecnica anteriore), nel blocco NIC__GPU_RX (secondo l'invenzione), in modo tale da rendere tali buffer conosciuti e quindi realizzare un passaggio diretto dei dati tra NIC e GPU.
La sequenza di ricezione (riferimenti da 1 a 4 in figura) di un pacchetto destinato alla GPU Ã ̈ descritta nel seguito:
- RX_LINK_BLOCK riceve un pacchetto di dati dai canali di comunicazione e li passa a NIC_GPU_RX (NIC);
- i dati vengono temporaneamente memorizzati in RX_BUFFER e l'header del medesimo viene analizzato dalla logica CTRL, che
- legge nell'header la dimensione in byte RX_SIZE del pacchetto ed eventualmente l'indirizzo di memoria DEST_MEM_ADDR a cui i dati sono destinati ;
- Se DEST_MEM_ADDR corrisponde a un buffer di memoria GPU, l'operazione viene completata dal blocco NIC_GPU_RX (CTRL) , altrimenti viene affidata ad un altro blocco della prior art che lo indirizza verso la memoria dell'host;
- NIC_GPU_RX ricerca l'intervallo di indirizzi di memoria virtuali [DEST_MEM_ADDR, DEST_MEM_ADDR+RX_SIZE- 1] nella lista dei buffer GPU pre-registrati dall'applicazione;
- Se la ricerca ha successo, l'intervallo viene scomposto in sotto-intervalli IlrI2, —, Inin accordo con i vincoli architetturali della particolare GPU impiegata; ad esempio per mapping virtuale- fisico { "Virtual-to-physicaltranslation" ) con pagine di memoria GPU da 4KB e un valore massimo di grandezza di pacchetto MAX_PKT_SIZE pari a 4KB, i sotto-intervalli possono essere al massimo due;
- Per ogni sub-intervallo Ijcon 7=1,2. n:
- NIC_GPU_RX chiede al blocco NIC_GPU_DMA di impostare la GPU in modo da rendere accessibile, tramite bus PCI express o altro bus locale, la zona di memoria interessata da Ij,-- NIC_GPU_DMA esegue tale operazione generalmente tramite manipolazione di opportuni registri della GPU;
- Si esegue il trasferimento della parte dei dati concernenti il sub- intervallo Ij da RX_BUFFER alla GPU tramite opportuna transazione DMA sul bus;
- NIC_EQ_BLOCK, come forma di avviso di completamento (Completion) dell'operazione descritta, esegue la scrittura di un evento sulla coda degli eventi (EQ) in memoria host (prior art) ; tale procedura informa l'applicazione che la zona di memoria GPU à ̈ stata scritta ed à ̈ perciò disponibile per essere elaborata.
3. Funzionalità "GPU-as-TX-initiator"
Facendo riferimento alla figura 3, la funzionalità "GPU-as-TX-initiator" permette alla GPU stessa di iniziare un'operazione di trasmissione nei confronti della NIC, in altre parole inviare messaggi sulla rete di interconnessione contenente dati provenienti dalla memoria GPU, senza bisogno di interessare l'host.
Questo à ̈ fatto preferibilmente per i casi in cui i messaggi da trasferire sono di grandezza limitata (ovvero quando il tempo di trasmissione à ̈ minore del tempo necessario per bloccare la GPU e farla ripartire), mentre per messaggi grandi (ovvero quando il tempo di trasmissione à ̈ uguale o maggiore del tempo necessario per bloccare la GPU e farla ripartire) si applica preferibilmente la tecnica descritta in riferimento alla figura 1.
A tal fine à ̈ necessario che la NIC offra un'opportuna interfaccia HW, nel seguito denominata NIC_D IRECT__GPU_TX, direttamente accessibile alla GPU tramite bus (PCI express o altro).
Nel seguito si utilizza il concetto di messaggio, inteso come operazione di trasferimento di dimensione arbitraria, e di frammentazione di un messaggio, che à ̈ la successiva suddivisione dei dati in una o più porzioni da trasmettere utilizzando una serie di pacchetti, tenendo conto della massima quantità di dati trasportabile dal singolo pacchetto (MAX__PKT_SIZE), di eventuali controlli di flusso sui canali di trasmissione e dello stato di riempimento dei buffer intermedi.
Come sopra spiegato, poiché la GPU ha un gran numero di unità di calcolo ed à ̈ relativamente lenta a sincronizzarsi a livello globale, à ̈ opportuno implementare e ottimizzare il caso di trasmissioni di messaggi di dimensioni medio-piccole (per esempio 128KB) introducendo un meccanismo di frammentazione automatica di messaggi in pacchetti di dimensione massima limitata (4KB) consentita per ogni pacchetto a causa della struttura del canale di comunicazione.
Inoltre, per rendere più veloce il trasferimento dalla GPU, si utilizzano più unità di calcolo della GPU (preferìbilmente tutte) per spostare i dati. Poiché però le unità che compongono la GPU non sono sincronizzate, questo costringe a prevedere la possibilità che i dati vengano caricati sul blocco NIC_DIRECT_GPU_TX in maniera out-of-order , ovvero in sotto-gruppi sequenziali non consecutivi, ad esempio il gruppo di dati da byte 4096 a 8191 viene caricato prima del gruppo 0-4095. DI conseguenza, serve anche una funzionalità in sé nota nel campo che gestisca l'accumulazione in questo modo. Si à ̈ chiamato il blocco che realizza tale funzionalità con MSG_BUFFER (reorder buffer).
Nel seguito si suppone che il particolare modello di GPU offra un'opportuna funzionalità di mapping di un arbitrario intervallo di indirizzi di memoria fisica sul bus delle periferiche (PCI express o altro); ovvero di rendere possibili operazioni di lettura e scrittura su MSG_BUFFER di intervalli di indirizzi all'interno dei codici di calcolo GPU, trasformandole in equivalenti operazioni sul bus.
Il blocco NIC_DIRECT_GPU_TX espone almeno due macrofunzioni .
Come detto, la prima funzione, MSG_BUFFER, à ̈ costituita da un'area di memoria temporanea nella quale la GPU possa scrivere i dati che costituiscono il contenuto del messaggio da inviare. Nel caso in cui il messaggio sia di dimensione superiore alla massima dimensione del singolo pacchetto, il blocco NIC_D IRECT_GPU_TX si preoccupa di frammentare il messaggio in pacchetti. Inoltre il MSG_BUFFER agisce come reorder buffer, cioà ̈ come una zona in cui i dati possono essere caricati out-of-order.
La funzione MSG__CTRL Ã ̈ un insieme di registri di controllo memory-mapped contenenti tutte le informazioni necessarie a spedire il messaggio verso il destinatario. I registri agiscono come delle mailbox, ovvero possono essere letti e/o scritti sia dalla GPU che dal blocco NIC_DIRECT_GPU_TX . Tra i registri ci sono:
- MSG_DEST_NODE, ovvero l'identificatore del nodo di rete destinatario del messaggio,
- MSG_SIZE, la dimensione in byte del messaggio, - MSG_DEST_MEM_ADDR, l'indirizzo virtuale del buffer di memoria sul nodo di destinazione, - CTRL_LOCK, un registro dove la GPU segnala al NIC_DIRECT_G PU__TX che il MSG_BUFFER non à ̈ ancora pronto, ad esempio perché la GPU non ha copiato tutti i dati del messaggio,
- CTRL_STATUS , un registro dove il blocco NIC_DIRECT_GPU_TX segnala che il messaggio à ̈ stato completamente consumato, ad esempio spostato in buffer intermedi successivi, ed à ̈ pronto per accogliere un nuovo messaggio.
La sequenza (riferimenti da 1 a 6 in figura) di utilizzo del blocco NIC__DIRECT_GPU_TX Ã ̈ descritta nel seguito :
- una delle unità di calcolo GPU scrive il registro CTRL_LOCK per reclamare il possesso del MSG_BUFFER (il MSG_BUFFER à ̈ una risorsa condivisa tra la NIC e la GPU. Quando la GPU vuole usarla deve reclamarne il possesso, per informare la NIC che non può toccare il MSG_BUFFER; CTRL_LOCK funziona come un mutex ("mutuai exclusion primitive'')) e poi carica i dettagli del trasferimento nei registri MSG_DEST_NODE, MSG_SIZE e MSG_DEST_MEM_ADDR del MSG_CTRL ;
- una o più unità di calcolo della GPU iniziano a copiare contemporaneamente i dati del messaggio nel MSG_BUFFER;
- ultimate le operazioni di caricamento dati, una unità di calcolo (ad esempio l'ultima temporalmente ad aver completato le operazioni di calcolo) scrive sul registro CTRL_LOCK di MSG_CRL un codice per dichiarare che MSG_BUFFER à ̈ pronto per essere letto;
- NIC DIRECT GPU TX nota la scrittura su CTRL LOCK, accende il flag STATUS_MSG_PROCESSING in CTRL_STATUS per segnalare la condizione "elaborazione del messaggio in atto" e inizia le operazioni di frammentazione e spedizione dei pacchetti verso il blocco TX_LINK;
- Quando le operazioni sono concluse e il MSG_BUFFER à ̈ di nuovo disponibile, NIC_DIRECT_G PU_TX abbassa il flag STATUS_MSG_PROCESSING in CTRL_ STATÙS e, se richiesto, comunica al blocco NIC_EQ_BLOCK l'esito dell'operazione;
- NIC_EQ_BLOCK, come forma opzionale (nel senso che non deve avvenire per ogni operazione ma può avvenire dopo gruppi di operazioni, questo vale anche per i casi delle altre figure) di avviso di completamento (Completion) dell'operazione descritta, esegue la scrittura di un evento sulla coda degli eventi (EQ) che può trovarsi o in memoria host o in memoria GPU, in quest'ultimo caso utilizzando il blocco NIC_GPU_DMA_BLOCK . Tale procedura informa l'applicazione mittente che tutti i frammenti che compongono il messaggio sono stati spediti, anche se devolve a eventuali protocolli di alto livello la gestione della condizione di avvenuta ricezione.
In quel che precede sono state descritte le preferite forme di realizzazione e sono state suggerite delle varianti della presente invenzione, ma à ̈ da intendersi che gli esperti del ramo potranno apportare modificazioni e cambiamenti senza con ciò uscire dal relativo ambito di protezione, come definito dalle rivendicazioni allegate.
Claims (10)
- RIVENDICAZIONI 1. Scheda di interfaccia di rete NIC da utilizzare in un nodo di un cluater, detto nodo di cluster essendo preposto al calcolo parallelo in cooperazione con gli altri nodi del cluster, detto nodo di cluster comprendendo : - una GPU con una memoria GPU; - un host con una memoria host, su detto host essendo installabile un'applicazione di calcolo per l'esecuzione di detto calcolo parallelo; - un bus; ed - una NIC; la NIC comprendendo un blocco di connessione alla rete in trasmissione (TX_LINK) ed un blocco di connessione alla rete in ricezione (RX_LINK), la scheda di interfaccia di rete NIC essendo caratterizzata dal fatto di comprendere ulteriormente i seguenti blocchi: - un blocco di trasmissione (NIC_GPU_TX), il quale comprende mezzi atti a ricevere dati dalla memoria di GPU e metadati dall'Host attraverso detto bus, e ad instradarli verso detto blocco di connessione alla rete in trasmissione (TX_LINK); - un blocco di ricezione (NIC_GPU_RX), il quale comprende mezzi atti a riceve dati da detto blocco di connessione alla rete in ricezione (RX_LINK) e a fornirli alla memoria GPU attraverso detto bus, - un blocco di gestione di memoria della GPU (NIC_GPU_DMA) , il quale comprende mezzi atti ad inviare metadati alla GPU per comandare la lettura o la scrittura di dati dalla/nella memoria della stessa GPU, sulla base di metadati ricevuti rispettivamente da detto blocco di ricezione (NIC_GPU_RX) o detto blocco di trasmissione (NIC_GPU_TX),· realizzando così uno scambio diretto di dati tra la memoria GPU e la rete attraverso la NIC, senza che detti dati passino attraverso l'Host.
- 2 . Scheda di interfaccia di rete NIC secondo la rivendicazione 1, caratterizzata dal fatto di comprendere ulteriormente un blocco di gestione code di eventi (NIC_EQ), il quale comprende un buffer di memoria circolare per scrivere code di eventi presso detta memoria host o detta memoria GPU, in modo tale che l'applicazione che gira sull'host sia informata che la memoria della GPU Ã ̈ in uso o disponibile per essere riutilizzata .
- 3 . Scheda di interfaccia di rete NIC secondo la rivendicazione 1 o 2, caratterizzata dal fatto di comprendere aggiuntivamente, quando il nodo di rete comprende una GPU configurata per trasmettere dati, un blocco di trasmissione diretta (NIC__DIRECT_GPU_TX) da GPU, il quale comprende mezzi atti a ricevere dalla GPU sia i dati da trasmettere sia i relativi metadati, e ad instradarli verso detto blocco di connessione alla rete in trasmissione (TX_LINK), in modo tale che sia la GPU ad iniziare un'operazione di trasmissione nei confronti della NIC, senza alcun intervento dell'host.
- 4 . Scheda di interfaccia di rete NIC secondo una la rivendicazione 3, caratterizzata dal fatto che detto blocco di trasmissione diretta da GPU (NIC_DIRECT_GPU_TX) include una logica di controllo di messaggio (MSG_CTRL) ed un buffer di messaggio (MSG_BUFFER) , il buffer di messaggio (MSG_BUFFER) essendo atto a ricevere dati dalla GPU, la logica di controllo di messaggio (MSG_CTRL) essendo atta a ricevere metadati dalla GPU.
- 5. Scheda di interfaccia di rete NIC secondo una qualsiasi delle rivendicazioni da 1 a 4, caratterizzata dal fatto che detto blocco di trasmissione (NIC_GPU_TX) e blocco di ricezione (NIC_GPU_RX) comprendono ciascuno una logica di controllo e rispettivamente un buffer di trasmissione (TX_BUFFER) ed un buffer di ricezione (RX_BUFFER).
- 6 . Metodo di comunicazione internodale di un cluster di nodi preposto al calcolo parallelo, ciascun nodo di cluster includendo: - un host con una memoria host, su detto host essendo installabile un'applicazione di calcolo per l'esecuzione di detto calcolo parallelo; - - una GPU con una memoria di GPU, un bus ed una NIC, la NIC comprendendo un blocco di connessione alla rete in trasmissione (TX_LINK) ed un blocco di connessione alla rete in ricezione (RX_LINK) , il metodo comprendendo l'utilizzo della tecnica RDMA per la comunicazione di pacchetti di dati tra un nodo ricevente ed un nodo trasmittente, in cui il nodo ricevente, in una fase preliminare, registra un buffer di ricezione presso la NIC e ne comunica, in una fase preliminare, l'indirizzo di memoria al futuro nodo trasmittente, il metodo essendo caratterizzato dal fatto che ciascun nodo utilizza la scheda NIC secondo una qualsiasi delle rivendicazioni da 1 a 5 e dal fatto che: - in detta fase preliminare: o l'applicazione di calcolo del nodo ricevente pre-alloca uno o più buffer sulla memoria di GPU del nodo ricevente; o l'applicazione di calcolo del nodo ricevente registra preventivamente gli indirizzi di memoria di detti uno o più buffer presso la NIC del nodo ricevente, formando una lista di registrazione di buffer ; o detto nodo ricevente comunica preventivamente gli indirizzi di memoria di detti uno o più buffer al nodo trasmittente ; - detto nodo trasmittente invia i dati, a partire dalla memoria della sua GPU, utilizzando il blocco di trasmissione (NIC_GPU_TX) della sua NIC, a detto nodo ricevente insieme a metadati contenenti l'indirizzo di memoria di detti uno o più buffer, il nodo ricevente utilizzando il blocco di ricezione (NIC_GPU_RX); - al momento della ricezione dei pacchetti di dati, il blocco di ricezione (NIC_GPU__RX) della NIC del nodo ricevente riconosce gli indirizzi di memoria di detti uno o più buffer e invia i dati ricevuti alla memoria della sua GPU, utilizzando il blocco di gestione di memoria della GPU (NIC_GPU_DMA).
- 7. Metodo secondo la rivendicazione 6, caratterizzato dal fatto che la trasmissione dati tra nodo trasmittente e nodo ricevente comprende le seguenti fasi internamente al nodo trasmittente: Tl. l'host comunica a detto blocco di trasmissione (NIC_GPU_TX) della NIC metadati (TX_INFO) relativi alla trasmissione di dati, compresa la quantità di dati da trasmettere (TX_SIZE) e l'indirizzo virtuale (GPU_MEM_ADDR) del buffer di memoria GPU in cui sono presenti i dati da trasmettere,-T2 . detto blocco di trasmissione (NIC_GPU_TX) manda detti metadati (TX_INFO) relativi alla trasmissione di dati a detto blocco di gestione di memoria della GPU (NIC GPU_DMA); T3 . detto blocco di gestione di memoria della GPU (NIC_GPU_DMA, 3. a) invia dei metadati alla GPU che provocano lo spostamento dei dati da detto indirizzo virtuale (GPU_MEM_ADDR) a detto buffer di trasmissione (TX_BUFFER, 3.b); T4 . quando tutti i dati di detta quantità di dati (TX_SIZE) sono presenti in detto buffer di trasmissione (TX_BUFFER) , detto blocco di trasmissione (NIC_GPU_TX) comunica detti metadati (TX__INFO) relativi alla trasmissione di dati a detto blocco di connessione alla rete in trasmissione (TX_LINK) ; T5 . detto blocco di connessione alla rete in trasmissione (TX_LINK) della NIC del nodo trasmittente sceglie il percorso di destinazione opportuno e inizia a prelevare i dati da detto buffer di trasmissione (TX_BUFFER) e a iniettarli nella rete.
- 8. Metodo secondo la rivendicazione 6 o 7, caratterizzato dal fatto che la ricezione dati tra nodo trasmittente e nodo ricevente comprende le seguenti fasi internamene al nodo ricevente : RI. il blocco di connessione alla rete in ricezione (RX_LINK) riceve un pacchetto di dati, comprendente un header, e lo passa a detto blocco di ricezione (NIC_G PU_RX }; R2 . i dati vengono temporaneamente memorizzati in detto buffer di ricezione (RX BUFFER) e 1' header del medesimo viene analizzato da una logica (CTRL) del blocco di ricezione, la quale: - R2-a. legge nell'header la dimensione in byte (RX_SIZE) del pacchetto e l'indirizzo di memoria (DEST_MEM_ADDR) a cui i dati sono destinati; - R2-b. se detto indirizzo di memoria (DEST_MEM_ADDR) a cui i dati sono destinati corrisponde a un buffer di memoria GPU, l'operazione viene completata da detto blocco di ricezione (NIC_GPU_RX) , altrimenti viene affidata ad un ulteriore blocco atto ad indirizzarlo verso la memoria dell'host; - R2-c. detto blocco di ricezione (NIC_GPU_RX) ricerca l'intervallo di indirizzi di memoria virtuali in detta lista di registrazione di buffer; - R2-d. Se la ricerca della fase R2-c ha successo, l'intervallo di indirizzi di memoria virtuali viene scomposto in sotto-intervalli li, 12 »<â– >â– · s In ÏŠ R3 . Per ogni sub-intervallo /;con y<†̃>=l,2, R3-a. detto blocco di ricezione (NIC_GPU_RX) chiede a detto blocco di gestione di memoria della GPU (NIC_GPU_DMA) di inviare metadati alla GPU in modo da rendere accessibile, tramite bus PCI express o altro bus locale, la zona di memoria interessata da Ij; R3-b. Si esegue il trasferimento della parte dei dati concernenti il sub-intervallo Ijda detto buffer di ricezione (RX_BUFFER) alla memoria di GPU; R4. detto blocco di gestione code di eventi (NIC_EQ) , come forma di avviso di completamento (Completion) dell'operazione in R3, esegue la scrittura di un evento sulla coda degli eventi (EQ) in memoria host.
- 9. Metodo secondo la rivendicazione 6 o 8, caratterizzato dal fatto di utilizzare la NIC secondo la rivendicazione 3 o 4, in cui la GPU à ̈ una GPU multi-core, e dal fatto di eseguire le seguenti fasi successive di trasmissione internamente al nodo trasmittente: - uno dei core della GPU scrive in detto blocco di trasmissione diretta (NIC_DIRECT_GPU_TX, MSG_CTRL) : - metadati per reclamare il possesso di detto buffer di messaggio (MSG_BUFFER); - metadati relativi alla trasmissione dati; - uno o più core della GPU iniziano a caricare contemporaneamente i dati del messaggio in detto buffer di messaggio (MSG_BUFFER); - ultimate le operazioni di caricamento dati, un core, in particolare l'ultimo temporalmente ad aver completato le operazioni di calcolo, scrive in detto blocco di trasmissione diretta (NIC_DIRECT_GPU_TX, MSG_CTRL) un metadato per dichiarare che detto buffer di messaggio (MSG__BUFFER) à ̈ pronto per essere letto; - detto blocco di trasmissione diretta da GPU <NIC_DIRECT_GPU_TX) nota la scrittura della fase precedente e inizia le operazioni di frammentazione e spedizione dei pacchetti di dati caricati nella fase precedente verso il blocco di connessione alla rete in trasmissione (TX_LINK) .
- 10. Metodo secondo una qualsiasi delle rivendicazioni da 6 a 9, caratterizzato dal fatto di utilizzare la scheda di rete della rivendicazione 2 e dal fatto di comprendere l'ulteriore seguente fase: - detto blocco di gestione code di eventi (NIC_EQ) , come forma di avviso di completamento dell'operazione di ricezione o trasmissione, esegue la scrittura di relativi metadati su una zona di memoria dell'host opportunamente preparata che funge da coda degli eventi.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IT000094A ITRM20120094A1 (it) | 2012-03-14 | 2012-03-14 | Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale |
PCT/IT2013/000076 WO2013136355A1 (en) | 2012-03-14 | 2013-03-14 | Network interface card for a computing node of a parallel computer accelerated by general purpose graphics processing units, and related inter-node communication method |
US14/377,493 US9658981B2 (en) | 2012-03-14 | 2013-03-14 | Network interface card for a computing node of a parallel computer accelerated by general purpose graphics processing units, and related inter-node communication method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IT000094A ITRM20120094A1 (it) | 2012-03-14 | 2012-03-14 | Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale |
Publications (2)
Publication Number | Publication Date |
---|---|
ITRM20120094A1 true ITRM20120094A1 (it) | 2013-09-14 |
IT1411178B1 IT1411178B1 (it) | 2014-10-10 |
Family
ID=46001374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
IT000094A ITRM20120094A1 (it) | 2012-03-14 | 2012-03-14 | Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale |
Country Status (3)
Country | Link |
---|---|
US (1) | US9658981B2 (it) |
IT (1) | ITRM20120094A1 (it) |
WO (1) | WO2013136355A1 (it) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170180272A1 (en) * | 2012-10-03 | 2017-06-22 | Tracey Bernath | System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing |
AU2013245529A1 (en) * | 2013-10-18 | 2015-05-07 | Cisco Technology, Inc. | Network Interface |
US9483862B2 (en) * | 2013-12-20 | 2016-11-01 | Qualcomm Incorporated | GPU-accelerated path rendering |
WO2015130282A1 (en) * | 2014-02-27 | 2015-09-03 | Hewlett-Packard Development Company, L. P. | Communication between integrated graphics processing units |
US10218645B2 (en) | 2014-04-08 | 2019-02-26 | Mellanox Technologies, Ltd. | Low-latency processing in a network node |
US10331595B2 (en) | 2014-10-23 | 2019-06-25 | Mellanox Technologies, Ltd. | Collaborative hardware interaction by multiple entities using a shared queue |
US9762491B2 (en) | 2015-03-30 | 2017-09-12 | Mellanox Technologies Tlv Ltd. | Dynamic thresholds for congestion control |
US9699095B2 (en) | 2015-05-21 | 2017-07-04 | Mellanox Technologies Tlv Ltd. | Adaptive allocation of headroom in network devices |
US9749266B2 (en) | 2015-08-28 | 2017-08-29 | International Business Machines Corporation | Coalescing messages using a network interface controller |
US10069748B2 (en) | 2015-12-14 | 2018-09-04 | Mellanox Technologies Tlv Ltd. | Congestion estimation for multi-priority traffic |
US10069701B2 (en) | 2016-01-13 | 2018-09-04 | Mellanox Technologies Tlv Ltd. | Flexible allocation of packet buffers |
US10713211B2 (en) | 2016-01-13 | 2020-07-14 | Red Hat, Inc. | Pre-registering memory regions for remote direct memory access in a distributed file system |
US10901937B2 (en) | 2016-01-13 | 2021-01-26 | Red Hat, Inc. | Exposing pre-registered memory regions for remote direct memory access in a distributed file system |
US10250530B2 (en) | 2016-03-08 | 2019-04-02 | Mellanox Technologies Tlv Ltd. | Flexible buffer allocation in a network switch |
US10084716B2 (en) | 2016-03-20 | 2018-09-25 | Mellanox Technologies Tlv Ltd. | Flexible application of congestion control measures |
US10205683B2 (en) | 2016-03-28 | 2019-02-12 | Mellanox Technologies Tlv Ltd. | Optimizing buffer allocation for network flow control |
CN107292385A (zh) * | 2016-03-31 | 2017-10-24 | 阿里巴巴集团控股有限公司 | 一种类Alexnet网络的模型训练方法和装置 |
US10387074B2 (en) | 2016-05-23 | 2019-08-20 | Mellanox Technologies Tlv Ltd. | Efficient use of buffer space in a network switch |
US9985910B2 (en) | 2016-06-28 | 2018-05-29 | Mellanox Technologies Tlv Ltd. | Adaptive flow prioritization |
US10331590B2 (en) * | 2016-06-30 | 2019-06-25 | Intel Corporation | Graphics processing unit (GPU) as a programmable packet transfer mechanism |
IT201600071637A1 (it) * | 2016-07-08 | 2018-01-08 | Istituto Naz Fisica Nucleare | Sistema per accelerare la trasmissione dati nelle interconnessioni di rete |
US10146696B1 (en) * | 2016-09-30 | 2018-12-04 | EMC IP Holding Company LLC | Data storage system with cluster virtual memory on non-cache-coherent cluster interconnect |
US10936533B2 (en) * | 2016-10-18 | 2021-03-02 | Advanced Micro Devices, Inc. | GPU remote communication with triggered operations |
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
US10389646B2 (en) | 2017-02-15 | 2019-08-20 | Mellanox Technologies Tlv Ltd. | Evading congestion spreading for victim flows |
US10645033B2 (en) | 2017-03-27 | 2020-05-05 | Mellanox Technologies Tlv Ltd. | Buffer optimization in modular switches |
US11687460B2 (en) * | 2017-04-26 | 2023-06-27 | Advanced Micro Devices, Inc. | Network cache injection for coherent GPUs |
US10547491B2 (en) * | 2017-08-28 | 2020-01-28 | Genband Us Llc | Transcoding with a vector processing unit |
JP7010129B2 (ja) * | 2018-04-19 | 2022-01-26 | 富士通株式会社 | プロセッサ及び情報処理装置 |
US10332235B1 (en) | 2018-05-01 | 2019-06-25 | At&T Intellectual Property I, L.P. | Direct memory access for graphics processing unit packet processing |
WO2019236376A1 (en) * | 2018-06-05 | 2019-12-12 | R-Stor Inc. | Fast data connection system and method |
US10795840B2 (en) | 2018-11-12 | 2020-10-06 | At&T Intellectual Property I, L.P. | Persistent kernel for graphics processing unit direct memory access network packet processing |
US11005770B2 (en) | 2019-06-16 | 2021-05-11 | Mellanox Technologies Tlv Ltd. | Listing congestion notification packet generation by switch |
CN112148663A (zh) * | 2019-06-28 | 2020-12-29 | 华为技术有限公司 | 一种数据交换芯片及服务器 |
US10999221B2 (en) | 2019-07-02 | 2021-05-04 | Mellanox Technologies Tlv Ltd. | Transaction based scheduling |
US11470010B2 (en) | 2020-02-06 | 2022-10-11 | Mellanox Technologies, Ltd. | Head-of-queue blocking for multiple lossless queues |
US20210042254A1 (en) * | 2020-10-28 | 2021-02-11 | Pratik Marolia | Accelerator controller hub |
CN113923061B (zh) * | 2021-10-26 | 2023-03-24 | 浙江大学 | 基于智能网卡的gpu网络通信方法、智能网卡、介质、设备 |
CN116383127B (zh) * | 2023-06-01 | 2023-08-18 | 苏州浪潮智能科技有限公司 | 节点间通信方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011070262A1 (fr) * | 2009-12-01 | 2011-06-16 | Bull Sas | Controleur d'acces dircet a une memoire pour le transfert direct de donnees entre memoires de plusieurs dispositifs peripheriques |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7305493B2 (en) * | 2002-11-27 | 2007-12-04 | Intel Corporation | Embedded transport acceleration architecture |
US20050286544A1 (en) * | 2004-06-25 | 2005-12-29 | Kitchin Duncan M | Scalable transmit scheduling architecture |
US20100013839A1 (en) * | 2008-07-21 | 2010-01-21 | Rawson Andrew R | Integrated GPU, NIC and Compression Hardware for Hosted Graphics |
US7921178B2 (en) * | 2008-12-04 | 2011-04-05 | Voltaire Ltd. | Device, system, and method of accessing storage |
US20100270943A1 (en) * | 2009-04-23 | 2010-10-28 | Lea Cook | College and pro sports fragrance oil warmers |
US8910153B2 (en) * | 2009-07-13 | 2014-12-09 | Hewlett-Packard Development Company, L. P. | Managing virtualized accelerators using admission control, load balancing and scheduling |
US8862682B2 (en) * | 2010-02-17 | 2014-10-14 | Emulex Corporation | Accelerated sockets |
US8909727B2 (en) * | 2010-11-24 | 2014-12-09 | International Business Machines Corporation | RDMA read destination buffers mapped onto a single representation |
US9135189B2 (en) * | 2011-09-07 | 2015-09-15 | Microsoft Technology Licensing, Llc | Delivering GPU resources across machine boundaries |
US8909855B2 (en) * | 2012-08-08 | 2014-12-09 | Avalanche Technology, Inc. | Storage system employing MRAM and physically addressed solid state disk |
DE102011119693A1 (de) * | 2011-11-29 | 2013-05-29 | Universität Heidelberg | System, Computer-implementiertes Verfahren und Computerprogrammprodukt zur direkten Kommunikation zwischen Hardwarebeschleunigern in einem Computercluster |
US20130148947A1 (en) * | 2011-12-13 | 2013-06-13 | Ati Technologies Ulc | Video player with multiple grpahics processors |
US9304730B2 (en) | 2012-08-23 | 2016-04-05 | Microsoft Technology Licensing, Llc | Direct communication between GPU and FPGA components |
US20140098113A1 (en) * | 2012-10-10 | 2014-04-10 | Advanced Micro Devices, Inc. | Network-enabled graphics processing unit |
US10218645B2 (en) * | 2014-04-08 | 2019-02-26 | Mellanox Technologies, Ltd. | Low-latency processing in a network node |
-
2012
- 2012-03-14 IT IT000094A patent/ITRM20120094A1/it unknown
-
2013
- 2013-03-14 US US14/377,493 patent/US9658981B2/en active Active
- 2013-03-14 WO PCT/IT2013/000076 patent/WO2013136355A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011070262A1 (fr) * | 2009-12-01 | 2011-06-16 | Bull Sas | Controleur d'acces dircet a une memoire pour le transfert direct de donnees entre memoires de plusieurs dispositifs peripheriques |
Non-Patent Citations (4)
Title |
---|
HOLGER FRONING ET AL: "Efficient hardware support for the Partitioned Global Address Space", PARALLEL&DISTRIBUTED PROCESSING, WORKSHOPS AND PHD FORUM (IPDPSW), 2010 IEEE INTERNATIONAL SYMPOSIUM ON, IEEE, PISCATAWAY, NJ, USA, 19 April 2010 (2010-04-19), pages 1 - 6, XP031680222, ISBN: 978-1-4244-6533-0 * |
JEFFREY S VETTER ET AL: "Keeneland: Bringing Heterogeneous GPU Computing to the Computational Science Community", COMPUTING IN SCIENCE AND ENGINEERING, IEEE SERVICE CENTER, LOS ALAMITOS, CA, US, vol. 13, no. 5, 1 September 2011 (2011-09-01), pages 90 - 95, XP011382083, ISSN: 1521-9615, DOI: 10.1109/MCSE.2011.83 * |
OGATA Y ET AL: "An efficient, model-based CPU-GPU heterogeneous FFT library", 2008 IEEE INTERNATIONAL SYMPOSIUM ON PARALLEL & DISTRIBUTED PROCESSING : [IPDPS 2008] ; MIAMI, FL, 14 - 18 APRIL 2008, IEEE, PISCATAWAY, NJ, USA, 14 April 2008 (2008-04-14), pages 1 - 10, XP031268135, ISBN: 978-1-4244-1693-6 * |
TENG LI ET AL: "GPU Resource Sharing and Virtualization on High Performance Computing Systems", 2011 INTERNATIONAL CONFERENCE ON PARALLEL PROCESSING, 1 September 2011 (2011-09-01), pages 733 - 742, XP055040371, ISBN: 978-1-45-771336-1, DOI: 10.1109/ICPP.2011.88 * |
Also Published As
Publication number | Publication date |
---|---|
US20150039793A1 (en) | 2015-02-05 |
IT1411178B1 (it) | 2014-10-10 |
WO2013136355A1 (en) | 2013-09-19 |
US9658981B2 (en) | 2017-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ITRM20120094A1 (it) | Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale | |
US8930593B2 (en) | Method for setting parameters and determining latency in a chained device system | |
CN100403739C (zh) | 基于链表的进程间消息传递方法 | |
JP4768386B2 (ja) | 外部デバイスとデータ通信可能なインターフェイスデバイスを有するシステム及び装置 | |
KR20210030282A (ko) | 게이트웨이 상의 호스트 프록시 | |
CN102880573B (zh) | 一种基于Linux系统的串行RapidIo数据传输方法 | |
CN102331923A (zh) | 一种基于多核多线程处理器的功能宏流水线实现方法 | |
KR102409024B1 (ko) | 네트워크 프로세서에서의 멀티-코어 상호접속 | |
CN109587077B (zh) | 用于tte网络的混合调度方法、tte网络终端 | |
CN103744644B (zh) | 采用四核结构搭建的四核处理器系统及数据交换方法 | |
JP2015512083A (ja) | 暗示的なメモリの登録のための明示的なフロー制御 | |
CN103959255A (zh) | 跨多个内存口使用选择性复制降低内存访问延迟的系统及方法 | |
US11675633B2 (en) | Virtualised gateways | |
JP7389231B2 (ja) | 同期ネットワーク | |
CN103077132A (zh) | 一种高速缓存处理方法及协议处理器高速缓存控制单元 | |
GB2575291A (en) | Gateway to Gateway Synchronisation | |
US11550639B2 (en) | Sync groupings | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
CN102263698A (zh) | 虚拟通道的建立方法、数据传输的方法及线卡 | |
GB2579412A (en) | Gateway pull model | |
US11327813B2 (en) | Sync group selection | |
KR20210029725A (ko) | 게이트웨이를 통한 데이터 | |
GB2575290A (en) | Gateway Fabric Ports | |
CN108011792A (zh) | 一种1394总线事务层-链路层数据包接收电路及方法 | |
CN102291298A (zh) | 一种高效的面向长消息的计算机网络通信方法 |