Вычислительный центр им. А.А. Дородницына РАНРаздел виртуального курса
|
|
---|
Это упражнение касается одного кусочка информации, которая относится к относительной эффективности четырех способов коммуникации (синхронного, по готовности, буферизованного и стандартного): минимального времени, потраченного на вызов блокирующей отправки. Заметим, что это не является мерой времени для завершения коммуникации или даже мерой полной системной накладки.
Программа blocksends сообщает истекшее (wallclock) время, потраченное на вызовы блокирующих отправок для четырех способов коммуникации. Все получатели вызваны (объявлены) до того, как какие-либо сообщения отосланы. Отличающиеся относительные времена могут получиться, если получатели не объявлены первыми.
Отметим время потраченное на блокирующую отправку для различных способов коммуникации. Вам может понадобиться несколько запусков, чтобы получить представительные (репрезентативные) длительности.
Это упражнение демонстрирует, что замена блокирующего получения на неблокирующее может уменьшить синхронизационную накладку для соответствующей стандартной блокирующей отправки для сообщений, размер которых превышает размер буфера по умолчанию для коммуникаций на кластере (Посмотреть).
Программа brecv.exe является весьма искусственной: в ней задача 0 осуществляет блокирующую отправку, а задача 1 бездействует (спит) в течение десяти секунд перед выполнением блокирующего получения. Вызов бездействия (сна) предназначен для имитации затрат времени на полезные вычисления.
Программа на C вызывает функцию new_sleep(), чтобы имитировать некоторые вычисления.
для языка программирования C:
Определив, что использоваться будут два узла ровно, запустим программу. Она предоставит время, потраченное задачей 0 на блокирующую отправку.
для языка программирования C:
Определив, что использоваться будут два узла ровно, запустим программу. Она предоставит время, потраченное задачей 0 на неблокирующую отправку.
© 2003
Вычислительный центр им. А.А.Дородницына
Все права защищены. |
|