I tested your code and get stable results, even though I would recommend to accumulate the time for a few hundred iterations and calculate the mean once.
Anyway, for resnet101, this is the result for libtorch 1.6.0:
Iteration : 0 Elapsed time 1837.04
Iteration : 100 Elapsed time 22.734
Iteration : 200 Elapsed time 22.597
Iteration : 300 Elapsed time 22.264
Iteration : 400 Elapsed time 22.724
Iteration : 500 Elapsed time 22.885
Iteration : 600 Elapsed time 22.647
Iteration : 700 Elapsed time 22.73
Iteration : 800 Elapsed time 22.692
Iteration : 900 Elapsed time 22.541
Iteration : 1000 Elapsed time 22.549
Iteration : 1100 Elapsed time 22.788
Iteration : 1200 Elapsed time 22.694
Iteration : 1300 Elapsed time 22.637
Iteration : 1400 Elapsed time 22.744
Iteration : 1500 Elapsed time 22.663
Iteration : 1600 Elapsed time 22.66
Iteration : 1700 Elapsed time 22.785
Iteration : 1800 Elapsed time 22.681
Iteration : 1900 Elapsed time 22.786
Iteration : 2000 Elapsed time 22.668
Iteration : 2100 Elapsed time 22.697
Iteration : 2200 Elapsed time 22.749
...

Note that the first iteration takes longer, since you are already starting the timer before calling the synchronize op.