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 PDF

Info

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
Application number
IT000094A
Other languages
English (en)
Inventor
Davide Rossetti
Original Assignee
Istituto Naz Di Fisica Nuclea Re
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Istituto Naz Di Fisica Nuclea Re filed Critical Istituto Naz Di Fisica Nuclea Re
Priority to IT000094A priority Critical patent/ITRM20120094A1/it
Priority to PCT/IT2013/000076 priority patent/WO2013136355A1/en
Priority to US14/377,493 priority patent/US9658981B2/en
Publication of ITRM20120094A1 publication Critical patent/ITRM20120094A1/it
Application granted granted Critical
Publication of IT1411178B1 publication Critical patent/IT1411178B1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3808Network interface controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing 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)

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.
IT000094A 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 ITRM20120094A1 (it)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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) 一种高效的面向长消息的计算机网络通信方法