2011-03-02 4 views

Répondre

9

Cela a été implémenté dans la version 2.6 de Mono.

From the release notes:

ParallelFx

Cette version inclut certains composants du cadre ParallelFx qui ont été développés dans le cadre de Google Summer Of Code 2008 & 2009. Plus précisément, il contient la bibliothèque parallèle de tâches et de données Structures pour la coordination. En utilisant ParallelFx, vous pouvez facilement développer un logiciel qui peut tirer automatiquement parti du potentiel parallèle des machines multicœurs actuelles. À cette fin, plusieurs nouvelles constructions comme des futures, des boucles parallèles ou des collections concurrentes sont maintenant disponibles.

Pour utiliser ce code, vous devez activer manuellement le profil .NET 4 à l'aide du commutateur --with-profile4 = yes à l'étape de configuration.

4

Dans ma propre expérience, j'ai un programme très parallèle en C# pour l'apprentissage et la classification des données de séquence du gène qui rend très lourd l'utilisation des fonctionnalités de la bibliothèque parallèle de tâches telles que Parallel.ForEach, Parallel.For, Groupe .Factory.StartNew(), et de nombreuses structures à partir de l'espace de noms Collections.Concurrent (collections de blocage, dictionnaires simultanés, sacs simultanés, etc.). En résumé, les performances de mon application sous Linux en mono sont beaucoup plus lentes. J'essaie toujours de comprendre cela. Je peux l'exécuter à partir de la console mono dans des fenêtres avec des performances similaires.

J'ai expérimenté l'utilisation du garbage collector sgen de mono en vain. Les performances de mon application sur un serveur Linux fonctionnant en mono sont encore nettement plus lentes.

apprentissage 8,258 séquences: 00:17 01:59 vs m: ss sur Linux

Classifier 921 séquences: 2,29 seconde par rapport 11:05 mm: ss sur Linux

Voir les captures d'écran ci-dessous.

enter image description here
enter image description here

+1

Jake, quelle version de Mono utilisez-vous? Avez-vous déjà constaté une amélioration de cette performance? – Boots

+0

J'utilisais Mono 3.2.3. Je n'ai jamais été capable de résoudre ce problème et d'abandonner complètement Mono pour ce projet. J'ai construit un boîtier Windows avec deux processeurs hexacore refroidis par liquide et 128 Go de RAM. Cependant, j'aurais une tonne de ressources universitaires à ma disposition, si je pouvais obtenir cette performance sur Linux ...Il est possible que la version Mono sous Linux était légèrement plus ancienne, mais elle devait au moins supporter .NET 4.5. Sinon, mon programme n'aurait pas été exécuté. –

0

Avez-vous essayez de changer la/min MaxThreads? Vous travaillez bien au-delà de moi, mais j'ai trouvé que rien ne se faisait. Donc, je l'ai mis à 5 * nombre de cœurs de processeur et il s'est cassé tout de suite!

Questions connexes