Skip to content

Instantly share code, notes, and snippets.

@dipietrantonio
Created February 4, 2020 12:03
Show Gist options
  • Save dipietrantonio/48191097a314d3161c6cee32614714fd to your computer and use it in GitHub Desktop.
Save dipietrantonio/48191097a314d3161c6cee32614714fd to your computer and use it in GitHub Desktop.
from functools import reduce
def __convert_time(timeString):
if timeString.endswith("ms"):
return float(timeString[:-2])
elif timeString.endswith("us"):
return float(timeString[:-2])/1e3
elif timeString.endswith("ns"):
return float(timeString[:-2])/1e6
elif timeString.endswith("s") and timeString[-2].isdigit():
return float(timeString[:-2])*1000
else:
raise ValueError
def parse_nvprof_output(text):
lines = text.splitlines()
gpuActivitiesEnconutered = False
APIcallsEncountered = False
gpuActivities = list()
APICalls = list()
for line in lines:
if not gpuActivitiesEnconutered and not line.strip().startswith("GPU activities"):
continue
items = None
if not gpuActivitiesEnconutered:
gpuActivitiesEnconutered = True
_items = line.split()[2:]
items = _items[0:6] + [reduce(lambda x, y: x + " " + y, _items[6:])]
elif not APIcallsEncountered and line.strip().startswith("API calls"):
APIcallsEncountered = True
_items = line.split()[2:]
items = _items[0:6] + [reduce(lambda x, y: x + " " + y, _items[6:])]
else:
_items = line.split()
items = _items[0:6] + [reduce(lambda x, y: x + " " + y, _items[6:])]
# bring all times to the same time unit (ms)
for i in [1, 3, 4, 5]:
items[i] = __convert_time(items[i])
if gpuActivitiesEnconutered and not APIcallsEncountered:
gpuActivities.append(items)
else:
APICalls.append(items)
return gpuActivities, APICalls
def compute_total_time(filename):
GPUActivities, apiCalls = parse_nvprof_output(open(filename).read())
return sum(ga[1] for ga in GPUActivities)
if __name__ == "__main__":
import sys
times = [compute_total_time(f) for f in sys.argv[1:]]
from statistics import mean, stdev
print(times)
print(mean(times), stdev(times))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment