Разница между clock() и MPI Wtime()
Быстрый Вопрос . для реализации MPI моего кода я получаю огромную разницу в обоих. Я знаю, что MPI_Wtime-это реальное время, прошедшее каждым процессором, и clock () дает приблизительное представление о ожидаемом времени . Кто-нибудь хочет добавить утверждение ?
2 ответов
на clock
функция совершенно бесполезна. Он измеряет время процессора, а не реальное время / время стены, и, кроме того, у него есть следующие серьезные проблемы:
в большинстве реализаций разрешение крайне плохое, например, 1/100 секунды.
CLOCKS_PER_SECOND
это не разрешение,а только масштаб.с типичными значениями
CLOCKS_PER_SECOND
(стандарты Unix требуют, чтобы это был 1 миллион, например),clock
переполнит в считанные минуты на 32-битные системы. После переполнения он возвращает -1.большинство исторических реализаций фактически не возвращают -1 при переполнении, как требует стандарт C,а вместо этого переносят. As
clock_t
обычно является подписанным типом, попытка выполнить арифметику с обернутыми значениями приведет либо к бессмысленным результатам, либо к неопределенному поведению.в Windows он делает совершенно неправильную вещь и измеряет истекшее Реальное время, а не процессор время.
официальное определение clock
Это дает вам CPU-время. В Windows, для истеричка исторические причины-это сломает некоторые приложения, если вы измените его, чтобы отразить CPU-time now-on Windows, время просто истекло.
MPI_Wtime
дает, как вы говорите, "текущее время на этом процессоре", что совсем другое. Если вы делаете что-то, что спит в течение 1 минуты, MPI_Wtime
будет двигаться 60 секунд вперед, где clock
(за исключением Windows) было бы довольно почти без изменений.