2 votes

Calcul parallèle pour les intégrales

Je veux réduire le temps de calcul pour une intégrale longue en divisant la plage d'intégration. J'utilise C++, Windows et un processeur Intel i7 quad-core.

Comment puis-je le diviser en 4 calculs parallèles ?

0voto

duffymo Points 188155

Le problème auquel vous serez confronté concerne les conditions aux limites.

Il est facile de penser que la quadrature numérique peut être divisée en plusieurs domaines, mais vous ne connaissez pas les conditions aux limites internes.

Diviser une intégrale en sous-domaines commence à ressembler à une solution aux éléments finis, aux différences finies ou aux éléments de bord. Vous avez pris un domaine complexe, divisé en morceaux, transformé en une matrice et résolu en fonction des conditions aux limites que vous connaissez.

Je ne pense pas que ce soit aussi simple que de diviser le domaine en sous-domaines et d'en attribuer un à chaque processeur, mais je pourrais me tromper.

0voto

Tobias Langner Points 6354

Vous pouvez calculer l'intégrale en utilisant la règle des trapèzes (ou l'une des autres formules de Newton-Cotes). Pour obtenir un meilleur résultat, vous pouvez segmenter l'intervalle et utiliser la règle des trapèzes pour chaque segment. La formule peut être trouvée dans l'article lié.

Comme chaque calcul est indépendant des autres, vous pouvez les exécuter en parallèle. Le moyen le plus simple de le faire est OpenMP (comme mentionné ci-dessus).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X