parallel processing - Quelles sont les meilleures options actuelles pour paralléliser un CPU

Translate

C'est une question ouverte. Quelles approches devrais-je envisager?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Votre première étape consiste à trouver et à comprendre le parallélisme de votre problème. Il est vraiment facile d'écrire du code multithread qui ne fonctionne pas mieux que le code monothread qu'il remplace. "Modèles pour la programmation parallèle"(Amazone)est une excellente introduction aux concepts clés.

Une fois que vous avez une conception réalisable, commencez à lire les articles de la rubrique "Concurrence" dans les archives de MSDN Magazine(lien), en particulier tout ce qui a été écrit par Jeff Richter. Ceux-ci vous donneront les écrous et boulons sur les constructions de filetage spécifiques à Windows et .NET. (La section multi-threading dans "CLR via C # de Richter(Amazone)est court, mais très perspicace - fortement recommandé.)

La source
Translate

Certaines extensions parallèles à .NET sont actuellement en cours de test et disponibles chez MicrosoftCentre de développement Parallel Computing. Ils ont quelques éléments intéressants auxquels vous vous attendez comme Parallel foreach et une version parallèle de LINQ appelée PLINQ. Certaines des meilleures informations sur les extensions se trouvent surCanal 9.

La source
Moses Lee
Translate

Je pense que nous pourrions également inclure des approches non spécifiques à .NET pour le traitement parallèle si celles-ci font partie des meilleures options à considérer.

La source
Translate

@Larsenal

Si vous souhaitez créer une branche en dehors de .NET, il y a eu beaucoup de discussions sur IntelFiletage des blocs de constructionqui est une bibliothèque parallèle pour C ++.

La source
Translate

Il existe de nombreuses options et la meilleure solution dépendra de la nature du problème que vous essayez de résoudre. Si vous essayez de résoudre unparallèlement embarrassantproblème alors diviser et paralléliser les tâches sera trivial. Dans ce cas, le défi viendra de distribuer et de gérer les données utilisées.

Quelques suggestions seraient:

La source