2017-01-26 1 views
4

En utilisant MetalKit pour iOS 10, quand nous essayons de réaliser MPSCNNConvolution, avec des entrées comme suit:MetalKit pour iOS 10: L'exécution du tampon de commande a été abandonnée en raison d'une erreur lors de l'exécution. Erreur Causé GPU Délai d'attente (code IOAF 2)

Taille du noyau: 16x16 canaux d'entrée: 300 canaux de sortie: 250

Dimensions de l'image d'entrée: 250x250x300

L'exécution de la mémoire tampon de commande prend plus de 10 secondes et se termine par l'indication "L'exécution de la mémoire tampon de commande a été interrompue en raison d'une erreur pendant l'exécution. . Comment régler ceci?

Existe-t-il un moyen de fixer le processus? A l'aide de ces convolutions, notre but est d'exécuter la déconvolution et comme il n'y a pas encore d'API, nous essayons de le faire nous-mêmes. . Existe-t-il des méthodes API pour effectuer ces opérations de déconvolution?

Répondre

0

Il semble qu'une erreur ait entraîné un délai d'attente. Je ne pense pas que le temps d'exécution de votre programme soit la cause réelle du timeout.

Je voudrais essayer ce qui suit: aller à Product -> Scheme -> Edit Scheme -> avec "Exécuter" sélectionné, cliquez sur l'onglet Options ->Set Metal API Validation à Activé.

Cela permettra à Metal de lancer une exception au moment où vous lui passez des paramètres non valides, plutôt que de cracher des erreurs mystérieuses plus tard.

0

Je recommande de vérifier ce lien, il me aide à gérer les limites métalliques d'une manière Prober

https://developer.apple.com/library/content/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/BestPracticesforShaders/BestPracticesforShaders.html

Quant à moi, je fortement recommandé d'éviter les calculs lourds de tri spécialement ou la manipulation de grands tableaux de données à l'intérieur du fonction de rendu je ferais mes calculs séparément s'il vous plaît vérifier aussi ma réponse ici ios metal: limit on number of variables used in a shader