OpenCL PROCESSEUR de l'Appareil vs GPU Appareil
Prenons un exemple simple: l'addition vectorielle.
Si j'ai créer un programme pour CL_DEVICE_TYPE_GPU, et je construis le même programme pour les CL_DEVICE_TYPE_CPU, quelle est la différence entre eux(à l'exception du "programme CPU" est en cours d'exécution sur le CPU et GPU programme" est en cours d'exécution sur GPU)?
Merci pour votre aide.
Vous devez vous connecter pour publier un commentaire.
Il y a quelques différences entre les types d'appareils. La réponse simple à votre vecteur question est la suivante: l'Utilisation d'un gpu pour les grands vecteurs, et de cpu pour les petites charges de travail.
1) la Mémoire de la copie. Gpu s'appuient sur les données que vous travaillez sur d'être passé, et les résultats sont ensuite lus à l'hôte. Ceci est fait avec le PCI-e, ce qui donne environ 5 GO/s pour la version 2.0 /2.1. Les processeurs peuvent utiliser des tampons "à la place" - en DDR3 - à l'aide de la CL_MEM_ALLOC_HOST_PTR ou CL_MEM_USE_HOST_PTR drapeaux. Voir ici: clCreateBuffer. C'est l'un des grands goulets d'étranglement pour de nombreux noyaux.
2) vitesse de l'Horloge. les processeurs actuellement ont une grande avance sur le gpu en vitesse de l'horloge. 2Ghz sur le bas pour la plupart des processeurs, vs 1Ghz comme un haut de gamme pour la plupart des gpu ces jours-ci. C'est un facteur qui aide vraiment les cpu "gagner" plus d'un gpu pour les petites charges de travail.
3) Concurrent 'fils'. Haut de gamme de gpu ont généralement plus d'unités de calcul que leur cpu homologues. Par exemple, la 6970 gpu (Cayman) a 24 opencl unités de calcul, chacun d'eux est divisé en 16 unités SIMD. La plupart de la partie supérieure de bureau processeurs 8 cœurs, et le serveur cpu actuellement s'arrêter à 16 cœurs. (cœurs de processeur carte 1:1 pour calculer le nombre d'unités), Une unité de calcul en opencl est une partie de l'appareil qui peut effectuer le travail qui est différent du reste de l'appareil.
4) types de Filetage. les gpu ont une architecture SIMD, avec de nombreux graphiques des instructions. les processeurs ont beaucoup de leur espace dédié à la direction de la prévision et de la générale des calculs. Un processeur peut avoir une unité SIMD et/ou de l'unité de virgule flottante dans tous les cœurs, mais le Cayman puce je l'ai mentionné ci-dessus a 1536 unités avec le gpu jeu d'instructions disponible à chacun. AMD appelle processeurs de flux, et il y en a 4 dans chacune des unités SIMD mentionnés ci-dessus (24x16x4 = 1536). Pas de cpu va avoir beaucoup de sin(x) ou point-produit des unités aptes à moins que le fabricant veut couper certains de mémoire cache ou de la direction de la prévision du matériel. Le SIMD mise en page de la gpu est probablement le plus grand "gagnant" pour les grandes addition de vecteurs situations. Que le également effectuer d'autres fonctions spécialisées est un gros bonus.
5) De La Bande Passante Mémoire. les processeurs avec de la DDR3: ~17 GO/s. Haut de gamme des gpu >100 GO/s, les vitesses de plus de 200 GO/s sont de plus en commun ces derniers temps. Si votre algorithme n'est pas PCI-e limitée (voir #1), le gpu sera plus forte que la cpu brut d'accès à la mémoire. La planification d'unités dans un gpu peut masquer la latence de la mémoire supplémentaire en exécutant uniquement les tâches qui ne sont pas en attente sur l'accès à la mémoire. AMD s'appelle un front d'onde, Nvidia appelle une chaine. les processeurs ont un vaste et complexe système de mise en cache pour aider à cacher leur mémoire et temps d'accès dans le cas où le programme est la réutilisation des données. Pour votre vecteur ajouter le problème, vous serez probablement plus limité par le PCI-e en bus depuis les vecteurs sont généralement utilisés uniquement une fois ou deux fois chaque.
6) l'efficacité de la Puissance. Un gpu (utilisé correctement) sera généralement plus électriquement efficace qu'un cpu. Parce que les processeurs de dominer dans la vitesse d'horloge, l'un des seuls moyens pour vraiment réduire la consommation d'énergie est à la baisse de l'horloge de la puce. De toute évidence, cela conduit à plus de calculer les temps. Beaucoup des meilleurs systèmes sur le Vert de la liste des 500 sont fortement accélérées par gpu. voir ici: green500.org