Чудех се дали има някакви конкретни причини, поради които човек трябва да използва Wtime вместо други методи за измерване на времето? По-точно ли е или надеждно?
Единствената причина, която виждам, е независимостта на платформата.
Чудех се дали има някакви конкретни причини, поради които човек трябва да използва Wtime вместо други методи за измерване на времето? По-точно ли е или надеждно?
Единствената причина, която виждам, е независимостта на платформата.
Тъй като MPI_Wtime() гарантира, че началният час на всички рангове е един и същ, той може не само да се използва за изчисляване на времето между произволни две точки от един и същи ранг, но и за сравняване на времето, необходимо на различни рангове за достигане на определена точка много удобно.
Може да има и други приложения за този глобално синхронизиран часовник, но в момента мисля само за това.
MPI_Wtime() не гарантира глобалната синхронизация между процеси, разположени на различни възли. Той предоставя синхронен часовник за процес, разположен на същия възел, но също така gettimeofday() предоставя същото.
Според ръководството за MPI_Wtime (Open MPI 4.0.0):
На POSIX платформи тази функция може да използва таймер, който е по-евтин за извикване от системното извикване gettimeofday(), но ще се върне към gettimeofday(), ако не е наличен евтин таймер с висока разделителна способност. Командата ompi_info може да бъде прегледана, за да видите дали Open MPI поддържа собствен таймер с висока разделителна способност на вашата платформа; вижте стойността за "MPI_WTIME support" (или "options:mpi-wtime", когато преглеждате анализируемия изход). Ако тази стойност е "native", ще се използва метод, който вероятно ще бъде по-евтин от gettimeofday() за получаване на времето, когато се извиква MPI_Wtime.