2017-05-25 5 views
2

Est-il possible d'effectuer une opération RDMA entre un GPU et un hôte distant?RDMA entre GPU et hôte distant

La documentation en ligne sur le site de Nvidia ne parle que de RDMA entre les GPU et ne mentionne pas la possibilité de le faire entre GPU-host.

Remarque: J'ai accès à un cluster équipé de GPU K80 et de cartes d'interface réseau Mellanox.

+1

Quelle carte réseau mellanox avez-vous (quelle est la puce)? Nvidia appelle la fonctionnalité "[GPUDirect RDMA] (http://docs.nvidia.com/cuda/gpudirect-rdma/)" et devrait être prise en charge dans GPU depuis 2012. Quel est votre processeur hôte - est-ce x86/x86_64 ou IBM? Quelle est votre version de CUDA? Il existe des publications comme https://www.researchgate.net/publication/266388594_Infiniband-Verbs_on_GPU_A_case_study_of_controlling_an_Infiniband_network_device_from_the_GPU et http://web.cse.ohio-state.edu/~panda.2/5194/slides/5m_5p_gpu.pdf – osgx

+0

J'ai un ConnectX-3 VPI. Le processeur hôte est x86_64. La version de Cuda est V8.0.61. – JC1

Répondre

4

Est-il possible d'effectuer une opération RDMA entre un GPU et un hôte distant?

Oui, il est possible de déplacer des données entre le GPU et la carte Infiniband avec "GPUDirect RDMA" caractéristique des GPU NVIDIA Compute (Tesla et Quadro) depuis 2012 (GPU Kepler classe et CUDA 5.0). Il y a la page web sur GPUDirect RDMA dans CUDA Toolkit http://docs.nvidia.com/cuda/gpudirect-rdma/

GPUDirect RDMA est une technologie introduite dans les GPU de classe Kepler et CUDA 5.0 qui permet à un chemin direct pour l'échange de données entre le GPU et un dispositif homologue tiers utilisant caractéristiques standard de PCI Express. Des exemples de périphériques tiers sont: les interfaces réseau, les périphériques d'acquisition vidéo, les adaptateurs de stockage.

GPUDirect RDMA est disponible sur les GPU Tesla et Quadro.

Un certain nombre de limitations peuvent s'appliquer, la plus importante étant que les deux périphériques doivent partager le même complexe racine PCI Express amont. Certaines des limitations dépendent de la plate-forme utilisée et pourraient être levées dans les produits actuels/futurs.

Quelques modifications simples doivent être apportées aux pilotes de périphériques pour activer cette fonctionnalité avec une large gamme de périphériques matériels. Ce document présente la technologie et décrit les étapes nécessaires pour permettre une connexion GPUDirect RDMA aux GPU NVIDIA sous Linux.

Il existe des limites: http://docs.nvidia.com/cuda/gpudirect-rdma/index.html#supported-systems

2,4. Systèmes pris en charge

Remarques générales. Même si la seule exigence théorique pour GPDRirect RDMA pour fonctionner entre un périphérique tiers et un GPU NVIDIA est qu'ils partagent le même complexe racine, il existe des bugs (principalement dans les chipsets ) ce qui le rend mal, ou ne fonctionne pas du tout dans certaines configurations .

On peut distinguer trois situations, en fonction de ce qui est sur le chemin entre le GPU et le périphérique tiers: PCIe passe uniquement simple CPU/CPU IOH/IOH < -> QPI/HT < -> CPU/IOH La première situation , où il n'y a que des commutateurs PCIe sur le chemin, est optimale et donne les meilleures performances. Le second, où un seul CPU est impliqué, fonctionne, mais donne de moins bonnes performances (en particulier la bande passante de lecture pair-à-pair s'est révélée être sévèrement limitée sur certaines architectures de processeur). Enfin, la troisième situation, où le chemin traverse une liaison QPI/HT, peut être extrêmement limitée en performance ou même ne pas fonctionner de manière fiable.Astuce: lspci peut être utilisé pour vérifier la topologie PCI :

$ lspci -t 

support Plate-forme d'IBM plate-forme Power 8, GPUDirect RDMA et P2P ne sont pas pris en charge, mais ne sont pas explicitement désactivé. Ils peuvent ne pas fonctionner à l'exécution.

Sur ARM64, la fonctionnalité d'égal à égal nécessaire dépend à la fois du matériel et du logiciel de la plateforme en question. Ainsi, alors que GPUDirect RDMA n'est pas explicitement désactivé dans ce cas, il n'y a aucune garantie qu'il sera entièrement fonctionnel. IOMMUs GPUDirect RDMA utilise actuellement toutes les adresses physiques étant les mêmes du point de vue des différents périphériques PCI. Ce le rend incompatible avec IOMMUs effectuant toute forme de traduction autre que 1: 1, par conséquent ils doivent être désactivés ou configurés pour traduction directe pour GPUDirect RDMA pour fonctionner.

+1

Vérifiez également https://stackoverflow.com/search?q=GPUDirect et https://stackoverflow.com/questions/31046386/how-to-use-gpudirect-rdma-with-infiniband "Comment utiliser GPUDirect RDMA avec Infiniband "-" vous avez besoin de ce qui suit installé: Mellanox OFED installé .. Suite récente NVIDIA CUDA installée .. Plugin GPUDirect Mellanox-NVIDIA "& http://www.mellanox.com/related-docs/prod_software/RDMA_Aware_Programming_user_manual.pdf – osgx