Je reçois une erreur 'out of memory' en utilisant l'API cudaMallocPitch avec les GPU GeForce GTX 1080 TI et/ou GeForce GTX 1080 font partie d'un serveur PC complet qui comprend 4 GPU (1 1080 TI et 3 1080) et deux CPU.cudaMallocPitch est échoué alors que plusieurs processeurs GPU sont contrôlés par des processus CPU séparés malgré le fait qu'il y ait suffisamment de mémoire
Chaque GPU est contrôlé par un thread CPU dédié qui appelle cudaSetDevice avec le bon index de périphérique au début de son exécution.
Selon les informations d'un fichier de configuration, l'application sait combien de threads de CPU doivent être créés.
Je peux aussi exécuter mon application plusieurs fois en tant que processus séparés que chacun contrôlera différents GPU. J'utilise OpenCV version 3.2 pour effectuer une soustraction d'arrière-plan d'image. Tout d'abord, vous devez créer l'objet BackgroundSubtractorMOG2 en utilisant cette méthode: cv :: cuda :: createBackgroundSubtractorMOG2 et ensuite vous devez appeler sa méthode apply.
La première méthode d'application est appelée toute la mémoire nécessaire est alocalisée une fois.
La taille de l'image est 10000 cols et 7096 lignes. Chaque pixel est 1B (Niveaux de gris). Quand je lance mon application en un seul processus qui a plusieurs threads (chacun pour chaque GPU) tout fonctionne bien mais quand je l'exécute 4 fois en tant que processus séparés (chacun pour chaque GPU) la fonction d'application OpenCV commence échouer en raison de l'échec cudaMallocPitch «pas assez de mémoire».
Pour tous les GPU, j'ai vérifié que j'avais suffisamment de mémoire disponible avant que l'application ne soit activée pour la première fois. Pour 1080 il est rapporté que j'ai ~ 5.5GB et pour le 1080 TI j'ai ~ 8.3GB et la taille demandée est: largeur - 120000bytes, taille - 21288bytes - ~ 2.4GB.
Veuillez nous aviser.
En quoi cette question est-elle différente de vous? – talonmies
Cette question est mon vrai problème. Dans le cadre de son enquête, j'ai essayé de le reproduire avec une logique plus simple qui est représentée par la question précédente. Par erreur, je n'ai pas vu que c'était totalement OK. Donc, après avoir réalisé que mon test était OK, j'ai décidé de poser une question sur mon vrai problème. – OronG
Alors, vous souhaitez que nous vous aidions à déboguer vos mots? Comment pourrait-on dire ce qui pourrait mal se passer sans voir le code en question? – talonmies