Juste une question générale sur cublas. Pour un thread unique, s'il n'y a pas de transfert de mémoire de GPU à CPU (par exemple cublasGetVector), les fonctions du noyau de cublas (par exemple cublasDgemm) seront-elles automatiquement synchronisées avec l'hôte?Les fonctions du noyau cublas seront-elles automatiquement synchronisées avec l'hôte?
cublasDgemm();
//cublasGetVector();
host_functions()
En outre, qu'en est-il entre deux appels de noyau adjacents? Et, qu'en est-il d'un transfert synchronisé n'impliquant pas la mémoire globale utilisée dans le noyau précédent?
cublasDgemm(...gA...gB...gC);
cublasGetVector(...gD...D...);
Merci! Maintenant qu'en est-il entre deux noyaux, et qu'en est-il du transfert de mémoire synchrone n'impliquant pas la mémoire globale utilisée dans le noyau précédent? (le message ci-dessus a également été mis à jour). –
Les noyaux sont toujours lancés de manière asynchrone et les transferts de mémoire synchrones sont (sauf dans un cas) toujours synchrones. Donc, vos appels de dgemm ne bloqueront pas et vos transferts de mémoire vont bloquer. – talonmies