2011-01-28 1 views
0

Je veux paralléliser automatiquement le programme séquentiel au niveau du thread pour fonctionner sur les processeurs multicœurs . Je ne sais pas utiliser lvm ou openIMPACT ou d'autres compilateurs.can vous m'aider dans ce sujet?parallélisation automatique

+1

Il y a très peu de choses sur la parallélisation qui vient automatiquement ... plus de détails s'il vous plaît? – Crisfole

+0

Je veux diviser un programme en plusieurs partitions et affecter chaque partition à un thread et exécuter des threads avec un modèle de pipeline. bien sûr avec inquiétude sur la dépendance entre les instructions du programme. – neda

+0

Oubliez la dépendance des instructions, un problème plus fondamental est la dépendance des données. Avez-vous un grand ensemble de données que vous pouvez facilement partitionner en tranches, et que vous avez traitées séparément sans que les threads ne dépendent des données des autres? Si vous le faites, il y a de fortes chances que vous puissiez effectuer une parallélisation automatique (comme OMP, VC++ parallel_For). Dans quelle langue est-ce? –

Répondre

0

Vous souhaitez diviser votre programme séquentiel en un pipeline de tâches qui communiquent via des flux de données. En supposant par exemple un programme C ou C++, vous devrez réécrire manuellement l'application dans un réseau de tâches parallèles. Il existe différentes API pour vous aider à écrire les tâches et la communication. Le modèle formel qui correspond bien à ceci est celui de Kahn Process Networks (KPN).

De toute évidence, le véritable défi consiste à réécrire votre code pour exposer toutes les communications dans des flux de données explicites. Cela peut représenter beaucoup de travail en fonction de l'application. Pour la mise en œuvre, OpenMP prend en charge le parallélisme des tâches. Jetez un oeil à la vfTasks library (C/C++) pour une API de streaming efficace que vous pouvez facilement utiliser sur n'importe quelle architecture que vous avez en tête. (Disclaimer: Je suis l'un des auteurs).

Questions connexes