Bonjours!
Avant de vous exposer mon problème, je vais vous mettre en contexte pour que vous puissez comprendre la nature du problème.
Je suis présentement en apprentissage de programmation distribuée avec OpenMPI et mon but est de faire des convolution d'image sur plusieur 'processus' à la fois, en parallèle.
La méthode est simple:
- Charger l'image dans un 'array' avec le processus 0
- Envoyer une partie de l'image(array) à chaque processus ( jusqu'à 32 simultané )
- Chaque partie effectue sa convolution
- Chaque processus renvoi sa partie au processus 0
- Le processus 0 écrit l'image sur le disque
- Recommencer jusqu'à se qu'il n'y ait plus d'image.
Or, dans une convolution, on a toujours une bordure de (k-1)/2 (k = taille du noyau de convolution ) qui doit se recouvrir à chaque portion pour que la convolution se fasse correctement.
Se que je me demande: Quelle méthode utiliser pour réaliser correctement la convolution. J'ai regardé la methode Overlap-ADD qui effectue la convolution et qui additionne l'entrelassement mais je doute que je puisse l'utiliser avec Magick::convolve. Sinon, je dois faire moi même un algorithme de convolution, se qui ajoute grandement la complexité du problème...
Quelqu'un a une idée ??
Partager