快速问题。对于我的代码的MPI实现,我在两者中获得了巨大的差异。我知道MPI_Wtime是每个处理器经过的实际时间,时钟()给出了预期时间的粗略概念。有人想添加一些断言吗?时钟()和MPI_Wtime之间的区别()
4
A
回答
3
clock
函数完全没用。它测量CPU时间,而不是实时/挂钟时间,而且它具有以下严重问题:
在大多数实现中,分辨率是极其恶劣的,例如1/100秒。
CLOCKS_PER_SECOND
不是分辨率,只是规模。对于典型值
CLOCKS_PER_SECOND
(例如Unix标准要求它为100万),在32位系统上,clock
会在几分钟内溢出。溢出后,它返回-1。由于C标准要求,大多数历史实现并不实际返回-1溢出,而是换行。由于
clock_t
通常是一个有符号类型,试图用包装值执行算术将产生无意义的结果或未定义的行为。在Windows上,它完成了错误的事情和测量,而不是CPU时间。
3
clock
的官方定义是它给你CPU时间。在Windows中,对于
歇斯底里的
历史原因 - 如果您现在将其更改为反映CPU时间,它会打破一些应用程序 - 在Windows上,时间只是流逝的时间。
MPI_Wtime
给出,正如你所说,“当前在这个处理器上的时间”,这是非常不同的。如果你做了1分钟的睡眠,MPI_Wtime
将向前移动60秒,其中clock
(Windows除外)几乎没有变化。
相关问题
- 1. MPI_Wtime与实际挂墙时间之间的区别
- 2. 当同时使用MPI和共享内存时,omp_get_wtime()和mpi_wtime()之间的区别
- 3. 代码中的Linux时间和性能时钟之间的区别
- 4. 之间的〜/和的区别../
- 5. 睡眠和超时之间的区别?
- 6. '#','%'和'$'之间的区别
- 7. {!!之间的区别!!}和{{}}
- 8. '+ ='和'= +'之间的区别?
- 9. “。+”和“。+?”之间的区别
- 10. .eq之间的区别。和==
- 11. #。/和#之间的区别。 ./
- 12. !=和!之间的区别==
- 13. “%〜dp0”和“。\”之间的区别?
- 14. | =和^ = css之间的区别
- 15. 之间的区别。和#
- 16. ==和case之间的区别?
- 17. “**/* /”和“** /”之间的区别?
- 18. jQuery - '。'之间的区别和“#”
- 19. “?1”和“?”之间的区别
- 20. `%in%`和`==`之间的区别
- 21. fmod和%之间的区别
- 22. 之间的区别:+和:+
- 23. VisualVM中的时间和时间(CPU)之间的区别
- 24. 系统时间和存储时间之间的区别
- 25. Python日期时间和时间模块之间的区别
- 26. 时间选择器当前和时间选择器时间之间的区别Android闹钟
- 27. 类区域和堆之间的区别
- 28. SPFile和PublishingPage类别之间的区别
- 29. 子类和类别之间的区别?
- 30. System.Timers.Timer Enabled = true和.Start()之间的区别Enabled = true和.Start()之间的区别
感谢您的回答。我需要测量MPI程序的总体时间(当然,它将与每个MPI_Wtime()不同)。分析对我来说似乎并不好,因为它不会花费大量时间来检测MPI实现中的其他功能。任何想法我都能做到这一点? –
我想,最后我可以打电话给MPI_Barrier(MPI_COMM_WORLD),之后我可以注意到任何MPI_Wtime()作为整体执行时间(这将作为速率确定步骤),或者从字面上讲,它将是所有MPI_Wtime()。请验证我! –
我对MPI不熟悉,但对文档的快速检查表明'MPI_Wtime'返回实时,而不是CPU时间。 “在呼叫处理器上”这个短语颇具误导性;它似乎与cpu时间没有任何关系,而是允许不同的内核可能对当前实际时间略有不同的想法。但是,这种差异不应该存在于高质量的系统中。 –