2017-02-26 1 views
1

Il ya AMD HIP C++ qui est très similaire à CUDA C++. Aussi AMD a créé Hipify pour convertir CUDA C++ pour HIP C++ (Portable C++ Code) qui peut être exécuté sur les deux GPU nVidia et AMD GPU: https://github.com/GPUOpen-ProfessionalCompute-Tools/HIPQuelles sont les conditions requises pour utiliser les opérations `shfl` sur un GPU AMD en utilisant HIP C++?

exigence de nvidia

s'il vous plaît assurez-vous que vous avez un 3.0 ou supérieur Compute capable pour utiliser les opérations de distorsion shfl et ajouter -gencode arch = compute = 30, code = sm_30 nvcc dans le Makefile en utilisant cette application.

En outre, HIP définit les mécanismes mobiles pour interroger des éléments architecturaux, et prend en charge un plus grand 64 bits waveize qui étend le type de retour pour les fonctions de voies transversales comme le vote et le shuffle entre les bits de 32 bits et les bits de 64 bits.

Mais qui des processeurs graphiques AMD fait les fonctions de support shfl, ou tout support fait GPU AMD shfl parce que le GPU AMD a mis en œuvre à l'aide-mémoire locale sans instruction matériel registre à registre?

nVidia GPU requis Capacité de calcul de 3,0 ou supérieure (CUDA CC), mais quelles sont les conditions requises pour utiliser les opérations shfl sur le GPU AMD en utilisant HIP C++?

Répondre

3
  1. Oui, il y a de nouvelles instructions GPU GCN3 tels que ds_bpermute et ds_permute qui peut fournir les fonctionnalités telles que __shfl() et encore plus

  2. Ces ds_bpermute et ds_permute instructions utilisent uniquement la route de Mémoire locale (LDS 8.6 TB/s), mais n'utilise pas de mémoire locale, cela permet d'accélérer l'échange de données entre threads: 8.6 To/s < vitesse < 51.6 To/s: http://gpuopen.com/amd-gcn-assembly-cross-lane-operations/

Ils utilisent du matériel LDS pour acheminer les données entre les 64 voies d'un front d'onde, mais ils n'écrivent pas vraiment à un emplacement LDS.

  1. il y a Primitives de données-parallèle (DPP ) également - est particulièrement puissant quand vous pouvez l'utiliser comme un OP peut lire les registres de workitems voisins directement. C'est à dire.DPP peut accéder au fil voisin (WORKITEM) à pleine vitesse ~ 51,6 TB/s

http://gpuopen.com/amd-gcn-assembly-cross-lane-operations/

maintenant, la plupart des instructions vectorielles peut faire la lecture croisée voie à pleine débit .

Par exemple, wave_shr -instruction (changement Wavefront droite) pour algorithme d'analyse:

enter image description here

En savoir plus sur GCN3: https://github.com/olvaffe/gpu-docs/raw/master/amd-open-gpu-docs/AMD_GCN3_Instruction_Set_Architecture.pdf

nouvelles instructions

  • "SDWA" - L'adressage de sous-dword permet d'accéder aux octets et mots des VGPR dans les instructions VALU.
  • "DPP" - Le traitement parallèle des données permet aux instructions VALU d'accéder aux données des voies voisines.
  • DS_PERMUTE_RTN_B32, DS_BPERMPUTE_RTN_B32.

...

DS_PERMUTE_B32 avant permute. N'écrit aucune mémoire LDS.