Je veux savoir s'il y a un moyen d'optimiser la fonction matlabique gather
. Je suis en train de développer un code Cuda avec de très grandes matrices et j'ai remarqué que la gather
que je dois utiliser pour récupérer les données de mon GPU est assez lente. Pour une matrice 2^13x2^8, cela prend environ 3 secondes !
Réponse
Trop de publicités?Les performances de gpuArray.gather
est limitée par votre bus PCI. Vous ne pouvez l'optimiser qu'en collectant moins de données (par exemple, en utilisant l'indexation). Notez que dans les versions plus récentes de Parallel Computing Toolbox, de nombreuses opérations sont asynchrones, mais gather
ne l'est pas - il se peut donc que vous voyiez simplement le temps nécessaire pour que les requêtes asynchrones se terminent. Vous pouvez vérifier en utilisant wait(gpuDevice)
pour synchroniser l'appareil.