cudaMemcpy trop lent

- Je utiliser cudaMemcpy() un temps de copier exactement 1 go de données à l'appareil. Cela prend en 5.9 s. À l'inverse, il faut 5.1 s. Est-ce normal?
La fonction elle-même avons tellement de surcharge avant de le copier?
Théorique, il devrait y avoir un débit d'au moins 4 GO/s pour le bus PCIe.
Il n'y a pas de mémoire des transferts qui se chevauchent, car la Tesla C870 juste ne prend pas en charge. Un indice?

EDIT 2: mon programme de test + mise à jour des timings; j'espère qu'il n'est pas trop de choses à lire!
Le cutCreateTimer() fonctions habitude de compiler pour moi: 'erreur: identificateur "cutCreateTimer" est indéfini " - cela pourrait être lié à l'ancien cuda version (2.0) installé sur la machine

 __host__ void time_int(int print){
static struct timeval t1; /* var for previous time stamp */
static struct timeval t2; /* var of current time stamp */
double time;
if(gettimeofday(&t2, 0) == -1) return;
if(print != 0){
  time = (double) (t2.tv_sec - t1.tv_sec) + ((double) (t2.tv_usec - t1.tv_usec)) / 1000000.0;
  printf(...);
}
t1 = t2;
}

main:
time(0);
void *x;
cudaMallocHost(&x,1073741824);
void *y;
cudaMalloc(&y, 1073741824);
time(1);
cudaMemcpy(y,x,1073741824, cudaMemcpyHostToDevice);
time(1);
cudaMemcpy(x,y,1073741824, cudaMemcpyDeviceToHost);
time(1);

Affiche horaires sont:
0.86 l'affectation s
0.197 s de la première copie
5.02 deuxième copie
La chose étrange est: Bien qu'il affiche 0.197 s pour la première copie, il prend beaucoup plus de temps si je regarde le programme de fonctionner.

Pouvez-vous ajouter quelques informations à votre question sur la façon dont vous faites les mesures de temps?
décrit le calendrier de la modifier

OriginalL'auteur Callahan | 2011-09-15