Hi,
I’m running into a problem while exporting the sqlite database using nsys stats. Using version NVIDIA Nsight Systems version 2024.5.1.113-245134619542v0, I’ve noticed that the data column in the GENERIC_EVENTS table is empty. I normally use this to extract the GPU metrics. The nsys-rep file was created with a slightly older version: NVIDIA Nsight Systems version 2024.4.1.61-244134315967v0.
Have the GPU metrics been moved to a different table in the sqlite database or are the versions incompatible for what I’m trying to do?
I believe that that is in fact the case, @jkreibich can confirm for sure. You can find more info about getting the schema info at User Guide — nsight-systems 2025.1 documentation (it looks like a generic link, the forum software is suboptimal, it is actually a direct link).
There were two changes to the exporter that, when mixed between different versions, might be causing issues. The good news is that the data is in the .nsys-rep
file regardless, the changes were only in the exporter, and how the data is organized in SQLite.
First, the JSON data was removed from the GENERIC_EVENTS
table, as it tended to create extremely large exports in some common use-cases. You can continue to export that data by using the --include-json=true
flag with the export, but it only applies to events that are still being exported to the GENERIC_EVENTS
table.
Additionally, at some point the GPU Metrics data was broken out into its own set of tables. The TARGET_INFO_GPU_METRICS
table contains the structure of the data, and the GPU_METRICS
table contains the actual event data. For a few versions the data was being exported into both the GPU_METRICS
table and the GENERIC_EVENTS
table, but the current version of Nsight Systems only exports GPU Metric events to the GPU_METRICS
table (this also means the JSON may no longer be available).
Have a look at those tables and see if you can get what you need from them. If not, or the format/layout isn’t making sense, let us know and I’ll try to answer any more specific questions.
CREATE TABLE TARGET_INFO_GPU_METRICS (
-- GPU Metrics, metric names and ids.
typeId INTEGER NOT NULL, -- REFERENCES GENERIC_EVENT_TYPES(typeId)
sourceId INTEGER NOT NULL, -- REFERENCES GENERIC_EVENT_SOURCES(sourceId)
typeName TEXT NOT NULL, -- Name of event type.
metricId INTEGER NOT NULL, -- Id of metric in event; not assumed to be stable.
metricName TEXT NOT NULL -- Definitive name of metric.
);
CREATE TABLE GPU_METRICS (
-- GPU Metrics, events and values.
rawTimestamp INTEGER NOT NULL, -- Raw event timestamp recorded during profiling.
timestamp INTEGER NOT NULL, -- Event timestamp (ns).
typeId INTEGER NOT NULL, -- REFERENCES TARGET_INFO_GPU_METRICS(typeId) and GENERIC_EVENT_TYPES(typeId)
metricId INTEGER NOT NULL, -- REFERENCES TARGET_INFO_GPU_METRICS(metricId)
value INTEGER NOT NULL -- Counter data value
);
Perfect, that’s exactly what I was looking for, thank you!
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.