Re[4]: MPI_Gather
От: _hum_ Беларусь  
Дата: 28.03.17 15:51
Оценка:
Здравствуйте, Андрюха, Вы писали:

А>Если не нравится, то реализуйте свои версии MPI_Gather и MPI_SendForGathering, и работайте с ними. В чем проблема?

А>Будет у вас хорошая обертка, люди начнут пользоваться ею.

вопрос был, почему сделали так, как сделали — часто в таких ситуациях есть какие-то подводные камни, которые "неестественная" на первый взгляд реализация и пытается обойти.

__>>приходится мешать все в кучу, наподобие

__>>
__>>std::vector<int> MPIGatheredValues(nMPIProcessesCount, 0);

__>>const int value = <something>;

__>>MPI_Gather(&value, 1, MPI_INT, MPIGatheredValues.data(), 1, MPI_INT, 0, MPI_COMM_WORLD);
__>>


А>Это непривычно поначалу, но мне особых проблем не доставляет. К тому же, второй вариант выглядит компактней и понятней. Ветвления воспринимаются сложнее.

А>Все-таки MPI — это дитя научного сообщества, а не программистов, так что тут могут быть немного другие приоритеты.

ну так тут ветвление тоже есть, токо оно спрятано внутри MPI_Gather. получается, один и тот же код в разных процессах имеет разную семантику, что, имхо, не есть гуд.

__>>UPD. Возникла мысль — может быть, так сделано, для того, чтобы гарантировать, что всегда будет отсылающий и собирающий?


А>Программист гарантирует наличие отправителя и получателя, функции сами по себе этого сделать не могут.


еще как могут — если функция такова, что ее нельзя написать без отправителя и получателя, то можно говорить, что она гарантирет наличие того и другого
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.