Files

Ignorování revizí v .git-blame-ignorerevs. Klikněte zde pro obejití a zobrazení normálního pohledu blame.

154 řádky
3.7 KiB
SQL
Surový Trvalý odkaz Normální zobrazení Historie

--
-- 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,
2025-06-06 04:03:14 -05:00
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,
2025-06-06 04:03:14 -05:00
guid,
SUM(END - start) AS GpuTime
FROM
(
SELECT
agent_id,
2025-06-06 04:03:14 -05:00
guid,
END,
start
FROM
`rocpd_kernel_dispatch`
UNION ALL
SELECT
dst_agent_id AS agent_id,
2025-06-06 04:03:14 -05:00
guid,
END,
start
FROM
`rocpd_memory_copy`
)
GROUP BY
2025-06-06 04:03:14 -05:00
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;