Sto lavorando a un programma accelerato GPU che richiede la lettura di un intero file di dimensioni variabili. La mia domanda, qual è il numero ottimale di byte da leggere da un file e trasferirlo a un coprocessore (dispositivo CUDA)?Trasferimento efficiente di file di grandi dimensioni (fino a 2 GB) alla GPU CUDA?
Questi file possono essere grandi come 2GiB, quindi la creazione di un buffer di quelle dimensioni non sembra l'idea migliore.
Quella parte che stavo già pianificando, ma quale dimensione dovrebbero essere i blocchi dei dati di input? – sj755
La dimensione dell'array più grande che è possibile allocare sul dispositivo. –
Puoi prendere in considerazione l'uso di memcopie asincrone di pezzi più piccoli di quelli che si trovano nella memoria (al massimo metà) e l'elaborazione del chunk 'k' in parallelo con il trasferimento del chunk' k-1' all'host e il trasferimento del chunk 'k + 1' da l'host al dispositivo. La sovrapposizione bidirezionale richiede una GPU Tesla, ma è possibile sovrapporre una direzione anche su GeForce. – harrism