Я ищу некоторое руководство с помощью C# и параллельного программирования. Я знаю, что MPI .NET существует, и OpenMP не поддерживается. Мой вопрос: есть ли какая-нибудь другая библиотека (TPL?) Или функция, которая может выполнять функциональные возможности, предоставляемые OpenMP? Я буду работать (надеюсь,!) С последней версией mono (C# .NET 4.0). Код будет работать на Cray XT6M, поэтому использование ресурсов по одному на каждой плате и на узле будет иметь важное значение. Спасибо за ваше время!C# HPC - MPI и OpenMP
ответ
Вы можете взглянуть на Dryad, параллельный подход к программированию Microsoft, где C# на самом деле является гражданином первого класса. По-видимому, Microsoft использует его для Bing и тренирует алгоритмы отслеживания тела для Kinect [2]. Он использует более крупнозернистый параллелизм данных, чем OpenMP. Это больше похоже на процессы с каналами, чем потоки с разделяемой памятью.
Я боюсь, что настройка его на систему Mono/Linux/Cray, вероятно, будет трудно сказать по меньшей мере. Тем не менее, C# не является вашим типичным языком HPC. Как правило, очень сложно эффективно запускать C# в этой шкале/типе системы. Я бы рекомендовал оценить перенос вашего программного обеспечения на язык HPC «первого класса», например. C, Fortran.
Также как примечание: OpenMP не масштабируется на полной машине Cray XT6M (или любой кластер HPC, если на то пошло), вы можете использовать эту форму параллелизма (разделяемую память). Для связи между узлами вам нужна другая форма параллелизма, обычно MPI. Вы также можете использовать MPI в узле.
Спасибо, это выглядит интересно. Я завершил проект на C с использованием гибридного MPI/OMP. Оглядываясь назад, C# может работать в такой среде и может иметь преимущества, поскольку Dryad и подобные проекты продвигаются вперед, но контроль и скорость C или Fortran слишком важны для передачи в программе HPC. – Volvox
Я действительно не осознавал возраст этого вопроса. Я рад, что вы смогли затеять проект! – Zulan
C# - прекрасный язык для многих вещей, но сам по себе он не будет в полной мере использовать этот Cray. Разработчики из Microsoft оптимизируют библиотеки для дюжины ядер или меньше, и, скорее всего, разработчики Xamarin больше беспокоятся о сотовых телефонах. Вы хотите использовать MPI или другой параллельный язык программирования под вами. Вы можете сделать это с помощью C# и нескольких других языков (python также популярен в мире HPC), но ключ сидит поверх правильных библиотек. TPL не будет сокращать его в этом масштабе параллелизма.
- 1. MPI OpenMp hybrid
- 2. Описание OpenMP & MPI
- 3. OpenMP + MPI Hybrid in C - сложность компиляции
- 4. Гибкое динамическое планирование OpenMP и MPI
- 5. Hybrid openmp mpi mandelbrot code
- 6. Ошибка MPI + OpenMP сегментации и непредсказуемое поведение
- 7. В чем разница между MPI и OpenMP?
- 8. MPI и OpenMP для настольных процессоров
- 9. Программа «hello world» C, использующая гибрид OpenMP и MPI
- 10. C++ MPI standard 3
- 11. более медленное время работы с гибридным OpenMP/MPI против OpenMP
- 12. Что легче изучить и отладить OpenMP или MPI?
- 13. Проблемы с Autotools при связывании с OpenMP, MPI и CUDA
- 14. MPI_Bcast с использованием потоков (OpenMP) в MPI
- 15. MPI vs openMP для общей памяти
- 16. Оптимальный способ работы гибридного MPI - задания OpenMP
- 17. Можем ли мы использовать MPI для приложений HPC в облаке
- 18. Как запустить многопоточность в MPI + openmp?
- 19. Почему этот код openmp + mpi висит
- 20. Сценарий отправки MPI + OpenMP на LSF
- 21. Как скомпилировать гибридную программу OpenMP и MPI на OS X
- 22. Программирование на C++ для кластеров и HPC
- 23. Структуры MPI и C
- 24. OpenMP, C++ и итераторы
- 25. MPI и OpenMP. У меня даже есть выбор?
- 26. Вопросы о HPC на SLURM
- 27. Является ли пространство имен MPI C++ не включенным в Microsoft HPC Pack 2008 R2?
- 28. Сочетание Boost :: Threads и OpenMP
- 29. Hybrid OpenMP + MPI: Мне нужно объяснение из этого примера
- 30. Массивные потери производительности при расширении Openmp с MPI
.NET 4 поддерживают параллельное программирование. Вам не нравится, как Microsoft справляется с параллельными задачами?! – amrfaissal
Да ... когда у вас есть 1248 ядер, просто вызывающих пару потоков, это не режет. Спасибо за попытку. – Volvox
Ну, с честью, часть вопроса задавала вопрос о OpenMP, и в C# есть несколько вариантов потоков. Однако для материала с распределенной памятью я не знаю - MPI.NET выглядит так, как будто он был оставлен в конце 2008 года, и я не уверен, какие другие варианты существуют на аналогичном уровне промежуточного уровня. Почти наверняка ничего не будет настроено для соединения Seastar +. –