2017-04-11 2 views
0

J'utilise AMD Radeon Pro duo pour mon application dans opencl. Il a un GPU Dual Fiji, Comment puis-je configurer Cross Fire pour les faire fonctionner comme un seul périphérique. J'utilise clgetdeviceinfo dans opencl pour vérifier les unités de calcul du périphérique, mais il affiche 64 pour chaque GPU Fidji. J'ai un total de 128 unités de calcul dans deux GPUS, Comment utiliser tous en utilisant Crossfire.Comment activer le crossfire sur AMD Radeon Pro DUO

Répondre

2

OpenCL a la fission de l'appareil mais pas la fusion de l'appareil. Les périphériques peuvent partager la mémoire pour plus d'efficacité, mais les shaders ne peuvent pas être joints.

Il y a aussi quelques fonctions qui ne peuvent pas synchroniser entre deux processeurs graphiques encore:

  • fonctions atomiques dans les noyaux
  • commande prélecture (qui GPUs cache global?)
  • clEnqueueAcquireGLObject (qui tampon GPU?)
  • clCreateBuffer (quel appareil memorry-t-il choisir? nous ne pouvons pas choisir.)
  • clEnqueueTask (d'où vient cette tâche aller?)

Vous devez partitionner le travail de codage en deux parties et exécuter sur les deux GPU. Cela peut même nécessiter un cross-fire désactivé si les pilotes ont des problèmes avec celui-ci. Cela ne devrait pas être plus difficile que d'écrire un encodeur GPGPU.

Mais vous devrez peut-être copier des données sur un seul des périphériques, puis copier la moitié des données vers un autre GPU à partir de ce tampon, au lieu de passer deux fois par pci-e. La connexion inter-GPU doit être plus rapide que pci-e.