J'utilise CUDA pour lancer un problème où j'ai besoin d'une équation complexe avec de nombreuses matrices d'entrée. Chaque matrice a un ID en fonction de son ensemble (entre 1 et 30, il y a 100 000 matrices) et le résultat de chaque matrice est stocké dans un tableau float [N] où N est le nombre de matrices d'entrée. Après cela, le résultat que je veux est la somme de chaque flottant dans ce tableau pour chaque ID, donc avec 30 ID, il y a 30 flottants de résultats.CUDA: sommation des résultats
Des suggestions sur comment je devrais faire cela?
En ce moment, je lis le tableau du flotteur (400kb) à l'hôte de l'appareil et exécuter sur l'hôte:
// Allocate result_array for 100,000 floats on the device
// CUDA process input matrices
// Read from the device back to the host into result_array
float result[10] = { 0 };
for (int i = 0; i < N; i++)
{
result[input[i].ID] += result_array[i];
}
Mais je me demande s'il y a une meilleure façon.
Cela ressemble à une réduction - étudiez l'exemple de réduction dans le SDK CUDA. –
Merci, je ne connaissais pas le mot, je vais y jeter un coup d'oeil. – Dmi