cconvey commented on PR #10765:
URL: https://github.com/apache/tvm/pull/10765#issuecomment-1087821766

   > I'm not sure I agree with throwing an error as the correct thing to do. 
Seems like if the runtime is zero nanoseconds then we should report zero 
nanoseconds.
   ...
   > And if the runtime is not zero, then we should increase number by a fixed 
amount a couple of times to see if we can start getting realistic results.
   
   I think this proposal and the PR's current implementation have the same 
issue: They make assumptions about the distribution of the  _actual_ running 
times of the target function, and build logic around that assumption.  Both run 
afoul of the "Seems like if the runtime is zero nanoseconds then we should 
report zero nanoseconds" critique.
   
   I have a few different ideas for addressing these concerns.
   
   Idea 1: Add a CI test that runs on every supported platform, and confirms 
that putting a timer around a `sleep(1)` call returns a non-zero duration.  
Would have caught this Hexagon issue, but I have no idea if this will catch the 
kinds of timer issues that will arise on future target platforms.
   
   Idea 2: Push the bogus-value sniffing into the `DefaultTimerNode` 
[implementation](https://github.com/apache/tvm/blob/6babb89cbb9fc5ab718f8b996c7ce60bf5ebbefd/src/runtime/profiling.cc#L43-L52).
 
   - For example, it could throw an exception if 
`std::chrono::high_resolution_clock::now()` ever returned 0.
   - It's still a heuristic, but at least it's a platform-specific heuristic, 
which is a little more reasonable.
   
   Idea 3: Modify the `time_evaluator` contract/API so the caller can also 
specify a total limit on the number of loop iterations.
   - This would have prevented the infinite loops when Hexagon was broken.
   - But it seems strange to add it to the `time_evaluator` API if the only 
justification is that we don't trust our implementations.
   
   Thoughts?  (Personally, I like Idea 1 or Idea 2 the best.)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to