2015年5月20日 星期三

定時執行某段程式

這回被指派的工作是每八小時印出程式中的某個vector,我上網查了一些文章,學到了使用多執行緒來計時的方法,剛好現在又有重新碰了openmp,用起來還算方便。

過去我沒有分執行緒的習慣,通常都是直接在迴圈內做「if delte_time > T dosomething」這種檢查,但這會佔到主執行緒的時間,所以處理的速度總是會被拖慢,如果有一千萬個迴圈,那這個檢查就會執行一千萬次,雖然和矩陣運算相比微不足道,但總不是個好方法。

現在學習到的方法是多切一個執行緒出來,專門進行計時的工作,程式碼我放在這裡了,其中要注意的地方是「計時」的函式,不能用 ctime 的 clock() ,要使用 omp_get_wtime() 才可以,如果使用 clock() ,在主執行緒好像不會有問題,但在切割出來的副執行緒似乎就會跑太快。