1 /* ************************************************************************ 2 * Copyright 2013 Advanced Micro Devices, Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * ************************************************************************/ 16 17 #include "ctimer.h" 18 #include "timer.hpp" 19 20 timer:: timer()21timer() : elapsed_time_(0.0) 22 { 23 init_time_ = get_walltime(); 24 } 25 26 timer:: ~timer()27~timer() 28 { 29 } 30 31 double 32 timer:: get()33get() 34 { 35 return elapsed_time_ + get_walltime() - init_time_; 36 } 37 38 void 39 timer:: pause()40pause() 41 { 42 elapsed_time_ = get(); 43 } 44 45 void 46 timer:: restart()47restart() 48 { 49 init_time_ = get_walltime(); 50 } 51 52 void 53 timer:: reset()54reset() 55 { 56 elapsed_time_ = 0.0; 57 init_time_ = get_walltime(); 58 } 59 60 void 61 timer:: reset_delay(double delay_time)62reset_delay(double delay_time) 63 { 64 reset(); 65 elapsed_time_ = delay_time; 66 } 67 CreateTimer()68Timer CreateTimer() 69 { 70 Timer local_timer = new timer(); 71 return local_timer; 72 } 73 DeleteTimer(Timer timer)74void DeleteTimer(Timer timer) 75 { 76 delete timer; 77 } 78 GetTime(Timer timer)79double GetTime(Timer timer) 80 { 81 return timer->get(); 82 } 83 ResetTimer(Timer timer)84void ResetTimer(Timer timer) 85 { 86 timer->reset(); 87 } 88 RestartTimer(Timer timer)89void RestartTimer(Timer timer) 90 { 91 timer->restart(); 92 } 93 PauseTimer(Timer timer)94void PauseTimer(Timer timer) 95 { 96 timer->pause(); 97 } 98 ResetDelayTimer(Timer timer,double delay_time)99void ResetDelayTimer(Timer timer, double delay_time) 100 { 101 timer->reset_delay(delay_time); 102 } 103 104