68ae6cf65f
* adding summary.py to generate tmp <category_region>_summary views
* migrating CSV summary to SDK method of writing CSVs
- Add domain_view to summary.py
- omit the C++ code of writing CSV because it gets revered later anyway
* Add summary subparser and write_sql_view_to_csv function
* adding all <>_summary views generation to summary.py
* add summary_per_rank feature
* add --summary-per-rank
* reconstruct generate_summary_view and create_domain_view
-introduce by_rank
* remove sqr and variance in summary views
* use RocpdImportData instead of connection
* two fixes on summary.py
--modify the generate_summary_view function to return a tuple with view name and sql code
add if_not_exits parameter to generete_summary_view
* Refactor summary.py to allow output path and filename args, and apply time_window
- clean up summary table column headers
- only generate by-rank views if that param is specified
* Add ProcessID to Hostname output and csv, so users can identify the system in the by-rank summaries
* Summary.py, just add hostname to by-rank summaries, instead of creating mapping table
* Summary - migrate csv writer to pandas, for more future flexibility
* Adding a few simple tests for summary.py
* Linting fixes
* add region_categories to summary options
- Automatically retrieve region categories from the database if argument is None
* add backticks for view_names
* fix tests after rebase
* Made code review changes
- fixed whitespace in CMakelists.txt
- adding query.py module & subparser in __main__.py
- refactor summary function to return query
- used query.py to output csv
- used query.py to also output summary to console
- provided new command line options to select summary output to csv or console
* Made fix to jinja template in query.py, as suggested by copilot
* Consolidated output calls to query in export_view function based on feedback
- refactored: helpers, query functions, create view functions
- extended formats to include what query supports (md, html, pdf, json)
- added json format to query, and changed orient=records
- adding jinja2 and reportlab to requirements.txt
* Add version_info for rocpd and roctx
* Add rocpd commandline tool
* Add executable permissions to source/bin/rocpd.py
* Removed rocpd2query, and cleaned up --help examples
---------
Co-authored-by: acanadas <acanadas@amd.com>
Co-authored-by: Jin Tao <jintao12@amd.com>
Co-authored-by: a-canadasruiz <Araceli.CanadasRuiz@amd.com>
Co-authored-by: Jonathan R. Madsen <Jonathan.Madsen@amd.com>
[ROCm/rocprofiler-sdk commit: 3954cedd25]
154 строки
3.7 KiB
SQL
154 строки
3.7 KiB
SQL
--
|
|
-- Useful summary views
|
|
--
|
|
--
|
|
-- Sorted list of kernels which consume the most overall time
|
|
CREATE VIEW IF NOT EXISTS
|
|
`top_kernels` AS
|
|
SELECT
|
|
S.display_name AS name,
|
|
COUNT(K.kernel_id) AS total_calls,
|
|
SUM(K.end - K.start) / 1000.0 AS total_duration,
|
|
(SUM(K.end - K.start) / COUNT(K.kernel_id)) / 1000.0 AS average,
|
|
SUM(K.end - K.start) * 100.0 / (
|
|
SELECT
|
|
SUM(A.end - A.start)
|
|
FROM
|
|
`rocpd_kernel_dispatch` A
|
|
) AS percentage
|
|
FROM
|
|
`rocpd_kernel_dispatch` K
|
|
INNER JOIN `rocpd_info_kernel_symbol` S ON S.id = K.kernel_id
|
|
AND S.guid = K.guid
|
|
GROUP BY
|
|
name
|
|
ORDER BY
|
|
total_duration DESC;
|
|
|
|
--
|
|
-- GPU utilization metrics including kernels and memory copy operations
|
|
CREATE VIEW IF NOT EXISTS
|
|
`busy` AS
|
|
SELECT
|
|
A.agent_id,
|
|
AG.type,
|
|
GpuTime,
|
|
WallTime,
|
|
GpuTime * 1.0 / WallTime AS Busy
|
|
FROM
|
|
(
|
|
SELECT
|
|
agent_id,
|
|
guid,
|
|
SUM(END - start) AS GpuTime
|
|
FROM
|
|
(
|
|
SELECT
|
|
agent_id,
|
|
guid,
|
|
END,
|
|
start
|
|
FROM
|
|
`rocpd_kernel_dispatch`
|
|
UNION ALL
|
|
SELECT
|
|
dst_agent_id AS agent_id,
|
|
guid,
|
|
END,
|
|
start
|
|
FROM
|
|
`rocpd_memory_copy`
|
|
)
|
|
GROUP BY
|
|
agent_id,
|
|
guid
|
|
) A
|
|
INNER JOIN (
|
|
SELECT
|
|
MAX(END) - MIN(start) AS WallTime
|
|
FROM
|
|
(
|
|
SELECT
|
|
END,
|
|
start
|
|
FROM
|
|
`rocpd_kernel_dispatch`
|
|
UNION ALL
|
|
SELECT
|
|
END,
|
|
start
|
|
FROM
|
|
`rocpd_memory_copy`
|
|
)
|
|
) W ON 1 = 1
|
|
INNER JOIN `rocpd_info_agent` AG ON AG.id = A.agent_id
|
|
AND AG.guid = A.guid;
|
|
|
|
--
|
|
-- Overall performance summary including kernels and memory copy operations
|
|
CREATE VIEW
|
|
`top` AS
|
|
SELECT
|
|
name,
|
|
COUNT(*) AS total_calls,
|
|
SUM(duration) / 1000.0 AS total_duration,
|
|
(SUM(duration) / COUNT(*)) / 1000.0 AS average,
|
|
SUM(duration) * 100.0 / total_time AS percentage
|
|
FROM
|
|
(
|
|
-- Kernel operations
|
|
SELECT
|
|
ks.display_name AS name,
|
|
(kd.end - kd.start) AS duration
|
|
FROM
|
|
`rocpd_kernel_dispatch` kd
|
|
INNER JOIN `rocpd_info_kernel_symbol` ks ON kd.kernel_id = ks.id
|
|
AND kd.guid = ks.guid
|
|
UNION ALL
|
|
-- Memory operations
|
|
SELECT
|
|
rs.string AS name,
|
|
(END - start) AS duration
|
|
FROM
|
|
`rocpd_memory_copy` mc
|
|
INNER JOIN `rocpd_string` rs ON rs.id = mc.name_id
|
|
AND rs.guid = mc.guid
|
|
UNION ALL
|
|
-- Regions
|
|
SELECT
|
|
rs.string AS name,
|
|
(END - start) AS duration
|
|
FROM
|
|
`rocpd_region` rr
|
|
INNER JOIN `rocpd_string` rs ON rs.id = rr.name_id
|
|
AND rs.guid = rr.guid
|
|
) operations
|
|
CROSS JOIN (
|
|
SELECT
|
|
SUM(END - start) AS total_time
|
|
FROM
|
|
(
|
|
SELECT
|
|
END,
|
|
start
|
|
FROM
|
|
`rocpd_kernel_dispatch`
|
|
UNION ALL
|
|
SELECT
|
|
END,
|
|
start
|
|
FROM
|
|
`rocpd_memory_copy`
|
|
UNION ALL
|
|
SELECT
|
|
END,
|
|
start
|
|
FROM
|
|
`rocpd_region`
|
|
)
|
|
) TOTAL
|
|
GROUP BY
|
|
name
|
|
ORDER BY
|
|
total_duration DESC;
|