Мне было интересно, есть ли какие-то особые причины, по которым следует использовать Wtime вместо других методов измерения времени? Это точнее или надежнее?
Единственная причина, которую я вижу, это независимость от платформы.
Мне было интересно, есть ли какие-то особые причины, по которым следует использовать Wtime вместо других методов измерения времени? Это точнее или надежнее?
Единственная причина, которую я вижу, это независимость от платформы.
Поскольку MPI_Wtime() гарантирует, что время начала на всех рангах одинаково, его можно использовать не только для вычисления времени между любыми двумя точками одного и того же ранга, но и для сравнения времени, затрачиваемого разными рангами на достижение определенной точки. очень удобно.
Могут быть и другие приложения для этих глобально синхронизированных часов, но сейчас я могу думать только об этом.
MPI_Wtime() не гарантирует глобальной синхронизации между процессами, лежащими на разных узлах. Он предоставляет синхронные часы для процесса, лежащего на том же узле, но и gettimeofday() предоставляет то же самое.
Согласно руководству для MPI_Wtime (Open MPI 4.0.0):
На платформах POSIX эта функция может использовать таймер, который дешевле вызывать, чем системный вызов gettimeofday(), но будет возвращаться к gettimeofday(), если дешевый таймер с высоким разрешением недоступен. Можно обратиться к команде ompi_info, чтобы узнать, поддерживает ли Open MPI собственный таймер высокого разрешения на вашей платформе; см. значение «Поддержка MPI_WTIME» (или «options:mpi-wtime» при просмотре анализируемого вывода). Если это значение «родное», для получения времени вызова MPI_Wtime будет использоваться метод, который, вероятно, будет дешевле, чем gettimeofday().