MPI с поддержкой потоков и вызовов Bcast - PullRequest
1 голос
/ 12 июля 2011

Мне было интересно, если в программе MPI, где вы указываете, что есть поддержка потоков, все потоки делают вызов MPI :: Bcast (убедившись, что в вызове процесс отправителя имеет только один поток), это получено? по всем другим потокам или только по одному потоку от каждого процесса (самый быстрый)?

Ответы [ 3 ]

3 голосов
/ 14 июля 2011

Общие реализации MPI имеют дело с коммуникацией между процессами.Реализации, поддерживающие потоки, просто позволяют нескольким потокам выполнять некоторые или все вызовы MPI, а не только один.Каждый из T потоков в процессе, вызывающем MPI_Bcast, означает, что процесс вызвал MPI_Bcast T раз и ожидает, что все остальные ряды на коммуникаторе будут делать то же самое.

1 голос
/ 28 ноября 2011

Добавить к ответу, полученному от Новелократа:

Основной единицей вычисления в MPI является «ранг». В большинстве (всех?) Интересных реализаций MPI ранг - это процесс. Все потоки внутри процесса имеют одинаковый идентификатор ранга.

Стандарт MPI поддерживает несколько уровней параллелизма потоков: MPI_THREAD_SINGLE, MPI_THREAD_FUNNELED, MPI_THREAD_SERIALIZED и MPI_THREAD_MULTIPLE.

Из них только MPI_THREAD_MULTILE на самом деле имеет несколько потоков, делающих перекрывающиеся вызовы в библиотеку MPI. Остальные три случая - это утверждение из приложения, что рейтинг можно рассматривать как «однопоточный». Для получения дополнительной информации см. Стандартную запись MPI в MPI_INIT_THREAD .

1 голос
/ 14 июля 2011

В зависимости от уровня поддержки потоков в вашей реализации MPI (пожалуйста, проверьте, поддержка потоков в MPI очень схематична), вызов MPI выполняется только один раз за процесс.

...