GPU est vraiment rapide quand il s'agit de paralleled computation et effectue CPU en étant 15-30 (certains ont signalé même 50) fois plus rapide cependant, La mémoire GPU est très limitée par rapport à la mémoire CPU et la communication entre la mémoire GPU et le processeur n'est pas aussi rapide. Disons que nous avons quelques données qui ne rentrent pas dans le ram GPU mais nous voulons toujours utiliser , il est merveilleux de calculer. Ce que nous pouvons faire est de diviser ces données en plusieurs parties et de les transmettre au GPU, une par une.Transfert des données vers le GPU pendant que le noyau fonctionne pour gagner du temps
L'envoi de données volumineuses au GPU peut prendre du temps et on pourrait se demander si on diviserait une donnée en deux et alimenterait la première moitié, exécuterait le noyau et nourrirait l'autre moitié pendant l'exécution du noyau.
Selon cette logique, nous devrions gagner du temps, car le transfert de données doit être en cours alors que le calcul est, , espérons- pas interrompre son emploi et une fois terminé, il peut juste, eh bien, continuer son travail sans besoin d'attendre de nouvelles données chemin. Je dois dire que je suis nouveau à gpgpu, nouveau pour cuda mais j'ai expérimenté avec des codes cuda simples et j'ai remarqué que la fonction cudaMemcpy utilisée pour transférer des données entre CPU et GPU bloquera si kerner est en cours d'exécution. Il attendra que le noyau soit fini et fera son travail.
Ma question, est-il possible d'accomplir quelque chose comme ça décrit ci-dessus et si oui, pourrait-on montrer un exemple ou de fournir une source d'information de la façon dont cela pourrait se faire?
Merci!
J'ai besoin d'aide à venir avec un meilleur titre, Serait vraiment reconnaissant, Merci! –