2009-11-05 7 views
2

J'ai remarqué que je peux utiliser des blocs de mémoire pour des matrices allouées en utilisant la fonction cudamalloc() ou cublasalloc() pour appeler les fonctions cublas. Les taux de transfert matriciels et de calcul sont plus lents pour les tableaux alloués en utilisant cudamalloc() plutôt que cublasalloc(), bien qu'il y ait d'autres avantages à utiliser des tableaux en utilisant cudamalloc(). Pourquoi est-ce le cas? Ce serait bien d'entendre quelques commentaires.Gestion de mémoire CUDA vs. CuBlas

+0

Voyez-vous cela lorsque vous travaillez avec des flotteurs, des doubles ou les deux? Cela pourrait être un problème d'alignement ('cudaAlloc()' prend un argument 'elemSize', mais' cudaMalloc() 'ne l'est pas). – Gabriel

+0

Je travaillais avec des flotteurs dans les deux cas. Je n'ai pas vu cela en double car je n'ai pas besoin de travailler avec des doubles dans mon application. Je vais vérifier avec cudaAlloc en même temps. – stanigator

+0

Btw, Gabriel, voulez-vous dire '' cublasAlloc() '' plutôt que '' cudaAlloc() ''? – stanigator

Répondre

5

cublasAlloc est essentiellement une enveloppe autour de cudaMalloc() donc il ne devrait y avoir aucune différence, y a-t-il autre chose qui change dans votre code?