Merge From Github 08-21-2023
Squashed commit of the following: commit 5aa25263e7000c323dc9efbedb11fe9d6bd3a97c Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Thu Aug 17 18:25:18 2023 +0000 Adding HIP_ROOT_DIR Change-Id: I60243fd0fa6572c6fe045d89814c8505a2a13ebd commit ea48b63681007cdfc98916b6aa218c218dcd6198 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Thu Aug 17 18:25:18 2023 +0000 Adding extra arguments option to build.sh Change-Id: I60243fd0fa6572c6fe045d89814c8505a2a13ebd commit 24b4f4ab5a1c53f3877813af71a1ae2f209c04ff Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Thu Aug 17 14:34:46 2023 +0000 Optimizing the build script Change-Id: I1805aabc5458d3e0c8949315b3075d3a080c9fdd commit 965dc7702759bf14c7a73361567da058ea07f780 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Aug 16 15:44:42 2023 +0000 Disabling OpenMP test Change-Id: I0a0b8f5f558b84c9de3bd589a0f65ac59bde70b9 commit cbb5b20821e603a7e50bf2afbb432559e60f6842 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Aug 15 17:12:43 2023 +0000 Fixing missing omp.h issue Change-Id: Ic4582d89ee82003932b12635fc55f98a2c68b96f commit 910df315ad552f51fa9585f1b1574ca318112f1c Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Aug 15 15:35:19 2023 +0000 Workarounds for Jenkins CI system Change-Id: Ie04ee49abe6fa66493d09d33dbeafd012a78eea8 commit a9f93d9154c275914873229aac0f2353f92fb967 Author: Benjamin Welton <Benjamin.Welton@amd.com> Date: Fri Aug 11 15:57:02 2023 -0700 [SWDEV-416173] LD_PRELOAD roctx library when tracing roctx on rocprof v1 (#99) Co-authored-by: Ammar ELWazir <aelwazir@amd.com> commit 974d31f733b5c56d9e50317a4e476147f22f66bd Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Aug 9 12:52:43 2023 -0500 Update continuous_integration.yml commit c12b21c832a05b3ee7bd5cb3c37d1e5dff56a479 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Aug 9 12:03:32 2023 -0500 Update continuous_integration.yml (#98) commit 051021200af40400b95dcfe2e4f71fb15c1ee67f Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Aug 9 08:19:22 2023 -0500 Docker cleanup weekly job, using large runners instead of normal ones (#97) * Docker cleanup weekly job, using large runners instead of normal ones Change-Id: I355ba5576aee10ab7b311a0247980e3078cc6f65 * Update formatting.yml * Update markdown_lint.yml * Update formatting.yml * Update markdown_lint.yml * Update formatting.yml commit ad33a6fb74ab3789f509f0eae4779866f05e5b22 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Wed Aug 9 18:10:50 2023 +0530 Fixing failed tests and enabling disabled tests (#66) * Fixing failed tests and enabling disabled tests * Enabling HIP Openmp test * run cmake formatting (cmake-format) * run formatting (clang-format v11) * fixing typo * Removing spm test * emoving problematic tests * Fixing HIP MPI test * Run MPI tests only when MPI found * diabling simpleconvolution for navi hang issues * fixing navi32 tests * Update tests-v2/featuretests/tracer/tracer_gtest.cpp Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> * Update tests-v2/featuretests/tracer/apps/copy_on_engine.cpp Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> * Disabled unused device profiling test Addressed review comments reverted device profiling changes * fixing MPI and OpenMP tests * run formatting (clang-format v11) --------- Co-authored-by: bgopesh <bgopesh@users.noreply.github.com> Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Co-authored-by: Ammar ELWazir <aelwazir@amd.com> commit fdd7eb833a41f37b7260c69ea3100ce6598a1263 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed Aug 9 00:46:05 2023 -0500 Bump actions/checkout from 2 to 3 (#95) Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> commit 129d9c203c5af2cebb6c8d129bfefe2ef4e04de4 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Aug 8 22:44:39 2023 -0500 Update dependabot.yml commit 6f1957e13b101f86c24777aa8b6921dc5704393b Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Tue Aug 8 22:35:44 2023 -0500 Format python code (#56) * Format python code - apply black + auto PR creation * python formatting (black) (#60) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Update rocprofiler_formatting.cmake - fix format dependencies - include_guard is GLOBAL - only accept clang-format-11 and clang-format-mp-11 * python formatting (black) * python formatting (black) (#93) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit ab97c36396a693620e8b3fa4cfc04aad15fd54be Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Aug 8 22:28:10 2023 -0500 Create dependabot.yml commit a6e3a3046bd7e42459c41564fcb7298dd2c22f78 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Tue Aug 8 03:28:29 2023 +0530 Adding missing reference to V1 tool usage (#89) * Adding missing reference to V1 tool usage * Update README.md Co-authored-by: Ammar ELWazir <aelwazir@amd.com> --------- Co-authored-by: Ammar ELWazir <aelwazir@amd.com> commit 101318c54a573da08749d648e4dede80519953c3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Aug 7 10:20:52 2023 -0500 Gerrit amd staging (#85) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * Merging From Github Squashed commit of the following: commit 7ab6644fd04db189801f6cee70a09bb621070b60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Sat Jul 15 00:47:30 2023 -0500 Gerrit amd staging (#49) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * run cmake formatting (cmake-format) (#50) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * run formatting (clang-format v11) (#51) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * Update CMakeLists.txt Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: Giovanni LB <gbaraldi@amd.com> Co-authored-by: Ranjith Ramakrishnan <Ranjith.Ramakrishnan@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> commit 3476ef7afe4e7af0a282b42da4b06ec8b0b9301a Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Fri Jul 14 19:11:41 2023 -0500 Workflow simplification and cancellation (#48) * Update formatting workflow - ignore changes to pull_*.yml workflows * Update pull_from_gerrit.yml workflow - allow manual trigger (workflow dispatch) - concurrent cancellation * Update pull_latest_dockers.yml workflow - simply workflow significantly by using matrix - allow manual trigger (workflow dispatch) - concurrent cancellation - run when pushed * Update CMake workflow - ignore changes to pull_*.yml workflows - concurrent cancellation commit f053319a4873b3d0d5d6a5074238c0371e0c9f60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 20:27:40 2023 -0500 Update and rename pull.yml to pull_from_gerrit.yml (#44) commit 90b423ebfaf35cc14d6c3b07c617e2346140853f Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:40:45 2023 -0500 Update pull_latest_dockers.yml commit 93acde8ed69766fb6d3482a1be8238f322b1db75 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:38:29 2023 -0500 Update pull_latest_dockers.yml commit 0092267a800ef1571bdb423272a8f2a2b8a641e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:29:47 2023 -0500 Gerrit amd staging (#9) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * run formatting (clang-format v11) (#10) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I994a9fa743d47de3640d2bf7ae9ea3e01ea44f6a * Fixing vscnt typo in stitch.py Change-Id: I8a687b9df9173cef97078a23dabdc1f03a72445a * SWDEV-411283: Fix ROCTX for Buffer Tracing Change-Id: Ib3df535455281c6de81a5188deccd75b6e2eb9d3 * SWDEV-411283: Adding ROCTx Test Change-Id: Icf99ef584ff8ff38e16bc731951a1f47b7de90b0 * Fixing plugin tests from build directory Change-Id: I853e37d21d43cea4de4dcbb8c4feabd88ae81db5 Removed unnecessary check that was causing plugin tests to fail from build directory. Change-Id: I853e37d21d43cea4de4dcbb8c4feabd88ae81db5 * SWDEV-411518 Fixing runtime error for v2 Change-Id: Ic0996f5f00639cee3ef45da165ad45dbebe7efe2 * Add usage for all the options in rocprofv2 Change-Id: Ic95c83b6aa8cd90e0550be989cddb28edb1ee73c * Adding color codes for rocprofv2 options Change-Id: Ifff57f8ff6dfee00fb91e4147ad867762b956a6a * Adding kokkos kernel name trucate test Change-Id: I01af7dbb399cfe470e548a584faec890924d7039 * SWDEV-413890 and formatting changes Change-Id: Icea4ddf9dbdb6181bd8affdec9072738fcfa215e * SWDEV-415057: Fixing warning messages for masked simds Change-Id: I06eed3c986e5e7de68978ac995b36edb35183a8a * SWDEV-408509: Updated readme for MPI use Change-Id: I17f46c48600236c925f741ba14bca01b087a823d * Merge from Github Squashed commit of the following: commit 1d1e219f5b3fcb8b74424072489a8e10dc5ed19d Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Mon Jul 17 22:50:01 2023 -0500 Continuous integration with CTest and CDash (#11) * rename env.cmake and utils.cmake - prefix files with "rocprofiler_" - make functions/macros start with "rocprofiler_" * Add cmake_modules/rocprofiler_options.cmake - create options in lieu of env variables * update build.sh - use `cmake -B <build-directory> ...` instead of mkdir/pushd/popd * Update CMakeLists.txt - Build flags for CMAKE_BUILD_TYPE=Coverage - include(rocprofiler_*) - enable_testing() so ctest can be run from build folder - include(CTest) for CDash submission * set(CMAKE_BUILD_TYPE "Coverage") where appropriate - plugin/CMakeLists.txt - src/CMakeLists.txt - this ensures the exes/libs are compiled with flags required for code coverage generation * Update src/api/CMakeLists.txt - link to rocprofiler::build-flags INTERFACE target - provides compile defs, flags, etc. for target * add script/run-ci.py script - script for configure/build/testing/etc. and submission to CDash dashboard * Update src/tools/CMakeLists.txt - link to rocprofiler::build-flags INTERFACE target - provides compile defs, flags, etc. for target - add PUBLIC to target_link_libraries(...) * Update test/CMakeLists.txt - remove custom target "test" because it is a reserved target name when enabled_testing() has been called - created a "v1-tests" test * Update tests-v2/featuretests/profiler/CMakeLists.txt - use gtest_discover_tests - create duplicates of standard tests which use file-, att-, ctf-, and perfetto- plugins instead of default plugin * Update tests-v2/unittests/CMakeLists.txt - use gtest_discover_tests - create duplicates of standard tests which use file-, att-, ctf-, and perfetto- plugins instead of default plugin * Update tests-v2 - remove built-in filtering from tests-v2/featuretests/gtests_main.cpp - this filtering is applied directly to test either by DISABLED_* or calling GTEST_SKIP() - this makes sure that there is a record of the tests that are not actually run in CTest/CDash - Fix WhenTestingAgentInfoGetterSetters.TestRunsSuccessfully - using gtest macros to compare const char* (which is a pointer comparison, not a string comparison) - Fix HelloWorldTest.WhenRunningProfilerWithAppThenKernelNamessMatchWithGoldenOutput - compare all kernel name entries not just kernel name at index zero * Update CTF plugin to support relocation - support finding the CTF metadata stream relative to the location of the library instead of fixing it based on the install prefix * remove #ifdef AQLPROF_NEW_API - the API function protected by this guard were introduced in ROCm 2.0 * Update rocprofiler_options.cmake - enforce out-of-source builds - always locally export compile commands * Add continuous-integration workflow - initial implementation of CI workflow which submits to CDash * Remove stale BUILD_TYPE env variable for CI workflow * Job cancelling for cmake.yml workflow * CI workflow: add missing quote * CI workflow: fix build matrix include * CI workflow update - fix path to run-ci.py - fallback for --site if HOSTNAME not specified in env * Decrease config/build/test timeout * run-ci.py update submit URL * submit via http not https * Tweak env for ctf plugin tests * ctf plugin output file defaults to "trace-{PID} * Try to execute mi200 jobs in parallel * enable fail-fast and max-parallel * Update test/CMakeLists.txt - build mytest (HSACO generation) as part of the all target * Update samples/CMakeLists.txt - samples target built by default - all samples are executed as part of testing * Update tests-v2 - all exes created via hip_add_executable are added to testing - (temporarily) disabled tests for plugins * run cmake formatting (cmake-format) (#45) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Removed plugin gtests - these tests launch rocprofv2 and therefore are integration/system tests which are not appropriate for unit testing in gtest - tests for the plugins will be added at a later point and will have stricter validation requirements * Update {samples,test}/CMakeLists.txt - replace sh -xc "<command>" with cmake -E <command> equivalents - fix pc_sampling_code_printing test (requires argument * Update CI workflow - add mi100, navi32, and vega20 jobs - fix setting GPU target list * Update ATTCollection test - WhenRunningATTItCollectsTraceData reports agent names when fails * Update CI workflow - remove install step for vega-navi-mi100 * update tests-v2/run_tests.sh - script is missing `-e` flag for bash so it does not report test failures by exiting with a non-zero exit code * update pcie_bw_test.cpp - add extra print message to determine if bus error on navi32 happens at rsmi_dev_id_get or rsmi_dev_pci_bandwidth_get * Update ATTCollection.WhenRunningATTItCollectsTraceData test - workaround navi32 issue - skip test when "gfx1[0-1][0-9][0-9]" * Update pcie_bw_test - miscellaneous modernizations/linting fixes (e.g., c-array -> std::array) - added a signal handler for SIGBUS to emit a message for CTest to that it can skip the test on navi32 - navi32 produces SIGBUS when rsmi_dev_pci_bandwidth_get is called * Update rocprofiler_options.cmake - support ROCPROFILER_MEMCHECK option to enable sanitizers * Update src/{api,tools}/CMakeLists.txt - use rocprofiler::memcheck INTERFACE target instead of large if/else for if(ASAN) * Update ENVIRONMENT for all tests - Add ROCPROFILER_MEMCHECK_PRELOAD_ENV which specifies an LD_PRELOAD for when memcheck analysis is enabled * Update run-ci.py - support memcheck - support disabling submission to dashboard - support --quiet flag which suppresses printing Testing/Temporary/* logs * Update CI workflow - Add sanitizers jobs which run on mi100 - Three sanitizers: address, leak, and thread * run cmake formatting (cmake-format) (#47) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Update rocprofiler_options.cmake - link to sanitizer library + extra linker flags * Update src/tools/CMakeLists.txt - make rocprofiler::memcheck a private link library for rocprofiler_tool * run-ci.py update - do not use ctest_memcheck with ThreadSanitizer: causes deadlock when running tests * Update CI workflow - reorder sanitizer jobs * Suppression files for address, leak, and thread sanitizers - in script directory * Update run-ci.py - set suppression files - set TSAN_OPTIONS in run-ci.py * rocprofiler v1 library links to rocprofiler::memcheck * Disable using sigaltstack for address sanitizer * Update rocprofiler_set_memcheck_env - reduce the lib so version numbers searched * Update thread-sanitizer-suppr.txt - ignore unlock of an unlocked mutex (or by a wrong thread) in librocm_smi64.so * Update run-ci.py - TSAN_OPTIONS: second_deadlock_stack=1 * Add gtest_discover_tests_properties.cmake.in - this file is used to set properties on discovered tests which are not known at cmake time * Revert to using gtest_discover_tests - use gtest_discover_tests_properties.cmake.in to set test properties necessary for sanitizers * Remove duplicate concurrency field in cmake.yml * rename continuous-integration.yml - use underscore to be consistent * Remove redundant cmake.yml - superceded by continuous_integration.yml * Add navi21 to build matrix * Update run-ci.py - support --linter arg (ROCPROFILER_ENABLE_CLANG_TIDY) - default to -DROCPROFILER_BUILD_{CI,TESTS,SAMPLES}=ON * Update rocprofiler_options.cmake - Options: - ROCPROFILER_BUILD_TESTS - ROCPROFILER_BUILD_SAMPLES - ROCPROFILER_BUILD_PLUGIN_ATT - ROCPROFILER_BUILD_PLUGIN_CTF - ROCPROFILER_BUILD_PLUGIN_PERFETTO - ROCPROFILER_ENABLE_CLANG_TIDY - If ROCPROFILER_BUILD_CI remove -DNDEBUG (to enable asserts) - rocprofiler::memcheck includes -fno-omit-frame-pointer flag * Update rocprofiler_env.cmake - Add '-W -Wall -Wextra -Wno-unused-parameter' flags to rocprofiler::build-flags * add rocprofiler_formatting.cmake - creates "build" targets to format code * Add rocprofiler_linting.cmake and .clang-tidy - enables clang-tidy during compilation * Update (main) CMakeLists.txt - Fatal error if cmake version < 3.18.0 - include rocprofiler_formatting.cmake - include rocprofiler_linting.cmake - insert cmake_modules into front of CMAKE_MODULE_PATH - remove add_compile_options(-Wall) - handled by target-based compile options - protected samples add_subdir with if BUILD_SAMPLES - protect test and tests-v2 add_subdir with if BUILD_TESTS * Update test/CMakeLists.txt - bump minimum version to 3.18.0 + fatal error * Update plugin/CMakeLists.txt - protect add_subdir based on ROCPROFILER_BUILD_PLUGIN_{PERFETTO,CTF,ATT} * Update plugin/perfetto cmake - build perfetto SDK into PIC static library - disable clang-tidy when building SDK * Linting workflow - runs clang-tidy linter (more to come eventually) * Workflow update - use github.repository instead of github.repository_owner * Update rocprofiler_linting.cmake - add -header-filter=<source>/.* flag to clang-tidy * Update linting workflow - fix name of linting job * Update test discovery with sanitizers * Update linting workflow - use clang-tidy v11 instead of v15 * Enable GIT_DISCOVERY_ACROSS_FILESYSTEM - linting.yml - continuous_integration.yml * Update continuous_integration.yml - update docker registry pull * Support ASAN condition - ASAN is defined by internal Jenkins testing team * Update continuous_integration.yml - only define GIT_DISCOVERY_ACROSS_FILESYSTEM for container workflows * Update linting.yml - run on navi32 - update docker registry - run with -VV * Use containers in all workflows * Update continuous_integration.yml - update mix of native vs. docker * Fix setenv("LD_PRELOAD", ...) for sanitizers --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 6028be71a104df8a0a112b4b46e498c9685ce271 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 17 17:30:04 2023 -0500 Gerrit amd staging (#57) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * Merging From Github Squashed commit of the following: commit 7ab6644fd04db189801f6cee70a09bb621070b60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Sat Jul 15 00:47:30 2023 -0500 Gerrit amd staging (#49) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * run cmake formatting (cmake-format) (#50) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * run formatting (clang-format v11) (#51) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * Update CMakeLists.txt Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: Giovanni LB <gbaraldi@amd.com> Co-authored-by: Ranjith Ramakrishnan <Ranjith.Ramakrishnan@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> commit 3476ef7afe4e7af0a282b42da4b06ec8b0b9301a Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Fri Jul 14 19:11:41 2023 -0500 Workflow simplification and cancellation (#48) * Update formatting workflow - ignore changes to pull_*.yml workflows * Update pull_from_gerrit.yml workflow - allow manual trigger (workflow dispatch) - concurrent cancellation * Update pull_latest_dockers.yml workflow - simply workflow significantly by using matrix - allow manual trigger (workflow dispatch) - concurrent cancellation - run when pushed * Update CMake workflow - ignore changes to pull_*.yml workflows - concurrent cancellation commit f053319a4873b3d0d5d6a5074238c0371e0c9f60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 20:27:40 2023 -0500 Update and rename pull.yml to pull_from_gerrit.yml (#44) commit 90b423ebfaf35cc14d6c3b07c617e2346140853f Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:40:45 2023 -0500 Update pull_latest_dockers.yml commit 93acde8ed69766fb6d3482a1be8238f322b1db75 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:38:29 2023 -0500 Update pull_latest_dockers.yml commit 0092267a800ef1571bdb423272a8f2a2b8a641e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:29:47 2023 -0500 Gerrit amd staging (#9) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * run formatting (clang-format v11) (#10) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I994a9fa743d47de3640d2bf7ae9ea3e01ea44f6a * Fixing vscnt typo in stitch.py Change-Id: I8a687b9df9173cef97078a23dabdc1f03a72445a * SWDEV-411283: Fix ROCTX for Buffer Tracing Change-Id: Ib3df535455281c6de81a5188deccd75b6e2eb9d3 * run formatting (clang-format v11) (#58) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: Giovanni LB <gbaraldi@amd.com> Co-authored-by: Ranjith Ramakrishnan <Ranjith.Ramakrishnan@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit 5bb019eb281038374319aa27a8541114f93ade7b Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 17 17:28:54 2023 -0500 Optimizing Docker pull job (#54) Change-Id: Iec80a54f1715c125acd236d60cdd7074cb237dfa commit 7ab6644fd04db189801f6cee70a09bb621070b60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Sat Jul 15 00:47:30 2023 -0500 Gerrit amd staging (#49) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request… * Merge from Github to Gerrit Squashed commit of the following: commit 731e8c85aea6e9f905d447bc933aa52ff546a881 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Tue Jul 25 21:16:45 2023 -0500 Linting update + general workflow updates (#72) * Update linting workflow - use GCC 12 instead of GCC 11 (default) * Update workflows - fixed the name of misc workflows (consistency) - ignore changes to linting workflows - support workflow dispatch commit 94d0864927cca3b8391a0ba4a6a00abeeb394907 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Tue Jul 25 13:47:03 2023 -0500 Address sanitizer fixes (#61) * Fix address sanitizer issues - mostly buffer overflows and string <-> c-string issues - also cleanup so partial init - general modernization (i.e. NULL -> nullptr) * Update rocprofiler_options.cmake - fix link flags for sanitizer * Disable MTBinaryTest.DispatchCountTestPasses - this test is broken - does not fail under any conditions - does not actually execute the test that it thinks it is executing (relaunches gtest app, not rocprofv2) commit eacd082a3f21b594ddf12c323a070f48a618dff2 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 18:52:21 2023 -0500 Fix CMakeLists.txt and build.sh (#62) commit 9084f4bc4331086cd2b4d0aecf588a081d366151 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 10:18:50 2023 -0500 Fixing README.md (#65) * Fixing README.md Change-Id: I7a8ecb5533fe9baa362fcac145a042b66d1d3620 * Update markdown_lint.yml * Fixing Markdown Lint Action * Changing --- style to *** commit ecc464c6ad39ae86e3a53d48eb9d55554fd94e37 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Tue Jul 18 20:09:06 2023 +0530 Create markdown_lint.yml (#46) * Create markdown_lint.yml * Update .github/workflows/markdown_lint.yml Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> * Removing version from markdown yml * Update markdown_lint.yml Removed extra space * Testing on README.md change * Update markdown_lint.yml * Update markdown_lint.yml * Update markdown_lint.yml * Fixing Markdown Lint Change-Id: I22caf2cded26c87fcfef92cb41b7b9c3bd045fc8 * Update markdown_lint.yml * Multiple Fixes in the readme Change-Id: Ic7835000b595f5c1980317809c5ade3a297af6e7 --------- Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Co-authored-by: Ammar ELWazir <aelwazir@amd.com> Co-authored-by: Ammar ELWazir <Ammar.ELWazir@amd.com> commit e96004db41d557426a85e0efa10c6a1a86852b73 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 09:20:32 2023 -0500 Removing Pull jobs (#64) Change-Id: Ic1259ce41f574b3dd4f87ce6c1aae75a52b9ce1e commit 6f995b194cbf074ef096e6a41dea4358bb31cb72 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Tue Jul 18 17:55:55 2023 +0530 Adding existing test info from removed test README (#8) * Adding existing test info from removed test README * updating README for test related information * Siginificant improvemnts to README with markdown lint * Addrsessing review comments * Removing ctest reference for now * Addresses latest review comments --------- Co-authored-by: Ammar ELWazir <aelwazir@amd.com> commit 1d1e219f5b3fcb8b74424072489a8e10dc5ed19d Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Mon Jul 17 22:50:01 2023 -0500 Continuous integration with CTest and CDash (#11) * rename env.cmake and utils.cmake - prefix files with "rocprofiler_" - make functions/macros start with "rocprofiler_" * Add cmake_modules/rocprofiler_options.cmake - create options in lieu of env variables * update build.sh - use `cmake -B <build-directory> ...` instead of mkdir/pushd/popd * Update CMakeLists.txt - Build flags for CMAKE_BUILD_TYPE=Coverage - include(rocprofiler_*) - enable_testing() so ctest can be run from build folder - include(CTest) for CDash submission * set(CMAKE_BUILD_TYPE "Coverage") where appropriate - plugin/CMakeLists.txt - src/CMakeLists.txt - this ensures the exes/libs are compiled with flags required for code coverage generation * Update src/api/CMakeLists.txt - link to rocprofiler::build-flags INTERFACE target - provides compile defs, flags, etc. for target * add script/run-ci.py script - script for configure/build/testing/etc. and submission to CDash dashboard * Update src/tools/CMakeLists.txt - link to rocprofiler::build-flags INTERFACE target - provides compile defs, flags, etc. for target - add PUBLIC to target_link_libraries(...) * Update test/CMakeLists.txt - remove custom target "test" because it is a reserved target name when enabled_testing() has been called - created a "v1-tests" test * Update tests-v2/featuretests/profiler/CMakeLists.txt - use gtest_discover_tests - create duplicates of standard tests which use file-, att-, ctf-, and perfetto- plugins instead of default plugin * Update tests-v2/unittests/CMakeLists.txt - use gtest_discover_tests - create duplicates of standard tests which use file-, att-, ctf-, and perfetto- plugins instead of default plugin * Update tests-v2 - remove built-in filtering from tests-v2/featuretests/gtests_main.cpp - this filtering is applied directly to test either by DISABLED_* or calling GTEST_SKIP() - this makes sure that there is a record of the tests that are not actually run in CTest/CDash - Fix WhenTestingAgentInfoGetterSetters.TestRunsSuccessfully - using gtest macros to compare const char* (which is a pointer comparison, not a string comparison) - Fix HelloWorldTest.WhenRunningProfilerWithAppThenKernelNamessMatchWithGoldenOutput - compare all kernel name entries not just kernel name at index zero * Update CTF plugin to support relocation - support finding the CTF metadata stream relative to the location of the library instead of fixing it based on the install prefix * remove #ifdef AQLPROF_NEW_API - the API function protected by this guard were introduced in ROCm 2.0 * Update rocprofiler_options.cmake - enforce out-of-source builds - always locally export compile commands * Add continuous-integration workflow - initial implementation of CI workflow which submits to CDash * Remove stale BUILD_TYPE env variable for CI workflow * Job cancelling for cmake.yml workflow * CI workflow: add missing quote * CI workflow: fix build matrix include * CI workflow update - fix path to run-ci.py - fallback for --site if HOSTNAME not specified in env * Decrease config/build/test timeout * run-ci.py update submit URL * submit via http not https * Tweak env for ctf plugin tests * ctf plugin output file defaults to "trace-{PID} * Try to execute mi200 jobs in parallel * enable fail-fast and max-parallel * Update test/CMakeLists.txt - build mytest (HSACO generation) as part of the all target * Update samples/CMakeLists.txt - samples target built by default - all samples are executed as part of testing * Update tests-v2 - all exes created via hip_add_executable are added to testing - (temporarily) disabled tests for plugins * run cmake formatting (cmake-format) (#45) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Removed plugin gtests - these tests launch rocprofv2 and therefore are integration/system tests which are not appropriate for unit testing in gtest - tests for the plugins will be added at a later point and will have stricter validation requirements * Update {samples,test}/CMakeLists.txt - replace sh -xc "<command>" with cmake -E <command> equivalents - fix pc_sampling_code_printing test (requires argument * Update CI workflow - add mi100, navi32, and vega20 jobs - fix setting GPU target list * Update ATTCollection test - WhenRunningATTItCollectsTraceData reports agent names when fails * Update CI workflow - remove install step for vega-navi-mi100 * update tests-v2/run_tests.sh - script is missing `-e` flag for bash so it does not report test failures by exiting with a non-zero exit code * update pcie_bw_test.cpp - add extra print message to determine if bus error on navi32 happens at rsmi_dev_id_get or rsmi_dev_pci_bandwidth_get * Update ATTCollection.WhenRunningATTItCollectsTraceData test - workaround navi32 issue - skip test when "gfx1[0-1][0-9][0-9]" * Update pcie_bw_test - miscellaneous modernizations/linting fixes (e.g., c-array -> std::array) - added a signal handler for SIGBUS to emit a message for CTest to that it can skip the test on navi32 - navi32 produces SIGBUS when rsmi_dev_pci_bandwidth_get is called * Update rocprofiler_options.cmake - support ROCPROFILER_MEMCHECK option to enable sanitizers * Update src/{api,tools}/CMakeLists.txt - use rocprofiler::memcheck INTERFACE target instead of large if/else for if(ASAN) * Update ENVIRONMENT for all tests - Add ROCPROFILER_MEMCHECK_PRELOAD_ENV which specifies an LD_PRELOAD for when memcheck analysis is enabled * Update run-ci.py - support memcheck - support disabling submission to dashboard - support --quiet flag which suppresses printing Testing/Temporary/* logs * Update CI workflow - Add sanitizers jobs which run on mi100 - Three sanitizers: address, leak, and thread * run cmake formatting (cmake-format) (#47) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Update rocprofiler_options.cmake - link to sanitizer library + extra linker flags * Update src/tools/CMakeLists.txt - make rocprofiler::memcheck a private link library for rocprofiler_tool * run-ci.py update - do not use ctest_memcheck with ThreadSanitizer: causes deadlock when running tests * Update CI workflow - reorder sanitizer jobs * Suppression files for address, leak, and thread sanitizers - in script directory * Update run-ci.py - set suppression files - set TSAN_OPTIONS in run-ci.py * rocprofiler v1 library links to rocprofiler::memcheck * Disable using sigaltstack for address sanitizer * Update rocprofiler_set_memcheck_env - reduce the lib so version numbers searched * Update thread-sanitizer-suppr.txt - ignore unlock of an unlocked mutex (or by a wrong thread) in librocm_smi64.so * Update run-ci.py - TSAN_OPTIONS: second_deadlock_stack=1 * Add gtest_discover_tests_properties.cmake.in - this file is used to set properties on discovered tests which are not known at cmake time * Revert to using gtest_discover_tests - use gtest_discover_tests_properties.cmake.in to set test properties necessary for sanitizers * Remove duplicate concurrency field in cmake.yml * rename continuous-integration.yml - use underscore to be consistent * Remove redundant cmake.yml - superceded by continuous_integration.yml * Add navi21 to build matrix * Update run-ci.py - support --linter arg (ROCPROFILER_ENABLE_CLANG_TIDY) - default to -DROCPROFILER_BUILD_{CI,TESTS,SAMPLES}=ON * Update rocprofiler_options.cmake - Options: - ROCPROFILER_BUILD_TESTS - ROCPROFILER_BUILD_SAMPLES - ROCPROFILER_BUILD_PLUGIN_ATT - ROCPROFILER_BUILD_PLUGIN_CTF - ROCPROFILER_BUILD_PLUGIN_PERFETTO - ROCPROFILER_ENABLE_CLANG_TIDY - If ROCPROFILER_BUILD_CI remove -DNDEBUG (to enable asserts) - rocprofiler::memcheck includes -fno-omit-frame-pointer flag * Update rocprofiler_env.cmake - Add '-W -Wall -Wextra -Wno-unused-parameter' flags to rocprofiler::build-flags * add rocprofiler_formatting.cmake - creates "build" targets to format code * Add rocprofiler_linting.cmake and .clang-tidy - enables clang-tidy during compilation * Update (main) CMakeLists.txt - Fatal error if cmake version < 3.18.0 - include rocprofiler_formatting.cmake - include rocprofiler_linting.cmake - insert cmake_modules into front of CMAKE_MODULE_PATH - remove add_compile_options(-Wall) - handled by target-based compile options - protected samples add_subdir with if BUILD_SAMPLES - protect test and tests-v2 add_subdir with if BUILD_TESTS * Update test/CMakeLists.txt - bump minimum version to 3.18.0 + fatal error * Update plugin/CMakeLists.txt - protect add_subdir based on ROCPROFILER_BUILD_PLUGIN_{PERFETTO,CTF,ATT} * Update plugin/perfetto cmake - build perfetto SDK into PIC static library - disable clang-tidy when building SDK * Linting workflow - runs clang-tidy linter (more to come eventually) * Workflow update - use github.repository instead of github.repository_owner * Update rocprofiler_linting.cmake - add -header-filter=<source>/.* flag to clang-tidy * Update linting workflow - fix name of linting job * Update test discovery with sanitizers * Update linting workflow - use clang-tidy v11 instead of v15 * Enable GIT_DISCOVERY_ACROSS_FILESYSTEM - linting.yml - continuous_integration.yml * Update continuous_integration.yml - update docker registry pull * Support ASAN condition - ASAN is defined by internal Jenkins testing team * Update continuous_integration.yml - only define GIT_DISCOVERY_ACROSS_FILESYSTEM for container workflows * Update linting.yml - run on navi32 - update docker registry - run with -VV * Use containers in all workflows * Update continuous_integration.yml - update mix of native vs. docker * Fix setenv("LD_PRELOAD", ...) for sanitizers --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 6028be71a104df8a0a112b4b46e498c9685ce271 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 17 17:30:04 2023 -0500 Gerrit amd staging (#57) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * Merging From Github Squashed commit of the following: commit 7ab6644fd04db189801f6cee70a09bb621070b60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Sat Jul 15 00:47:30 2023 -0500 Gerrit amd staging (#49) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * run cmake formatting (cmake-format) (#50) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * run formatting (clang-format v11) (#51) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * Update CMakeLists.txt Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: Giovanni LB <gbaraldi@amd.com> Co-authored-by: Ranjith Ramakrishnan <Ranjith.Ramakrishnan@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> commit 3476ef7afe4e7af0a282b42da4b06ec8b0b9301a Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Fri Jul 14 19:11:41 2023 -0500 Workflow simplification and cancellation (#48) * Update formatting workflow - ignore changes to pull_*.yml workflows * Update pull_from_gerrit.yml workflow - allow manual trigger (workflow dispatch) - concurrent cancellation * Update pull_latest_dockers.yml workflow - simply workflow significantly by using matrix - allow manual trigger (workflow dispatch) - concurrent cancellation - run when pushed * Update CMake workflow - ignore changes to pull_*.yml workflows - concurrent cancellation commit f053319a4873b3d0d5d6a5074238c0371e0c9f60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 20:27:40 2023 -0500 Update and rename pull.yml to pull_from_gerrit.yml (#44) commit 90b423ebfaf35cc14d6c3b07c617e2346140853f Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:40:45 2023 -0500 Update pull_latest_dockers.yml commit 93acde8ed69766fb6d3482a1be8238f322b1db75 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:38:29 2023 -0500 Update pull_latest_dockers.yml commit 0092267a800ef1571bdb423272a8f2a2b8a641e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:29:47 2023 -0500 Gerrit amd staging (#9) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * run formatting (clang-format v11) (#10) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWa… * Temporary workaround for CI testing Change-Id: I234445d7572d37841ce814fa17b863c91043f242 * Merge From Github to Gerrit Squashed commit of the following: commit d5632d94fdcc72b0a70cfc7351ff8cba47c1038d Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Thu Jul 27 04:24:46 2023 +0000 Fixing multiple issues: 1- Disabling unused PCIE BW test 2- Using string_view::compare instead of strcmp to eliminate issues with length 3- virtual functions override were missing override Change-Id: I65a8699b1d1ddd3e6690838cd73f5a6ef02d63f3 commit 03c884dc753f447e4cfa6333c0ed40be49fa0514 Author: gobhardw <gopesh.bhardwaj@amd.com> Date: Wed Jul 19 11:09:06 2023 +0000 SWDEV-411518 Fixing runtime error for v2 Change-Id: Ic0996f5f00639cee3ef45da165ad45dbebe7efe2 commit acc3204c39f28b6a20880fa6a77b650c7433cec9 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Thu Jul 27 03:39:34 2023 +0000 Mi200 Continous Integration Change-Id: I7bb75a7de6380168aedb931230526d95e141dc2a commit 2b766be3552ddc993bc5072a353ef86d88727a1e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Thu Jul 27 03:15:36 2023 +0000 Fixing hsa_init() in gtest main function Change-Id: I57ec04c0b0e0dc12b78cec38c6db8de53864b17e commit d6d441cf2c6264cced56a6d560cac50c2ae2e032 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 26 19:21:03 2023 +0000 Using mi200 one GPU at a time Change-Id: I1f3d8ab76e994497a7ae5abfb8cc57f2703aedbb commit a49605edaf891225619635bf1dcb7a864b6edcc6 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 26 17:50:28 2023 +0000 Fixing Latest build number env Change-Id: If7a20b04160e019387ecacb11664062cd14d1ffd commit 7314135a4be5f262def8e7cb104e43fc1f50029a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 26 17:45:51 2023 +0000 Fixing Latest build number env Change-Id: I1583654385bbf112e63a3465cb08cdfeaa773534 commit 51353c50695c04717506e4aff22ce796274da821 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 26 17:44:52 2023 +0000 Fixing Latest build number env Change-Id: Ica53a3dd507ced3d5221cbc695f0dfff0123ad5c commit b369386d06e0fd37696187d74874b64b3db1d355 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 26 17:36:32 2023 +0000 Moving Sanitizers to mi200 Change-Id: I773097402ef277aa2d88ac6fc8bf0c5f921efeae commit a5f5ba1ef412031ff8c780eca8f75f1f87fec0c0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 26 17:29:46 2023 +0000 Fixing Latest build number env Change-Id: I935713d35ae16b965de50aea48b2ec37efbf39c2 commit 01c827001faf9d5002fd34781983fb87d0fba99b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 26 17:19:05 2023 +0000 Fixing Latest build number env Change-Id: Ib6e606282e3073a3325332a15ae6624b02301702 commit ecf36176074a4ca0ecf721285c31b1b7ebdb8b63 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 26 17:11:03 2023 +0000 Fixing Latest build number env Change-Id: Ifaab1785230dbb50bca834c90c2978a99e3af466 commit 7616b5f853d8acfe290b8997e0b052b05f3ef86d Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 26 17:09:11 2023 +0000 Fixing Latest build number env Change-Id: I212ac8baab32b149039c5faada47e8724e170d84 commit 7add9e12275b203b2b1b429e614cbd62f920d533 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 26 16:29:50 2023 +0000 Optimizing builds,tests,packaging, removing v1 from navi32 runs Change-Id: Ieacc712323a8fa27e573ae6879bd6c6d05472ac5 commit 731e8c85aea6e9f905d447bc933aa52ff546a881 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Tue Jul 25 21:16:45 2023 -0500 Linting update + general workflow updates (#72) * Update linting workflow - use GCC 12 instead of GCC 11 (default) * Update workflows - fixed the name of misc workflows (consistency) - ignore changes to linting workflows - support workflow dispatch commit 94d0864927cca3b8391a0ba4a6a00abeeb394907 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Tue Jul 25 13:47:03 2023 -0500 Address sanitizer fixes (#61) * Fix address sanitizer issues - mostly buffer overflows and string <-> c-string issues - also cleanup so partial init - general modernization (i.e. NULL -> nullptr) * Update rocprofiler_options.cmake - fix link flags for sanitizer * Disable MTBinaryTest.DispatchCountTestPasses - this test is broken - does not fail under any conditions - does not actually execute the test that it thinks it is executing (relaunches gtest app, not rocprofv2) commit eacd082a3f21b594ddf12c323a070f48a618dff2 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 18:52:21 2023 -0500 Fix CMakeLists.txt and build.sh (#62) commit 9084f4bc4331086cd2b4d0aecf588a081d366151 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 10:18:50 2023 -0500 Fixing README.md (#65) * Fixing README.md Change-Id: I7a8ecb5533fe9baa362fcac145a042b66d1d3620 * Update markdown_lint.yml * Fixing Markdown Lint Action * Changing --- style to *** commit ecc464c6ad39ae86e3a53d48eb9d55554fd94e37 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Tue Jul 18 20:09:06 2023 +0530 Create markdown_lint.yml (#46) * Create markdown_lint.yml * Update .github/workflows/markdown_lint.yml Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> * Removing version from markdown yml * Update markdown_lint.yml Removed extra space * Testing on README.md change * Update markdown_lint.yml * Update markdown_lint.yml * Update markdown_lint.yml * Fixing Markdown Lint Change-Id: I22caf2cded26c87fcfef92cb41b7b9c3bd045fc8 * Update markdown_lint.yml * Multiple Fixes in the readme Change-Id: Ic7835000b595f5c1980317809c5ade3a297af6e7 --------- Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Co-authored-by: Ammar ELWazir <aelwazir@amd.com> Co-authored-by: Ammar ELWazir <Ammar.ELWazir@amd.com> commit e96004db41d557426a85e0efa10c6a1a86852b73 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 09:20:32 2023 -0500 Removing Pull jobs (#64) Change-Id: Ic1259ce41f574b3dd4f87ce6c1aae75a52b9ce1e commit 6f995b194cbf074ef096e6a41dea4358bb31cb72 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Tue Jul 18 17:55:55 2023 +0530 Adding existing test info from removed test README (#8) * Adding existing test info from removed test README * updating README for test related information * Siginificant improvemnts to README with markdown lint * Addrsessing review comments * Removing ctest reference for now * Addresses latest review comments --------- Co-authored-by: Ammar ELWazir <aelwazir@amd.com> commit 1d1e219f5b3fcb8b74424072489a8e10dc5ed19d Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Mon Jul 17 22:50:01 2023 -0500 Continuous integration with CTest and CDash (#11) * rename env.cmake and utils.cmake - prefix files with "rocprofiler_" - make functions/macros start with "rocprofiler_" * Add cmake_modules/rocprofiler_options.cmake - create options in lieu of env variables * update build.sh - use `cmake -B <build-directory> ...` instead of mkdir/pushd/popd * Update CMakeLists.txt - Build flags for CMAKE_BUILD_TYPE=Coverage - include(rocprofiler_*) - enable_testing() so ctest can be run from build folder - include(CTest) for CDash submission * set(CMAKE_BUILD_TYPE "Coverage") where appropriate - plugin/CMakeLists.txt - src/CMakeLists.txt - this ensures the exes/libs are compiled with flags required for code coverage generation * Update src/api/CMakeLists.txt - link to rocprofiler::build-flags INTERFACE target - provides compile defs, flags, etc. for target * add script/run-ci.py script - script for configure/build/testing/etc. and submission to CDash dashboard * Update src/tools/CMakeLists.txt - link to rocprofiler::build-flags INTERFACE target - provides compile defs, flags, etc. for target - add PUBLIC to target_link_libraries(...) * Update test/CMakeLists.txt - remove custom target "test" because it is a reserved target name when enabled_testing() has been called - created a "v1-tests" test * Update tests-v2/featuretests/profiler/CMakeLists.txt - use gtest_discover_tests - create duplicates of standard tests which use file-, att-, ctf-, and perfetto- plugins instead of default plugin * Update tests-v2/unittests/CMakeLists.txt - use gtest_discover_tests - create duplicates of standard tests which use file-, att-, ctf-, and perfetto- plugins instead of default plugin * Update tests-v2 - remove built-in filtering from tests-v2/featuretests/gtests_main.cpp - this filtering is applied directly to test either by DISABLED_* or calling GTEST_SKIP() - this makes sure that there is a record of the tests that are not actually run in CTest/CDash - Fix WhenTestingAgentInfoGetterSetters.TestRunsSuccessfully - using gtest macros to compare const char* (which is a pointer comparison, not a string comparison) - Fix HelloWorldTest.WhenRunningProfilerWithAppThenKernelNamessMatchWithGoldenOutput - compare all kernel name entries not just kernel name at index zero * Update CTF plugin to support relocation - support finding the CTF metadata stream relative to the location of the library instead of fixing it based on the install prefix * remove #ifdef AQLPROF_NEW_API - the API function protected by this guard were introduced in ROCm 2.0 * Update rocprofiler_options.cmake - enforce out-of-source builds - always locally export compile commands * Add continuous-integration workflow - initial implementation of CI workflow which submits to CDash * Remove stale BUILD_TYPE env variable for CI workflow * Job cancelling for cmake.yml workflow * CI workflow: add missing quote * CI workflow: fix build matrix include * CI workflow update - fix path to run-ci.py - fallback for --site if HOSTNAME not specified in env * Decrease config/build/test timeout * run-ci.py update submit URL * submit via http not https * Tweak env for ctf plugin tests * ctf plugin output file defaults to "trace-{PID} * Try to execute mi200 jobs in parallel * enable fail-fast and max-parallel * Update test/CMakeLists.txt - build mytest (HSACO generation) as part of the all target * Update samples/CMakeLists.txt - samples target built by default - all samples are executed as part of testing * Update tests-v2 - all exes created via hip_add_executable are added to testing - (temporarily) disabled tests for plugins * run cmake formatting (cmake-format) (#45) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Removed plugin gtests - these tests launch rocprofv2 and therefore are integration/system tests which are not appropriate for unit testing in gtest - tests for the plugins will be added at a later point and will have stricter validation requirements * Update {samples,test}/CMakeLists.txt - replace sh -xc "<command>" with cmake -E <command> equivalents - fix pc_sampling_code_printing test (requires argument * Update CI workflow - add mi100, navi32, and vega20 jobs - fix setting GPU target list * Update ATTCollection test - WhenRunningATTItCollectsTraceData reports agent names when fails * Update CI workflow - remove install step for vega-navi-mi100 * update tests-v2/run_tests.sh - script is missing `-e` flag for bash so it does not report test failures by exiting with a non-zero exit code * update pcie_bw_test.cpp - add extra print message to determine if bus error on navi32 happens at rsmi_dev_id_get or rsmi_dev_pci_bandwidth_get * Update ATTCollection.WhenRunningATTItCollectsTraceData test - workaround navi32 issue - skip test when "gfx1[0-1][0-9][0-9]" * Update pcie_bw_test - miscellaneous modernizations/linting fixes (e.g., c-array -> std::array) - added a signal handler for SIGBUS to emit a message for CTest to that it can skip the test on navi32 - navi32 produces SIGBUS when rsmi_dev_pci_bandwidth_get is called * Update rocprofiler_options.cmake - support ROCPROFILER_MEMCHECK option to enable sanitizers * Update src/{api,tools}/CMakeLists.txt - use rocprofiler::memcheck INTERFACE target instead of large if/else for if(ASAN) * Update ENVIRONMENT for all tests - Add ROCPROFILER_MEMCHECK_PRELOAD_ENV which specifies an LD_PRELOAD for when memcheck analysis is enabled * Update run-ci.py - support memcheck - support disabling submission to dashboard - support --quiet flag which suppresses printing Testing/Temporary/* logs * Update CI workflow - Add sanitizers jobs which run on mi100 - Three sanitizers: address, leak, and thread * run cmake formatting (cmake-format) (#47) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Update rocprofiler_options.cmake - link to sanitizer library + extra linker flags * Update src/tools/CMakeLists.txt - make rocprofiler::memcheck a private link library for rocprofiler_tool * run-ci.py update - do not use ctest_memcheck with ThreadSanitizer: causes deadlock when running tests * Update CI workflow - reorder sanitizer jobs * Suppression files for address, leak, and thread sanitizers - in script directory * Update run-ci.py - set suppression files - set TSAN_OPTIONS in run-ci.py * rocprofiler v1 library links to rocprofiler::memcheck * Disable using sigaltstack for address sanitizer * Update rocprofiler_set_memcheck_env - reduce the lib so version numbers searched * Update thread-sanitizer-suppr.txt - ignore unlock of an unlocked mutex (or by a wrong thread) in librocm_smi64.so * Update run-ci.py - TSAN_OPTIONS: second_deadlock_stack=1 * Add gtest_discover_tests_properties.cmake.in - this file is used to set properties on discovered tests which are not known at cmake time * Revert to using gtest_discover_tests - use gtest_discover_tests_properties.cmake.in to set test properties necessary for sanitizers * Remove duplicate concurrency field in cmake.yml * rename continuous-integration.yml - use underscore to be consistent * Remove redundant cmake.yml - superceded by continuous_integration.yml * Add navi21 to build matrix * Update run-ci.py - support --linter arg (ROCPROFILER_ENABLE_CLANG_TIDY) - default to -DROCPROFILER_BUILD_{CI,TESTS,SAMPLES}=ON * Update rocprofiler_options.cmake - Options: - ROCPROFILER_BUILD_TESTS - ROCPROFILER_BUILD_SAMPLES - ROCPROFILER_BUILD_PLUGIN_ATT - ROCPROFILER_BUILD_PLUGIN_CTF - ROCPROFILER_BUILD_PLUGIN_PERFETTO - ROCPROFILER_ENABLE_CLANG_TIDY - If ROCPROFILER_BUILD_CI remove -DNDEBUG (to enable asserts) - rocprofiler::memcheck includes -fno-omit-frame-pointer flag * Update rocprofiler_env.cmake - Add '-W -Wall -Wextra -Wno-unused-parameter' flags to rocprofiler::build-flags * add rocprofiler_formatting.cmake - creates "build" targets to format code * Add rocprofiler_linting.cmake and .clang-tidy - enables clang-tidy during compilation * Update (main) CMakeLists.txt - Fatal error if cmake version < 3.18.0 - include rocprofiler_formatting.cmake - include rocprofiler_linting.cmake - insert cmake_modules into front of CMAKE_MODULE_PATH - remove add_compile_options(-Wall) - handled by target-based compile options - protected samples add_subdir with if BUILD_SAMPLES - protect test and tests-v2 add_subdir with if BUILD_TESTS * Update test/CMakeLists.txt - bump minimum version to 3.18.0 + fatal error * Update plugin/CMakeLists.txt - protect add_subdir based on ROCPROFILER_BUILD_PLUGIN_{PERFETTO,CTF,ATT} * Update plugin/perfetto cmake - build perfetto SDK into PIC static library - disable clang-tidy when building SDK * Linting workflow - runs clang-tidy linter (more to come eventually) * Workflow update - use github.repository instead of github.repository_owner * Update rocprofiler_linting.cmake - add -header-filter=<source>/.* flag to clang-tidy * Update linting workflow - fix name of linting job * Update test discovery with sanitizers * Update linting workflow - use clang-tidy v11 instead of v15 * Enable GIT_DISCOVERY_ACROSS_FILESYSTEM - linting.yml - continuous_integration.yml * Update continuous_integration.yml - update docker registry pull * Support ASAN condition - ASAN is defined by internal Jenkins testing team * Update continuous_integration.yml - only define GIT_DISCOVERY_ACROSS_FILESYSTEM for container workflows * Update linting.yml - run on navi32 - update docker registry - run with -VV * Use containers in all workflows * Update continuous_integration.yml - update mix of native vs. docker * Fix setenv("LD_PRELOAD", ...) for sanitizers --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 6028be71a104df8a0a112b4b46e498c9685ce271 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 17 17:30:04 2023 -0500 Gerrit amd staging (#57) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * Merging From Github Squashed commit of the following: commit 7ab6644fd04db189801f6cee70a09bb621070b60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Sat Jul 15 00:47:30 2023 -0500 Gerrit amd staging (#49) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * run cmake formatting (cmake-format) (#50) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * run formatting (clang-format v11) (#51) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * Update CMakeLists.txt Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: Giovanni LB <gbaraldi@amd.com> Co-authored-by: Ranjith Ramakrishnan <Ranjith.Ramakrishnan@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> commit 3476ef7afe4e7af0a282b42da4b06ec8b0b9301a Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Fri Jul 14 19:11:41 2023 -0500 Workflow simplification and cancellation (#48) * Update formatting workflow - ignore changes to pull_*.yml workflows * Update pull_from_gerrit.yml workflow - allow manual trigger (workflow dispatch) - concurrent cancellation * Update pull_latest_dockers.yml workflow - simply workflow significantly by using matrix - allow manual trigger (workflow dispatch) - concurrent cancellation - run when pushed * Update CMake workflow - ignore changes to pull_*.yml workflows - concurrent cancellation commit f053319a4873b3d0d5d6a5074238c0371e0c9f60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 20:27:40 2023 -0500 Update and rename pull.yml to pull_from_gerrit.yml (#44) commit 90b423ebfaf35cc14d6c3b07c617e2346140853f Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:40:45 2023 -0500 Update pull_latest_dockers.yml commit 93acde8ed69766fb6d3482a1be8238f322b1db75 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:38:29 2023 -0500 Update pull_latest_dockers.yml commit 0092267a800ef1571bdb423272a8f2a2b8a641e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:29:47 2023 -0500 Gerrit amd staging (#9) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * run formatting (clang-format v11) (#10) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job… * Fixing CI Issues Change-Id: Idd9773a61e3920535d43c81183e8e61285fc9cbe * Squashed commit of the following: commit c6d762727288fcc5ce1420cf5a32e474c247e404 Author: Ammar ELWazir <aelwazir@amd.com> Date: Fri Aug 4 22:59:41 2023 -0500 Optimizing builds,tests,packaging, removing v1 from navi32 runs (#74) commit 1798f071f9250bcce675021b85bf1d47fbf2cef0 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Fri Aug 4 19:14:03 2023 +0530 Adding popen alternative tests (#69) * Adding popen alternative tests * run cmake formatting (cmake-format) * single cmake for each test * Adding pandas dependency * Update continuous_integration.yml and linting.yml - list files (to help with git update issue) - install python requirements - update list files step (print path to python, python3, cmake, ctest, git) - specify Python3_EXECUTABLE * Update run-ci.py - print CTestCustom.cmake and dashboard.cmake in non-quiet mode * Update rocprofv2 script - add '-e' flag to shebang - support specifying ROCP_PRELOAD to propagate LD_PRELOAD value to script * Update run-ci.py - disable CTEST_GIT_INIT_SUBMODULES - set CTEST_GIT_COMMAND instead of CTEST_UPDATE_COMMAND * Update {counter,hiptrace}_validation_tests.cmake - Set ROCP_PRELOAD env to support sanitizers - Add labels to tests * Update csv_parser.h - include <cstdint> for int aliases * Update rocprofiler_options.cmake - ROCPROFILER_MEMCHECK_PRELOAD_ENV includes ROCP_PRELOAD * Update run-ci.py - capture cmake error for ctest_update * Update {counter,hiptrace}_validation_tests.cmake - Use ROCPROFILER_MEMCHECK_PRELOAD_ENV which includes ROCP_PRELOAD env variable * Update requirements.txt - use >= for package versions instead of == - this is too restrictive - downgrade matplotlib requirement to >= 3.3 instead of ==3.7.1 - PyPi for python 3.6 does not have matplotlib installs for versions >= 3.4 * updating requirements.txt for opensuse * updating requirements for wsclient * websocket installation opensuse --------- Co-authored-by: bgopesh <bgopesh@users.noreply.github.com> Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com> commit 731e8c85aea6e9f905d447bc933aa52ff546a881 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Tue Jul 25 21:16:45 2023 -0500 Linting update + general workflow updates (#72) * Update linting workflow - use GCC 12 instead of GCC 11 (default) * Update workflows - fixed the name of misc workflows (consistency) - ignore changes to linting workflows - support workflow dispatch commit 94d0864927cca3b8391a0ba4a6a00abeeb394907 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Tue Jul 25 13:47:03 2023 -0500 Address sanitizer fixes (#61) * Fix address sanitizer issues - mostly buffer overflows and string <-> c-string issues - also cleanup so partial init - general modernization (i.e. NULL -> nullptr) * Update rocprofiler_options.cmake - fix link flags for sanitizer * Disable MTBinaryTest.DispatchCountTestPasses - this test is broken - does not fail under any conditions - does not actually execute the test that it thinks it is executing (relaunches gtest app, not rocprofv2) commit eacd082a3f21b594ddf12c323a070f48a618dff2 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 18:52:21 2023 -0500 Fix CMakeLists.txt and build.sh (#62) commit 9084f4bc4331086cd2b4d0aecf588a081d366151 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 10:18:50 2023 -0500 Fixing README.md (#65) * Fixing README.md Change-Id: I7a8ecb5533fe9baa362fcac145a042b66d1d3620 * Update markdown_lint.yml * Fixing Markdown Lint Action * Changing --- style to *** commit ecc464c6ad39ae86e3a53d48eb9d55554fd94e37 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Tue Jul 18 20:09:06 2023 +0530 Create markdown_lint.yml (#46) * Create markdown_lint.yml * Update .github/workflows/markdown_lint.yml Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> * Removing version from markdown yml * Update markdown_lint.yml Removed extra space * Testing on README.md change * Update markdown_lint.yml * Update markdown_lint.yml * Update markdown_lint.yml * Fixing Markdown Lint Change-Id: I22caf2cded26c87fcfef92cb41b7b9c3bd045fc8 * Update markdown_lint.yml * Multiple Fixes in the readme Change-Id: Ic7835000b595f5c1980317809c5ade3a297af6e7 --------- Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Co-authored-by: Ammar ELWazir <aelwazir@amd.com> Co-authored-by: Ammar ELWazir <Ammar.ELWazir@amd.com> commit e96004db41d557426a85e0efa10c6a1a86852b73 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 09:20:32 2023 -0500 Removing Pull jobs (#64) Change-Id: Ic1259ce41f574b3dd4f87ce6c1aae75a52b9ce1e commit 6f995b194cbf074ef096e6a41dea4358bb31cb72 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Tue Jul 18 17:55:55 2023 +0530 Adding existing test info from removed test README (#8) * Adding existing test info from removed test README * updating README for test related information * Siginificant improvemnts to README with markdown lint * Addrsessing review comments * Removing ctest reference for now * Addresses latest review comments --------- Co-authored-by: Ammar ELWazir <aelwazir@amd.com> commit 1d1e219f5b3fcb8b74424072489a8e10dc5ed19d Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Mon Jul 17 22:50:01 2023 -0500 Continuous integration with CTest and CDash (#11) * rename env.cmake and utils.cmake - prefix files with "rocprofiler_" - make functions/macros start with "rocprofiler_" * Add cmake_modules/rocprofiler_options.cmake - create options in lieu of env variables * update build.sh - use `cmake -B <build-directory> ...` instead of mkdir/pushd/popd * Update CMakeLists.txt - Build flags for CMAKE_BUILD_TYPE=Coverage - include(rocprofiler_*) - enable_testing() so ctest can be run from build folder - include(CTest) for CDash submission * set(CMAKE_BUILD_TYPE "Coverage") where appropriate - plugin/CMakeLists.txt - src/CMakeLists.txt - this ensures the exes/libs are compiled with flags required for code coverage generation * Update src/api/CMakeLists.txt - link to rocprofiler::build-flags INTERFACE target - provides compile defs, flags, etc. for target * add script/run-ci.py script - script for configure/build/testing/etc. and submission to CDash dashboard * Update src/tools/CMakeLists.txt - link to rocprofiler::build-flags INTERFACE target - provides compile defs, flags, etc. for target - add PUBLIC to target_link_libraries(...) * Update test/CMakeLists.txt - remove custom target "test" because it is a reserved target name when enabled_testing() has been called - created a "v1-tests" test * Update tests-v2/featuretests/profiler/CMakeLists.txt - use gtest_discover_tests - create duplicates of standard tests which use file-, att-, ctf-, and perfetto- plugins instead of default plugin * Update tests-v2/unittests/CMakeLists.txt - use gtest_discover_tests - create duplicates of standard tests which use file-, att-, ctf-, and perfetto- plugins instead of default plugin * Update tests-v2 - remove built-in filtering from tests-v2/featuretests/gtests_main.cpp - this filtering is applied directly to test either by DISABLED_* or calling GTEST_SKIP() - this makes sure that there is a record of the tests that are not actually run in CTest/CDash - Fix WhenTestingAgentInfoGetterSetters.TestRunsSuccessfully - using gtest macros to compare const char* (which is a pointer comparison, not a string comparison) - Fix HelloWorldTest.WhenRunningProfilerWithAppThenKernelNamessMatchWithGoldenOutput - compare all kernel name entries not just kernel name at index zero * Update CTF plugin to support relocation - support finding the CTF metadata stream relative to the location of the library instead of fixing it based on the install prefix * remove #ifdef AQLPROF_NEW_API - the API function protected by this guard were introduced in ROCm 2.0 * Update rocprofiler_options.cmake - enforce out-of-source builds - always locally export compile commands * Add continuous-integration workflow - initial implementation of CI workflow which submits to CDash * Remove stale BUILD_TYPE env variable for CI workflow * Job cancelling for cmake.yml workflow * CI workflow: add missing quote * CI workflow: fix build matrix include * CI workflow update - fix path to run-ci.py - fallback for --site if HOSTNAME not specified in env * Decrease config/build/test timeout * run-ci.py update submit URL * submit via http not https * Tweak env for ctf plugin tests * ctf plugin output file defaults to "trace-{PID} * Try to execute mi200 jobs in parallel * enable fail-fast and max-parallel * Update test/CMakeLists.txt - build mytest (HSACO generation) as part of the all target * Update samples/CMakeLists.txt - samples target built by default - all samples are executed as part of testing * Update tests-v2 - all exes created via hip_add_executable are added to testing - (temporarily) disabled tests for plugins * run cmake formatting (cmake-format) (#45) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Removed plugin gtests - these tests launch rocprofv2 and therefore are integration/system tests which are not appropriate for unit testing in gtest - tests for the plugins will be added at a later point and will have stricter validation requirements * Update {samples,test}/CMakeLists.txt - replace sh -xc "<command>" with cmake -E <command> equivalents - fix pc_sampling_code_printing test (requires argument * Update CI workflow - add mi100, navi32, and vega20 jobs - fix setting GPU target list * Update ATTCollection test - WhenRunningATTItCollectsTraceData reports agent names when fails * Update CI workflow - remove install step for vega-navi-mi100 * update tests-v2/run_tests.sh - script is missing `-e` flag for bash so it does not report test failures by exiting with a non-zero exit code * update pcie_bw_test.cpp - add extra print message to determine if bus error on navi32 happens at rsmi_dev_id_get or rsmi_dev_pci_bandwidth_get * Update ATTCollection.WhenRunningATTItCollectsTraceData test - workaround navi32 issue - skip test when "gfx1[0-1][0-9][0-9]" * Update pcie_bw_test - miscellaneous modernizations/linting fixes (e.g., c-array -> std::array) - added a signal handler for SIGBUS to emit a message for CTest to that it can skip the test on navi32 - navi32 produces SIGBUS when rsmi_dev_pci_bandwidth_get is called * Update rocprofiler_options.cmake - support ROCPROFILER_MEMCHECK option to enable sanitizers * Update src/{api,tools}/CMakeLists.txt - use rocprofiler::memcheck INTERFACE target instead of large if/else for if(ASAN) * Update ENVIRONMENT for all tests - Add ROCPROFILER_MEMCHECK_PRELOAD_ENV which specifies an LD_PRELOAD for when memcheck analysis is enabled * Update run-ci.py - support memcheck - support disabling submission to dashboard - support --quiet flag which suppresses printing Testing/Temporary/* logs * Update CI workflow - Add sanitizers jobs which run on mi100 - Three sanitizers: address, leak, and thread * run cmake formatting (cmake-format) (#47) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Update rocprofiler_options.cmake - link to sanitizer library + extra linker flags * Update src/tools/CMakeLists.txt - make rocprofiler::memcheck a private link library for rocprofiler_tool * run-ci.py update - do not use ctest_memcheck with ThreadSanitizer: causes deadlock when running tests * Update CI workflow - reorder sanitizer jobs * Suppression files for address, leak, and thread sanitizers - in script directory * Update run-ci.py - set suppression files - set TSAN_OPTIONS in run-ci.py * rocprofiler v1 library links to rocprofiler::memcheck * Disable using sigaltstack for address sanitizer * Update rocprofiler_set_memcheck_env - reduce the lib so version numbers searched * Update thread-sanitizer-suppr.txt - ignore unlock of an unlocked mutex (or by a wrong thread) in librocm_smi64.so * Update run-ci.py - TSAN_OPTIONS: second_deadlock_stack=1 * Add gtest_discover_tests_properties.cmake.in - this file is used to set properties on discovered tests which are not known at cmake time * Revert to using gtest_discover_tests - use gtest_discover_tests_properties.cmake.in to set test properties necessary for sanitizers * Remove duplicate concurrency field in cmake.yml * rename continuous-integration.yml - use underscore to be consistent * Remove redundant cmake.yml - superceded by continuous_integration.yml * Add navi21 to build matrix * Update run-ci.py - support --linter arg (ROCPROFILER_ENABLE_CLANG_TIDY) - default to -DROCPROFILER_BUILD_{CI,TESTS,SAMPLES}=ON * Update rocprofiler_options.cmake - Options: - ROCPROFILER_BUILD_TESTS - ROCPROFILER_BUILD_SAMPLES - ROCPROFILER_BUILD_PLUGIN_ATT - ROCPROFILER_BUILD_PLUGIN_CTF - ROCPROFILER_BUILD_PLUGIN_PERFETTO - ROCPROFILER_ENABLE_CLANG_TIDY - If ROCPROFILER_BUILD_CI remove -DNDEBUG (to enable asserts) - rocprofiler::memcheck includes -fno-omit-frame-pointer flag * Update rocprofiler_env.cmake - Add '-W -Wall -Wextra -Wno-unused-parameter' flags to rocprofiler::build-flags * add rocprofiler_formatting.cmake - creates "build" targets to format code * Add rocprofiler_linting.cmake and .clang-tidy - enables clang-tidy during compilation * Update (main) CMakeLists.txt - Fatal error if cmake version < 3.18.0 - include rocprofiler_formatting.cmake - include rocprofiler_linting.cmake - insert cmake_modules into front of CMAKE_MODULE_PATH - remove add_compile_options(-Wall) - handled by target-based compile options - protected samples add_subdir with if BUILD_SAMPLES - protect test and tests-v2 add_subdir with if BUILD_TESTS * Update test/CMakeLists.txt - bump minimum version to 3.18.0 + fatal error * Update plugin/CMakeLists.txt - protect add_subdir based on ROCPROFILER_BUILD_PLUGIN_{PERFETTO,CTF,ATT} * Update plugin/perfetto cmake - build perfetto SDK into PIC static library - disable clang-tidy when building SDK * Linting workflow - runs clang-tidy linter (more to come eventually) * Workflow update - use github.repository instead of github.repository_owner * Update rocprofiler_linting.cmake - add -header-filter=<source>/.* flag to clang-tidy * Update linting workflow - fix name of linting job * Update test discovery with sanitizers * Update linting workflow - use clang-tidy v11 instead of v15 * Enable GIT_DISCOVERY_ACROSS_FILESYSTEM - linting.yml - continuous_integration.yml * Update continuous_integration.yml - update docker registry pull * Support ASAN condition - ASAN is defined by internal Jenkins testing team * Update continuous_integration.yml - only define GIT_DISCOVERY_ACROSS_FILESYSTEM for container workflows * Update linting.yml - run on navi32 - update docker registry - run with -VV * Use containers in all workflows * Update continuous_integration.yml - update mix of native vs. docker * Fix setenv("LD_PRELOAD", ...) for sanitizers --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 6028be71a104df8a0a112b4b46e498c9685ce271 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 17 17:30:04 2023 -0500 Gerrit amd staging (#57) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * Merging From Github Squashed commit of the following: commit 7ab6644fd04db189801f6cee70a09bb621070b60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Sat Jul 15 00:47:30 2023 -0500 Gerrit amd staging (#49) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * run cmake formatting (cmake-format) (#50) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * run formatting (clang-format v11) (#51) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * Update CMakeLists.txt Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: Giovanni LB <gbaraldi@amd.com> Co-authored-by: Ranjith Ramakrishnan <Ranjith.Ramakrishnan@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> commit 3476ef7afe4e7af0a282b42da4b06ec8b0b9301a Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Fri Jul 14 19:11:41 2023 -0500 Workflow simplification and cancellation (#48) * Update formatting workflow - ignore changes to pull_*.yml workflows * Update pull_from_gerrit.yml workflow - allow manual trigger (workflow dispatch) - concurrent cancellation * Update pull_latest_dockers.yml workflow - simply workflow significantly by using matrix - allow manual trigger (workflow dispatch) - concurrent cancellation - run when pushed * Update CMake workflow - ignore changes to pull_*.yml workflows - concurrent cancellation commit f053319a4873b3d0d5d6a5074238c0371e0c9f60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 20:27:40 2023 -0500 Update and rename pull.yml to pull_from_gerrit.yml (#44) commit 90b423ebfaf35cc14d6c3b07c617e2346140853f Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:40:45 2023 -0500 Update pull_latest_dockers.yml commit 93acde8ed69766fb6d3482a1be8238f322b1db75 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:38:29 2023 -0500 Update pull_latest_dockers.yml commit 0092267a800ef1571bdb423272a8f2a2b8a641e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:29:47 2023 -0500 Gerrit amd staging (#9) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * run formatting (clang-format v11) (#10) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMa… * Commit to activate gerrit Change-Id: Ia7ead099cd6872d65b77d411b962691bccd76481 * run cmake formatting (cmake-format) (#86) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * run formatting (clang-format v11) (#87) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * Removing wrong workflows Change-Id: I45b8cbe311f5ea37e86b42cbe1127016815254f1 * Fixing Markdown format Change-Id: I0a7e16a09deeac9419b51d5badb239014b693f43 * Fixing CTF Plugin & Plugin Test Change-Id: I7c7ffb1a3b67b00cdd3e53237333fba01df0ae27 --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: Giovanni LB <gbaraldi@amd.com> Co-authored-by: Ranjith Ramakrishnan <Ranjith.Ramakrishnan@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit 9b240eab5d0d121107e82299708e099b3629c1e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Sat Aug 5 05:46:16 2023 -0500 New Optimized way to handle multiple GPUs for same runner (#88) * New Optimized way to handle multiple GPUs for same runner Change-Id: Ife66e650085506636e4b96a9179326bc2425d1be * New Optimized way to handle multiple GPUs for same runner Change-Id: Ifcc680dd32c82999b9b96bf07713f83336b33118 * New Optimized way to handle multiple GPUs for same runner Change-Id: Iac270bc64e5139cabbabd4b16fe9b64b3ce5159f * New Optimized way to handle multiple GPUs for same runner Change-Id: I7f0355e5e11780b3b515b333faabb341bc2bfaf7 * New Optimized way to handle multiple GPUs for same runner Change-Id: I8af87ab11965036bf412dcf882b06b36b8764f2e * New Optimized way to handle multiple GPUs for same runner Change-Id: I2df34e3b6100a7873e7eab537adf4dd2e9737d99 * New Optimized way to handle multiple GPUs for same runner Change-Id: I5d0f81b38643d16bc35b52632c916f7e3375a1e3 * New Optimized way to handle multiple GPUs for same runner Change-Id: I43e20c17524f895334f0925ff9e0fdf0354e6ba4 * New Optimized way to handle multiple GPUs for same runner Change-Id: I160cb99b3598ad6a1a002b9b3824c37131379b61 * New Optimized way to handle multiple GPUs for same runner Change-Id: Idef480ea360ae37c3d02178a61d63aa6c2bcaf53 commit c6d762727288fcc5ce1420cf5a32e474c247e404 Author: Ammar ELWazir <aelwazir@amd.com> Date: Fri Aug 4 22:59:41 2023 -0500 Optimizing builds,tests,packaging, removing v1 from navi32 runs (#74) commit 1798f071f9250bcce675021b85bf1d47fbf2cef0 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Fri Aug 4 19:14:03 2023 +0530 Adding popen alternative tests (#69) * Adding popen alternative tests * run cmake formatting (cmake-format) * single cmake for each test * Adding pandas dependency * Update continuous_integration.yml and linting.yml - list files (to help with git update issue) - install python requirements - update list files step (print path to python, python3, cmake, ctest, git) - specify Python3_EXECUTABLE * Update run-ci.py - print CTestCustom.cmake and dashboard.cmake in non-quiet mode * Update rocprofv2 script - add '-e' flag to shebang - support specifying ROCP_PRELOAD to propagate LD_PRELOAD value to script * Update run-ci.py - disable CTEST_GIT_INIT_SUBMODULES - set CTEST_GIT_COMMAND instead of CTEST_UPDATE_COMMAND * Update {counter,hiptrace}_validation_tests.cmake - Set ROCP_PRELOAD env to support sanitizers - Add labels to tests * Update csv_parser.h - include <cstdint> for int aliases * Update rocprofiler_options.cmake - ROCPROFILER_MEMCHECK_PRELOAD_ENV includes ROCP_PRELOAD * Update run-ci.py - capture cmake error for ctest_update * Update {counter,hiptrace}_validation_tests.cmake - Use ROCPROFILER_MEMCHECK_PRELOAD_ENV which includes ROCP_PRELOAD env variable * Update requirements.txt - use >= for package versions instead of == - this is too restrictive - downgrade matplotlib requirement to >= 3.3 instead of ==3.7.1 - PyPi for python 3.6 does not have matplotlib installs for versions >= 3.4 * updating requirements.txt for opensuse * updating requirements for wsclient * websocket installation opensuse --------- Co-authored-by: bgopesh <bgopesh@users.noreply.github.com> Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com> commit 731e8c85aea6e9f905d447bc933aa52ff546a881 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Tue Jul 25 21:16:45 2023 -0500 Linting update + general workflow updates (#72) * Update linting workflow - use GCC 12 instead of GCC 11 (default) * Update workflows - fixed the name of misc workflows (consistency) - ignore changes to linting workflows - support workflow dispatch commit 94d0864927cca3b8391a0ba4a6a00abeeb394907 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Tue Jul 25 13:47:03 2023 -0500 Address sanitizer fixes (#61) * Fix address sanitizer issues - mostly buffer overflows and string <-> c-string issues - also cleanup so partial init - general modernization (i.e. NULL -> nullptr) * Update rocprofiler_options.cmake - fix link flags for sanitizer * Disable MTBinaryTest.DispatchCountTestPasses - this test is broken - does not fail under any conditions - does not actually execute the test that it thinks it is executing (relaunches gtest app, not rocprofv2) commit eacd082a3f21b594ddf12c323a070f48a618dff2 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 18:52:21 2023 -0500 Fix CMakeLists.txt and build.sh (#62) commit 9084f4bc4331086cd2b4d0aecf588a081d366151 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 10:18:50 2023 -0500 Fixing README.md (#65) * Fixing README.md Change-Id: I7a8ecb5533fe9baa362fcac145a042b66d1d3620 * Update markdown_lint.yml * Fixing Markdown Lint Action * Changing --- style to *** commit ecc464c6ad39ae86e3a53d48eb9d55554fd94e37 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Tue Jul 18 20:09:06 2023 +0530 Create markdown_lint.yml (#46) * Create markdown_lint.yml * Update .github/workflows/markdown_lint.yml Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> * Removing version from markdown yml * Update markdown_lint.yml Removed extra space * Testing on README.md change * Update markdown_lint.yml * Update markdown_lint.yml * Update markdown_lint.yml * Fixing Markdown Lint Change-Id: I22caf2cded26c87fcfef92cb41b7b9c3bd045fc8 * Update markdown_lint.yml * Multiple Fixes in the readme Change-Id: Ic7835000b595f5c1980317809c5ade3a297af6e7 --------- Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Co-authored-by: Ammar ELWazir <aelwazir@amd.com> Co-authored-by: Ammar ELWazir <Ammar.ELWazir@amd.com> commit e96004db41d557426a85e0efa10c6a1a86852b73 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 18 09:20:32 2023 -0500 Removing Pull jobs (#64) Change-Id: Ic1259ce41f574b3dd4f87ce6c1aae75a52b9ce1e commit 6f995b194cbf074ef096e6a41dea4358bb31cb72 Author: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com> Date: Tue Jul 18 17:55:55 2023 +0530 Adding existing test info from removed test README (#8) * Adding existing test info from removed test README * updating README for test related information * Siginificant improvemnts to README with markdown lint * Addrsessing review comments * Removing ctest reference for now * Addresses latest review comments --------- Co-authored-by: Ammar ELWazir <aelwazir@amd.com> commit 1d1e219f5b3fcb8b74424072489a8e10dc5ed19d Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Mon Jul 17 22:50:01 2023 -0500 Continuous integration with CTest and CDash (#11) * rename env.cmake and utils.cmake - prefix files with "rocprofiler_" - make functions/macros start with "rocprofiler_" * Add cmake_modules/rocprofiler_options.cmake - create options in lieu of env variables * update build.sh - use `cmake -B <build-directory> ...` instead of mkdir/pushd/popd * Update CMakeLists.txt - Build flags for CMAKE_BUILD_TYPE=Coverage - include(rocprofiler_*) - enable_testing() so ctest can be run from build folder - include(CTest) for CDash submission * set(CMAKE_BUILD_TYPE "Coverage") where appropriate - plugin/CMakeLists.txt - src/CMakeLists.txt - this ensures the exes/libs are compiled with flags required for code coverage generation * Update src/api/CMakeLists.txt - link to rocprofiler::build-flags INTERFACE target - provides compile defs, flags, etc. for target * add script/run-ci.py script - script for configure/build/testing/etc. and submission to CDash dashboard * Update src/tools/CMakeLists.txt - link to rocprofiler::build-flags INTERFACE target - provides compile defs, flags, etc. for target - add PUBLIC to target_link_libraries(...) * Update test/CMakeLists.txt - remove custom target "test" because it is a reserved target name when enabled_testing() has been called - created a "v1-tests" test * Update tests-v2/featuretests/profiler/CMakeLists.txt - use gtest_discover_tests - create duplicates of standard tests which use file-, att-, ctf-, and perfetto- plugins instead of default plugin * Update tests-v2/unittests/CMakeLists.txt - use gtest_discover_tests - create duplicates of standard tests which use file-, att-, ctf-, and perfetto- plugins instead of default plugin * Update tests-v2 - remove built-in filtering from tests-v2/featuretests/gtests_main.cpp - this filtering is applied directly to test either by DISABLED_* or calling GTEST_SKIP() - this makes sure that there is a record of the tests that are not actually run in CTest/CDash - Fix WhenTestingAgentInfoGetterSetters.TestRunsSuccessfully - using gtest macros to compare const char* (which is a pointer comparison, not a string comparison) - Fix HelloWorldTest.WhenRunningProfilerWithAppThenKernelNamessMatchWithGoldenOutput - compare all kernel name entries not just kernel name at index zero * Update CTF plugin to support relocation - support finding the CTF metadata stream relative to the location of the library instead of fixing it based on the install prefix * remove #ifdef AQLPROF_NEW_API - the API function protected by this guard were introduced in ROCm 2.0 * Update rocprofiler_options.cmake - enforce out-of-source builds - always locally export compile commands * Add continuous-integration workflow - initial implementation of CI workflow which submits to CDash * Remove stale BUILD_TYPE env variable for CI workflow * Job cancelling for cmake.yml workflow * CI workflow: add missing quote * CI workflow: fix build matrix include * CI workflow update - fix path to run-ci.py - fallback for --site if HOSTNAME not specified in env * Decrease config/build/test timeout * run-ci.py update submit URL * submit via http not https * Tweak env for ctf plugin tests * ctf plugin output file defaults to "trace-{PID} * Try to execute mi200 jobs in parallel * enable fail-fast and max-parallel * Update test/CMakeLists.txt - build mytest (HSACO generation) as part of the all target * Update samples/CMakeLists.txt - samples target built by default - all samples are executed as part of testing * Update tests-v2 - all exes created via hip_add_executable are added to testing - (temporarily) disabled tests for plugins * run cmake formatting (cmake-format) (#45) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Removed plugin gtests - these tests launch rocprofv2 and therefore are integration/system tests which are not appropriate for unit testing in gtest - tests for the plugins will be added at a later point and will have stricter validation requirements * Update {samples,test}/CMakeLists.txt - replace sh -xc "<command>" with cmake -E <command> equivalents - fix pc_sampling_code_printing test (requires argument * Update CI workflow - add mi100, navi32, and vega20 jobs - fix setting GPU target list * Update ATTCollection test - WhenRunningATTItCollectsTraceData reports agent names when fails * Update CI workflow - remove install step for vega-navi-mi100 * update tests-v2/run_tests.sh - script is missing `-e` flag for bash so it does not report test failures by exiting with a non-zero exit code * update pcie_bw_test.cpp - add extra print message to determine if bus error on navi32 happens at rsmi_dev_id_get or rsmi_dev_pci_bandwidth_get * Update ATTCollection.WhenRunningATTItCollectsTraceData test - workaround navi32 issue - skip test when "gfx1[0-1][0-9][0-9]" * Update pcie_bw_test - miscellaneous modernizations/linting fixes (e.g., c-array -> std::array) - added a signal handler for SIGBUS to emit a message for CTest to that it can skip the test on navi32 - navi32 produces SIGBUS when rsmi_dev_pci_bandwidth_get is called * Update rocprofiler_options.cmake - support ROCPROFILER_MEMCHECK option to enable sanitizers * Update src/{api,tools}/CMakeLists.txt - use rocprofiler::memcheck INTERFACE target instead of large if/else for if(ASAN) * Update ENVIRONMENT for all tests - Add ROCPROFILER_MEMCHECK_PRELOAD_ENV which specifies an LD_PRELOAD for when memcheck analysis is enabled * Update run-ci.py - support memcheck - support disabling submission to dashboard - support --quiet flag which suppresses printing Testing/Temporary/* logs * Update CI workflow - Add sanitizers jobs which run on mi100 - Three sanitizers: address, leak, and thread * run cmake formatting (cmake-format) (#47) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * Update rocprofiler_options.cmake - link to sanitizer library + extra linker flags * Update src/tools/CMakeLists.txt - make rocprofiler::memcheck a private link library for rocprofiler_tool * run-ci.py update - do not use ctest_memcheck with ThreadSanitizer: causes deadlock when running tests * Update CI workflow - reorder sanitizer jobs * Suppression files for address, leak, and thread sanitizers - in script directory * Update run-ci.py - set suppression files - set TSAN_OPTIONS in run-ci.py * rocprofiler v1 library links to rocprofiler::memcheck * Disable using sigaltstack for address sanitizer * Update rocprofiler_set_memcheck_env - reduce the lib so version numbers searched * Update thread-sanitizer-suppr.txt - ignore unlock of an unlocked mutex (or by a wrong thread) in librocm_smi64.so * Update run-ci.py - TSAN_OPTIONS: second_deadlock_stack=1 * Add gtest_discover_tests_properties.cmake.in - this file is used to set properties on discovered tests which are not known at cmake time * Revert to using gtest_discover_tests - use gtest_discover_tests_properties.cmake.in to set test properties necessary for sanitizers * Remove duplicate concurrency field in cmake.yml * rename continuous-integration.yml - use underscore to be consistent * Remove redundant cmake.yml - superceded by continuous_integration.yml * Add navi21 to build matrix * Update run-ci.py - support --linter arg (ROCPROFILER_ENABLE_CLANG_TIDY) - default to -DROCPROFILER_BUILD_{CI,TESTS,SAMPLES}=ON * Update rocprofiler_options.cmake - Options: - ROCPROFILER_BUILD_TESTS - ROCPROFILER_BUILD_SAMPLES - ROCPROFILER_BUILD_PLUGIN_ATT - ROCPROFILER_BUILD_PLUGIN_CTF - ROCPROFILER_BUILD_PLUGIN_PERFETTO - ROCPROFILER_ENABLE_CLANG_TIDY - If ROCPROFILER_BUILD_CI remove -DNDEBUG (to enable asserts) - rocprofiler::memcheck includes -fno-omit-frame-pointer flag * Update rocprofiler_env.cmake - Add '-W -Wall -Wextra -Wno-unused-parameter' flags to rocprofiler::build-flags * add rocprofiler_formatting.cmake - creates "build" targets to format code * Add rocprofiler_linting.cmake and .clang-tidy - enables clang-tidy during compilation * Update (main) CMakeLists.txt - Fatal error if cmake version < 3.18.0 - include rocprofiler_formatting.cmake - include rocprofiler_linting.cmake - insert cmake_modules into front of CMAKE_MODULE_PATH - remove add_compile_options(-Wall) - handled by target-based compile options - protected samples add_subdir with if BUILD_SAMPLES - protect test and tests-v2 add_subdir with if BUILD_TESTS * Update test/CMakeLists.txt - bump minimum version to 3.18.0 + fatal error * Update plugin/CMakeLists.txt - protect add_subdir based on ROCPROFILER_BUILD_PLUGIN_{PERFETTO,CTF,ATT} * Update plugin/perfetto cmake - build perfetto SDK into PIC static library - disable clang-tidy when building SDK * Linting workflow - runs clang-tidy linter (more to come eventually) * Workflow update - use github.repository instead of github.repository_owner * Update rocprofiler_linting.cmake - add -header-filter=<source>/.* flag to clang-tidy * Update linting workflow - fix name of linting job * Update test discovery with sanitizers * Update linting workflow - use clang-tidy v11 instead of v15 * Enable GIT_DISCOVERY_ACROSS_FILESYSTEM - linting.yml - continuous_integration.yml * Update continuous_integration.yml - update docker registry pull * Support ASAN condition - ASAN is defined by internal Jenkins testing team * Update continuous_integration.yml - only define GIT_DISCOVERY_ACROSS_FILESYSTEM for container workflows * Update linting.yml - run on navi32 - update docker registry - run with -VV * Use containers in all workflows * Update continuous_integration.yml - update mix of native vs. docker * Fix setenv("LD_PRELOAD", ...) for sanitizers --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit 6028be71a104df8a0a112b4b46e498c9685ce271 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 17 17:30:04 2023 -0500 Gerrit amd staging (#57) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * Merging From Github Squashed commit of the following: commit 7ab6644fd04db189801f6cee70a09bb621070b60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Sat Jul 15 00:47:30 2023 -0500 Gerrit amd staging (#49) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * run cmake formatting (cmake-format) (#50) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * run formatting (clang-format v11) (#51) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * Update CMakeLists.txt Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: Giovanni LB <gbaraldi@amd.com> Co-authored-by: Ranjith Ramakrishnan <Ranjith.Ramakrishnan@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> commit 3476ef7afe4e7af0a282b42da4b06ec8b0b9301a Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Fri Jul 14 19:11:41 2023 -0500 Workflow simplification and cancellation (#48) * Update formatting workflow - ignore changes to pull_*.yml workflows * Update pull_from_gerrit.yml workflow - allow manual trigger (workflow dispatch) - concurrent cancellation * Update pull_latest_dockers.yml workflow - simply workflow significantly by using matrix - allow manual trigger (workflow dispatch) - concurrent cancellation - run when pushed * Update CMake workflow - ignore changes to pull_*.yml workflows - concurrent cancellation commit f053319a4873b3d0d5d6a5074238c0371e0c9f60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 20:27:40 2023 -0500 Update and rename pull.yml to pull_from_gerrit.yml (#44) commit 90b423ebfaf35cc14d6c3b07c617e2346140853f Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:40:45 2023 -0500 Update pull_latest_dockers.yml commit 93acde8ed69766fb6d3482a1be8238f322b1db75 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:38:29 2023 -0500 Update pull_latest_dockers.yml commit 0092267a800ef1571bdb423272a8f2a2b8a641e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:29:47 2023 -0500 Gerrit amd staging (#9) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * run formatting (clang-format v11) (#10) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I994a9fa743d47de3640d2bf7ae9ea3e01ea44f6a * Fixing vscnt typo in stitch.py Change-Id: I8a687b9df9173cef97078a23dabdc1f03a72445a * SWDEV-411283: Fix ROCTX for Buffer Tracing Change-Id: Ib3df535455281c6de81a5188deccd75b6e2eb9d3 * run formatting (clang-format v11) (#58) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: Giovanni LB <gbaraldi@amd.com> Co-authored-by: Ranjith Ramakrishnan <Ranjith.Ramakrishnan@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit 5bb019eb281038374319aa27a8541114f93ade7b Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 17 17:28:54 2023 -0500 Optimizing Docker pull job (#54) Change-Id: Iec80a54f1715c125acd236d60cdd7074cb237dfa commit 7ab6644fd04db189801f6cee70a09bb621070b60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Sat Jul 15 00:47:30 2023 -0500 Gerrit amd staging (#49) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * SWDEV-409195: Added instructions for ATT help. Change-Id: Ie76518dd54c3de82abfbd64b5e8c44a43edc8a09 * Pull from Github Squashed commit of the following: commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I77992f15694e77cbae49c56f9ff02f4f9079235d * Added error handling to att iterate_data. Fix for genasm. Change-Id: Ia86e629e74c6e00b98155355beabf69681a88875 * SWDEV-409575 - Append additional RPATH to libraries and binaries installed in /opt/rocm-ver/lib/rocprofiler Append the rpath $ORIGIN/.. to component specific libraries Binaries installed in /opt/rocm-ver/lib/rocprofiler had been appended with $ORIGIN/.. Binaries installed in /opt/rocm-ver/libexec/rocprofiler had been appended with $ORIGIN/../../lib Used TARGET form for installation of rocprof-ctrl and librocprof-tool in runtime component Change-Id: I53b7a283c6a8ddea97d4889db6010832389894bb * run cmake formatting (cmake-format) (#50) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * run formatting (clang-format v11) (#51) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> * Update CMakeLists.txt Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: Giovanni LB <gbaraldi@amd.com> Co-authored-by: Ranjith Ramakrishnan <Ranjith.Ramakrishnan@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> commit 3476ef7afe4e7af0a282b42da4b06ec8b0b9301a Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Fri Jul 14 19:11:41 2023 -0500 Workflow simplification and cancellation (#48) * Update formatting workflow - ignore changes to pull_*.yml workflows * Update pull_from_gerrit.yml workflow - allow manual trigger (workflow dispatch) - concurrent cancellation * Update pull_latest_dockers.yml workflow - simply workflow significantly by using matrix - allow manual trigger (workflow dispatch) - concurrent cancellation - run when pushed * Update CMake workflow - ignore changes to pull_*.yml workflows - concurrent cancellation commit f053319a4873b3d0d5d6a5074238c0371e0c9f60 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 20:27:40 2023 -0500 Update and rename pull.yml to pull_from_gerrit.yml (#44) commit 90b423ebfaf35cc14d6c3b07c617e2346140853f Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:40:45 2023 -0500 Update pull_latest_dockers.yml commit 93acde8ed69766fb6d3482a1be8238f322b1db75 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:38:29 2023 -0500 Update pull_latest_dockers.yml commit 0092267a800ef1571bdb423272a8f2a2b8a641e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 19:29:47 2023 -0500 Gerrit amd staging (#9) * removing README from tests diretory Change-Id: Id1162dbbe911e24f02d1bf42dafc93a9a934f71f * Fixing navi v1 test hang Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a - Added all gpu targets in build script. - Changed memory order to relaxed seem to work for navi hang - need to set power state for consistent results Change-Id: I7416170c126a2d3ec564ed27111f1befc3778b4a * Pull from Github Squashed commit of the following: commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I2223efd600dcd8a4f695e61491b94b7f12ae2c5b * run formatting (clang-format v11) (#10) Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> --------- Co-authored-by: gobhardw <gopesh.bhardwaj@amd.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: ammarwa <ammarwa@users.noreply.github.com> commit f029195705a15700380c6f832ba5d15d46fd6de7 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 14:38:56 2023 -0500 Formatting workflows for source (clang-format) and cmake (cmake-format) (#4) * Add .cmake-format.yaml file * Add formatting workflow * provide base input for creating PR * Update scheme for extracting branch name - disable running formatting on push to amd-staging branch * patch .cmake-format.yaml for find_package signature - apparently cmake-format doesn't format the full signature of find_package * run formatting (clang-format v11) (#7) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> * run cmake formatting (cmake-format) (#6) Co-authored-by: jrmadsen <jrmadsen@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> commit bc4d135fdd8a1a9e51235f18a5d575fd2b3735e6 Author: Ammar ELWazir <aelwazir@amd.com> Date: Thu Jul 13 12:55:17 2023 -0500 Removing Build cache for potential issues with auto-generated header files (#5) Change-Id: I9e2319f4335e2f88585ffa6fac2bd88a1c952e6e commit ce86dea6a311d44d880fa684eb78f3329295e2a4 Author: Jonathan R. Madsen <jrmadsen@users.noreply.github.com> Date: Thu Jul 13 11:08:58 2023 -0500 Fix decltype(<hsa-function>) function pointer usage (#3) - the following is done in several places: decltype(hsa_memory_allocate)* hsa_memory_allocate - above can cause compiler errors - replace decltype(<hsa-function>) with decltype(::<hsa-function>) - this ensures that the type within the decltype is recognized as the global scope HSA function, not the variable - in many places, the variable has a "_fn" suffix to prevent this issue but added '::' anyway for consistency commit ac49fdd92a72e9c99394253a02da413a6c2e3b3a Merge: a07946a 03a0855 Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 11:36:24 2023 -0500 Merge pull request #2 from ROCm-Developer-Tools/gerrit-amd-staging Pull from gerrit commit 03a085588cffe863e8f466de67be1cfb205b675a Merge:c26b32ba07946a Author: Ammar ELWazir <aelwazir@amd.com> Date: Wed Jul 12 10:57:30 2023 -0500 Merge branch 'amd-staging' into gerrit-amd-staging commit a07946a5cd4c670c83c27ad1a076a9d4567ce6d7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 15:46:04 2023 +0000 Enabling Cached Builds commit 525e494a7f13941077a8fd4ad6840904db4d27d4 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:53:54 2023 +0000 Updating missed GPU Targets commit 42c75862f628c9bee7cfb7dc04dff2619430efbc Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 04:43:02 2023 +0000 Adding V1 Testing commit 9d72fd4aee85e4b0c12e717060d2730fa5b73be1 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:34:31 2023 +0000 Fixing Artifacts directory path commit f4000cc558b3b2e4676f7994f7ce8c8e6f94518e Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:27:26 2023 +0000 Fixing CMake for test build job commit 2ce8115d4c33948c3c8f957f545a95a04e1d6cd2 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 03:16:18 2023 +0000 Fixing Ubuntu CMake for ubuntu test build commit 6d0ed439191be900748d0c025157f9d689a73ec7 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:28:41 2023 +0000 Removing Navi21 commit e349a7642e5ae5eb03ab9fcd0a0f74f09f78cab5 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 01:14:14 2023 +0000 Removing Navi21 commit fefd02fe68d2a4bca7ec2e381960ad004ee9fc5b Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:42:48 2023 +0000 Fixing CMake Job commit 2ea46abf7bf92643efa8c549fa70346ffbd79d65 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:35:13 2023 +0000 Fixing CMake Job commit d99d681ed1999c5fcf291dc678b11a77205fb0f3 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Wed Jul 12 00:32:13 2023 +0000 Fixing Pull Latest Dockers and CMake Jobs commit dfc4498072d13b4a1df3a63047d34c682c3d9a29 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:54:21 2023 +0000 Fixing CMake job commit 919efe04de707f7c702031be15c3e2c5f8442cbb Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 23:52:13 2023 +0000 Adding Pull Last dockers job commit be1b1256e8b0e05308e8f7e7e69bee3acca55281 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:25:40 2023 -0500 Update cmake.yml commit 212299fa4355ae6ec18f9aaacbb79c51ea6c6f97 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:23:35 2023 -0500 Update cmake.yml commit 7c2c1327086a61466cc6cac39f70865c051a8bc7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 18:18:53 2023 -0500 Update cmake.yml commit 191b5ce007e612e814c1d7a3afb4ad398f3852e1 Author: Ammar ELWazir <aelwazir@amd.com> Date: Tue Jul 11 16:03:22 2023 -0500 Update cmake.yml commit 8824113d95f3e13c7ce4d0af8e0d9d8f522a6c4a Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:28:09 2023 +0000 Fixing Pull from Gerrit job name Change-Id: I9e7ed9a27a13ca49d62c93bdadb30f0057e4d385 commit cc3d5e4b02ffb439e8cc2b3efa53527c376f9982 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 16:21:43 2023 +0000 Adding Staging sync job Change-Id: I0551f43878b0678ce4b3e74e27d62357cf95ad95 commit b9be2eee71380a2e6dd34d520e92d0c4209277a0 Author: Ammar ELWazir <Ammar.ELWazir@amd.com> Date: Tue Jul 11 15:57:11 2023 +0000 Fixing build.sh Change-Id: Ia987b0244f0875370d5fe69907b3f5e9cea914de commit 9eee33a95a1abd656a7ac5ca10a9f245e9825431 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:39:46 2023 -0500 Update cmake.yml commit 7093b85a78497140e8b52632ca2a002bdaeacd62 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:33:29 2023 -0500 Update cmake.yml commit f54697172c72a67740f9fdfa0c217b6ea6931576 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 21:01:26 2023 -0500 Update cmake.yml commit 1b6620e16f8940386b0f4f04e69e2410d21c0e26 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 20:21:02 2023 -0500 Update cmake.yml commit a94bec740c6b42c4b79c87bca20fa87b99bf060d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:46:35 2023 -0500 Update cmake.yml commit 85d6b29d4375a69d575c18ece8542c50f2ddfcc3 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:34:39 2023 -0500 Update cmake.yml commit 8c004887cf1435f1a6214c3d2455299a8a27bd4c Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:31:17 2023 -0500 Update cmake.yml commit a14a9168e17d9348a53c6e9c9a47ba1edb4c4509 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:25:46 2023 -0500 Update cmake.yml commit 000f2f40b84e6a2f7d4becdbf5aed01436ca4c83 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:08:18 2023 -0500 Update cmake.yml commit a28a53d56731cad848fa9133d1c4dbaa8fc7afa7 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 19:03:39 2023 -0500 Update cmake.yml commit a6a2db01027f0b01fdfbb5997ddb772c7f51b649 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 18:21:53 2023 -0500 Update cmake.yml commit 118ef2a88b2d44e3207c31c343da3e5e5ec6f176 Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:55:57 2023 -0500 Update cmake.yml commit 03c4c232396440cd0be6d2dd7baf4ceea1c2589d Author: Ammar ELWazir <aelwazir@amd.com> Date: Mon Jul 10 17:48:49 2023 -0500 Create cmake.yml Change-Id: I0b042c22cf2b770be08c85a37a651256867a7dbb [ROCm/rocprofiler commit:aac324cc0c]
이 커밋은 다음에 포함됨:
@@ -0,0 +1,30 @@
|
||||
---
|
||||
Checks: "-*,\
|
||||
misc-*,\
|
||||
-misc-incorrect-roundings,\
|
||||
-misc-macro-parentheses,\
|
||||
-misc-misplaced-widening-cast,\
|
||||
-misc-static-assert,\
|
||||
-misc-no-recursion,\
|
||||
-misc-non-private-member-variables-in-classes,\
|
||||
modernize-*,\
|
||||
-modernize-deprecated-headers,\
|
||||
-modernize-raw-string-literal,\
|
||||
-modernize-return-braced-init-list,\
|
||||
-modernize-use-transparent-functors,\
|
||||
-modernize-use-trailing-return-type,\
|
||||
-modernize-avoid-c-arrays,\
|
||||
-modernize-use-auto,\
|
||||
-modernize-concat-nested-namespaces,\
|
||||
-modernize-use-nodiscard,\
|
||||
performance-*,\
|
||||
readability-*,\
|
||||
-readability-function-size,\
|
||||
-readability-identifier-naming,\
|
||||
"
|
||||
CheckOptions:
|
||||
- key: readability-braces-around-statements.ShortStatementLines
|
||||
value: '2'
|
||||
- key: readability-implicit-bool-conversion.AllowPointerConditions
|
||||
value: '1'
|
||||
...
|
||||
@@ -0,0 +1,11 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
@@ -0,0 +1,330 @@
|
||||
name: Continuous Integration
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [ "amd-staging" ]
|
||||
paths-ignore:
|
||||
- '.github/workflows/pull_*.yml'
|
||||
- '.github/workflows/linting.yml'
|
||||
- '.github/workflows/markdown_lint.yml'
|
||||
- '*.md'
|
||||
pull_request:
|
||||
branches: [ "amd-staging" ]
|
||||
paths-ignore:
|
||||
- '.github/workflows/pull_*.yml'
|
||||
- '.github/workflows/linting.yml'
|
||||
- '.github/workflows/markdown_lint.yml'
|
||||
- '*.md'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
# TODO(jrmadsen): replace LD_RUNPATH_FLAG, GPU_LIST, etc. with internal handling in cmake
|
||||
ROCM_PATH: "/opt/rocm"
|
||||
CMAKE_PREFIX_PATH: "/opt/rocm"
|
||||
LD_RUNPATH_FLAG: " -Wl,--enable-new-dtags -Wl,--rpath,/opt/rocm/lib"
|
||||
GPU_LIST: "gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx1100 gfx1101 gfx1102"
|
||||
|
||||
jobs:
|
||||
get_latest_mainline_build_number:
|
||||
runs-on: mi200
|
||||
|
||||
outputs:
|
||||
LATEST_BUILD_NUMBER: ${{ steps.get_build_number.outputs.LATEST_BUILD_NUMBER }}
|
||||
|
||||
steps:
|
||||
- id: get_build_number
|
||||
run: echo "LATEST_BUILD_NUMBER=$(wget -qO- 'http://rocm-ci.amd.com/job/compute-rocm-dkms-no-npi-hipclang/lastSuccessfulBuild/buildNumber')" >> $GITHUB_OUTPUT
|
||||
|
||||
Mi200-Ubuntu22-Doc-Packages:
|
||||
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
||||
strategy:
|
||||
fail-fast: true
|
||||
max-parallel: 4
|
||||
matrix:
|
||||
include:
|
||||
- os: 'ubuntu-22.04'
|
||||
runner: 'renderD129'
|
||||
device: '/renderD129'
|
||||
build-type: 'Release'
|
||||
ci-flags: '--coverage'
|
||||
name-tag: '-codecov'
|
||||
- os: 'ubuntu-22.04'
|
||||
runner: 'renderD130'
|
||||
device: '/renderD130'
|
||||
build-type: 'RelWithDebInfo'
|
||||
ci-flags: ''
|
||||
name-tag: ''
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
# define this for containers
|
||||
env:
|
||||
GIT_DISCOVERY_ACROSS_FILESYSTEM: 1
|
||||
|
||||
container:
|
||||
image: compute-artifactory.amd.com:5000/rocm-plus-docker/compute-rocm-dkms-no-npi-hipclang:${{ needs.get_latest_mainline_build_number.outputs.LATEST_BUILD_NUMBER }}-${{ matrix.os }}-stg1
|
||||
options: --memory=128g --cpus=32 --ipc=host --device=/dev/kfd --device=/dev/dri${{ matrix.device }} --group-add video --cap-add=SYS_PTRACE --cap-add CAP_SYS_PTRACE --cap-add CAP_SYS_ADMIN --security-opt seccomp=unconfined
|
||||
|
||||
if: ${{ always() }}
|
||||
needs: get_latest_mainline_build_number
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: List Files
|
||||
shell: bash
|
||||
run: |
|
||||
which-realpath() { echo "$1 resolves to $(realpath $(which $1))"; }
|
||||
for i in python python3 git cmake ctest; do which-realpath $i; done
|
||||
ls -la
|
||||
|
||||
- name: Install Python requirements
|
||||
shell: bash
|
||||
run: pip3 install -r requirements.txt
|
||||
|
||||
- name: Configure, Build, and Test
|
||||
timeout-minutes: 30
|
||||
shell: bash
|
||||
run:
|
||||
python3 ./script/run-ci.py -B build
|
||||
--name ${{ github.repository }}-${{ github.ref_name }}-mi200-${{ matrix.os }}${{ matrix.name-tag }}
|
||||
--build-jobs 12
|
||||
--site mi200
|
||||
--gpu-targets ${{ env.GPU_LIST }}
|
||||
${{ matrix.ci-flags }}
|
||||
--
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.ROCM_PATH }}"
|
||||
-DCMAKE_MODULE_PATH="${{ env.ROCM_PATH }}/hip/cmake;${{ env.ROCM_PATH }}/lib/cmake"
|
||||
-DCMAKE_SHARED_LINKER_FLAGS="${{ env.LD_RUNPATH_FLAG }}"
|
||||
-DCMAKE_INSTALL_RPATH=${{ env.ROCM_PATH }}
|
||||
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX=${{ env.ROCM_PATH }}
|
||||
-DCPACK_OBJCOPY_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-objcopy"
|
||||
-DCPACK_READELF_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-readelf"
|
||||
-DCPACK_STRIP_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-strip"
|
||||
-DCPACK_OBJDUMP_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-objdump"
|
||||
-DCPACK_GENERATOR='DEB;RPM;TGZ'
|
||||
-DPython3_EXECUTABLE=$(which python3)
|
||||
|
||||
- name: Install
|
||||
timeout-minutes: 10
|
||||
run:
|
||||
cmake --build build --target install --parallel 8
|
||||
|
||||
- name: Build Docs
|
||||
timeout-minutes: 10
|
||||
run:
|
||||
cmake --build build --target doc --parallel 8
|
||||
|
||||
- name: Build Packaging
|
||||
timeout-minutes: 10
|
||||
run:
|
||||
cmake --build build --target package --parallel 8
|
||||
|
||||
- name: Archive production artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: artifacts
|
||||
path: |
|
||||
${{github.workspace}}/build/*.deb
|
||||
${{github.workspace}}/build/*.rpm
|
||||
${{github.workspace}}/build/*.tgz
|
||||
|
||||
Building-Testing:
|
||||
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
||||
|
||||
strategy:
|
||||
fail-fast: true
|
||||
matrix:
|
||||
runner: ['vega20', 'mi100', 'navi21', 'navi32']
|
||||
device: ['']
|
||||
os: ['ubuntu-22.04']
|
||||
build-type: ['RelWithDebInfo']
|
||||
ci-flags: ['']
|
||||
name-tag: ['']
|
||||
extra-options: ['']
|
||||
include:
|
||||
- os: 'rhel-8.x'
|
||||
runner: 'renderD131'
|
||||
device: '/renderD131'
|
||||
build-type: 'RelWithDebInfo'
|
||||
ci-flags: ''
|
||||
name-tag: ''
|
||||
extra-options: '--memory=128g --cpus=32'
|
||||
- os: 'rhel-9.x'
|
||||
runner: 'renderD129'
|
||||
device: '/renderD129'
|
||||
build-type: 'RelWithDebInfo'
|
||||
ci-flags: ''
|
||||
name-tag: ''
|
||||
extra-options: '--memory=128g --cpus=32'
|
||||
- os: 'sles'
|
||||
runner: 'renderD130'
|
||||
device: '/renderD130'
|
||||
build-type: 'RelWithDebInfo'
|
||||
ci-flags: ''
|
||||
name-tag: ''
|
||||
extra-options: '--memory=128g --cpus=32'
|
||||
- os: 'ubuntu-20.04'
|
||||
runner: 'renderD131'
|
||||
device: '/renderD131'
|
||||
build-type: 'RelWithDebInfo'
|
||||
ci-flags: ''
|
||||
name-tag: ''
|
||||
extra-options: '--memory=128g --cpus=32'
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
# define this for containers
|
||||
env:
|
||||
GIT_DISCOVERY_ACROSS_FILESYSTEM: 1
|
||||
|
||||
container:
|
||||
image: compute-artifactory.amd.com:5000/rocm-plus-docker/compute-rocm-dkms-no-npi-hipclang:${{ needs.get_latest_mainline_build_number.outputs.LATEST_BUILD_NUMBER }}-${{ matrix.os }}-stg1
|
||||
options: ${{ matrix.extra-options }} --ipc=host --device=/dev/kfd --device=/dev/dri${{ matrix.device }} --group-add video --cap-add=SYS_PTRACE --cap-add CAP_SYS_PTRACE --cap-add CAP_SYS_ADMIN --security-opt seccomp=unconfined
|
||||
|
||||
if: ${{ always() }}
|
||||
needs: get_latest_mainline_build_number
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: List Files
|
||||
shell: bash
|
||||
run: |
|
||||
which-realpath() { echo "$1 resolves to $(realpath $(which $1))"; }
|
||||
for i in python python3 git cmake ctest; do which-realpath $i; done
|
||||
ls -la
|
||||
|
||||
- name: Install Python requirements
|
||||
shell: bash
|
||||
run: pip3 install -r requirements.txt
|
||||
|
||||
- name: Configure, Build, and Test
|
||||
if: ${{ matrix.runner != 'navi32' }}
|
||||
timeout-minutes: 30
|
||||
shell: bash
|
||||
run:
|
||||
python3 ./script/run-ci.py -B build
|
||||
--name ${{ github.repository }}-${{ github.ref_name }}-${{ matrix.runner }}-${{ matrix.os }}${{ matrix.name-tag }}
|
||||
--build-jobs 12
|
||||
--site ${{ matrix.runner }}
|
||||
--gpu-targets ${{ env.GPU_LIST }}
|
||||
${{ matrix.ci-flags }}
|
||||
--
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.ROCM_PATH }}"
|
||||
-DCMAKE_MODULE_PATH="${{ env.ROCM_PATH }}/hip/cmake;${{ env.ROCM_PATH }}/lib/cmake"
|
||||
-DCMAKE_SHARED_LINKER_FLAGS="${{ env.LD_RUNPATH_FLAG }}"
|
||||
-DCMAKE_INSTALL_RPATH=${{ env.ROCM_PATH }}
|
||||
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX=${{ env.ROCM_PATH }}
|
||||
-DCPACK_OBJCOPY_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-objcopy"
|
||||
-DCPACK_READELF_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-readelf"
|
||||
-DCPACK_STRIP_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-strip"
|
||||
-DCPACK_OBJDUMP_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-objdump"
|
||||
-DCPACK_GENERATOR='DEB;RPM;TGZ'
|
||||
-DPython3_EXECUTABLE=$(which python3)
|
||||
|
||||
- name: Configure, Build, and Test
|
||||
if: ${{ matrix.runner == 'navi32' }}
|
||||
timeout-minutes: 30
|
||||
shell: bash
|
||||
run:
|
||||
python3 ./script/run-ci.py -B build
|
||||
--name ${{ github.repository }}-${{ github.ref_name }}-${{ matrix.runner }}${{ matrix.name-tag }}
|
||||
--build-jobs 12
|
||||
--site ${{ matrix.runner }}
|
||||
--gpu-targets ${{ env.GPU_LIST }}
|
||||
${{ matrix.ci-flags }}
|
||||
--
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.ROCM_PATH }}"
|
||||
-DCMAKE_MODULE_PATH="${{ env.ROCM_PATH }}/hip/cmake;${{ env.ROCM_PATH }}/lib/cmake"
|
||||
-DCMAKE_SHARED_LINKER_FLAGS="${{ env.LD_RUNPATH_FLAG }}"
|
||||
-DCMAKE_INSTALL_RPATH=${{ env.ROCM_PATH }}
|
||||
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF
|
||||
-DCPACK_PACKAGING_INSTALL_PREFIX=${{ env.ROCM_PATH }}
|
||||
-DCPACK_OBJCOPY_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-objcopy"
|
||||
-DCPACK_READELF_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-readelf"
|
||||
-DCPACK_STRIP_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-strip"
|
||||
-DCPACK_OBJDUMP_EXECUTABLE="${{ env.ROCM_PATH }}/llvm/bin/llvm-objdump"
|
||||
-DCPACK_GENERATOR='DEB;RPM;TGZ'
|
||||
-DPython3_EXECUTABLE=$(which python3)
|
||||
--
|
||||
-LE v1
|
||||
|
||||
sanitizers:
|
||||
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: 'ubuntu-22.04'
|
||||
runner: 'vega20'
|
||||
build-type: 'RelWithDebInfo'
|
||||
ci-flags: ''
|
||||
sanitizer: 'ThreadSanitizer'
|
||||
- os: 'ubuntu-22.04'
|
||||
runner: 'navi32'
|
||||
build-type: 'RelWithDebInfo'
|
||||
ci-flags: ''
|
||||
sanitizer: 'LeakSanitizer'
|
||||
- os: 'ubuntu-22.04'
|
||||
runner: 'mi100'
|
||||
build-type: 'RelWithDebInfo'
|
||||
ci-flags: ''
|
||||
sanitizer: 'AddressSanitizer'
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
# define this for containers
|
||||
env:
|
||||
GIT_DISCOVERY_ACROSS_FILESYSTEM: 1
|
||||
|
||||
container:
|
||||
image: compute-artifactory.amd.com:5000/rocm-plus-docker/compute-rocm-dkms-no-npi-hipclang:${{ needs.get_latest_mainline_build_number.outputs.LATEST_BUILD_NUMBER }}-${{ matrix.os }}-stg1
|
||||
options: --privileged --ipc=host --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --cap-add CAP_SYS_PTRACE --cap-add CAP_SYS_ADMIN --security-opt seccomp=unconfined
|
||||
|
||||
if: ${{ always() }}
|
||||
needs: get_latest_mainline_build_number
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: List Files
|
||||
shell: bash
|
||||
run: |
|
||||
which-realpath() { echo "$1 resolves to $(realpath $(which $1))"; }
|
||||
for i in python python3 git cmake ctest; do which-realpath $i; done
|
||||
ls -la
|
||||
|
||||
- name: Install Python requirements
|
||||
shell: bash
|
||||
run: pip3 install -r requirements.txt
|
||||
|
||||
- name: Configure, Build, and Test
|
||||
timeout-minutes: 30
|
||||
shell: bash
|
||||
run:
|
||||
python3 ./script/run-ci.py -B build
|
||||
--name ${{ github.repository }}-${{ github.ref_name }}-mi100-${{ matrix.sanitizer }}
|
||||
--build-jobs 12
|
||||
--site mi100
|
||||
--gpu-targets ${{ env.GPU_LIST }}
|
||||
--memcheck=${{ matrix.sanitizer }}
|
||||
${{ matrix.ci-flags }}
|
||||
--
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.ROCM_PATH }}"
|
||||
-DCMAKE_MODULE_PATH="${{ env.ROCM_PATH }}/hip/cmake;${{ env.ROCM_PATH }}/lib/cmake"
|
||||
-DCMAKE_SHARED_LINKER_FLAGS="${{ env.LD_RUNPATH_FLAG }}"
|
||||
-DCMAKE_INSTALL_RPATH=${{ env.ROCM_PATH }}
|
||||
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF
|
||||
-DPython3_EXECUTABLE=$(which python3)
|
||||
@@ -0,0 +1,27 @@
|
||||
name: Dockers Cleanup
|
||||
|
||||
on:
|
||||
# allow triggering manually
|
||||
workflow_dispatch:
|
||||
# run on weekly schedule
|
||||
schedule:
|
||||
- cron: "0 0 * * 6"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
cleanup-dockers:
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
runner: ['vega20', mi200, mi100, navi21, navi31]
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
steps:
|
||||
- name: prune-dockers
|
||||
run: |
|
||||
docker system prune -f -a --volumes
|
||||
@@ -1,12 +1,14 @@
|
||||
|
||||
name: Formatting
|
||||
run-name: formatting
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches: [ amd-staging ]
|
||||
paths-ignore:
|
||||
- '.github/workflows/pull_*.yml'
|
||||
- '.github/workflows/linting.yml'
|
||||
- '.github/workflows/markdown_lint.yml'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
@@ -48,10 +50,10 @@ jobs:
|
||||
if: failure()
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
commit-message: "run cmake formatting (cmake-format)"
|
||||
commit-message: "cmake formatting (cmake-format)"
|
||||
branch: ${{ steps.extract_branch.outputs.branch }}-cmake-format
|
||||
delete-branch: true
|
||||
title: "Apply cmake-format to ${{ steps.extract_branch.outputs.branch }}"
|
||||
title: "Format cmake code (via cmake-format) on ${{ steps.extract_branch.outputs.branch }}"
|
||||
base: ${{ steps.extract_branch.outputs.branch }}
|
||||
|
||||
source:
|
||||
@@ -90,8 +92,55 @@ jobs:
|
||||
if: failure()
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
commit-message: "run formatting (clang-format v11)"
|
||||
commit-message: "source formatting (clang-format v11)"
|
||||
branch: ${{ steps.extract_branch.outputs.branch }}-clang-format
|
||||
delete-branch: true
|
||||
title: "Apply clang-format (v11) to ${{ steps.extract_branch.outputs.branch }}"
|
||||
title: "Format source code (via clang-format v11) on ${{ steps.extract_branch.outputs.branch }}"
|
||||
base: ${{ steps.extract_branch.outputs.branch }}
|
||||
|
||||
python:
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: ['3.10']
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Extract branch name
|
||||
shell: bash
|
||||
run: |
|
||||
echo "branch=${GITHUB_HEAD_REF:-${GITHUB_HEAD_REF#refs/heads/}}" >> $GITHUB_OUTPUT
|
||||
id: extract_branch
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
python -m pip install black
|
||||
|
||||
- name: black format
|
||||
run: |
|
||||
black .
|
||||
if [ $(git diff | wc -l) -ne 0 ]; then
|
||||
echo -e "\nError! Python code not formatted. Run black...\n"
|
||||
echo -e "\nFiles:\n"
|
||||
git diff --name-only
|
||||
echo -e "\nFull diff:\n"
|
||||
git diff
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Create pull request
|
||||
if: failure()
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
commit-message: "python formatting (black)"
|
||||
branch: ${{ steps.extract_branch.outputs.branch }}-python-format
|
||||
delete-branch: true
|
||||
title: "Format python code (via black) on ${{ steps.extract_branch.outputs.branch }}"
|
||||
base: ${{ steps.extract_branch.outputs.branch }}
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
name: Linting
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [ "amd-staging" ]
|
||||
paths-ignore:
|
||||
- '.github/workflows/pull_*.yml'
|
||||
- '*.md'
|
||||
pull_request:
|
||||
branches: [ "amd-staging" ]
|
||||
paths-ignore:
|
||||
- '.github/workflows/pull_*.yml'
|
||||
- '*.md'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
# TODO(jrmadsen): replace LD_RUNPATH_FLAG, GPU_LIST, etc. with internal handling in cmake
|
||||
GIT_DISCOVERY_ACROSS_FILESYSTEM: 1
|
||||
ROCM_PATH: "/opt/rocm"
|
||||
CMAKE_PREFIX_PATH: "/opt/rocm"
|
||||
LD_RUNPATH_FLAG: " -Wl,--enable-new-dtags -Wl,--rpath,/opt/rocm/lib"
|
||||
GPU_LIST: "gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx1100 gfx1101 gfx1102"
|
||||
|
||||
jobs:
|
||||
get_latest_mainline_build_number:
|
||||
runs-on: mi200
|
||||
|
||||
outputs:
|
||||
LATEST_BUILD_NUMBER: ${{ steps.get_build_number.outputs.LATEST_BUILD_NUMBER }}
|
||||
|
||||
steps:
|
||||
- id: get_build_number
|
||||
run: echo "LATEST_BUILD_NUMBER=$(wget -qO- 'http://rocm-ci.amd.com/job/compute-rocm-dkms-no-npi-hipclang/lastSuccessfulBuild/buildNumber')" >> $GITHUB_OUTPUT
|
||||
|
||||
linting:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- build-type: 'Debug'
|
||||
linter: 'clang-tidy'
|
||||
runner: 'mi100'
|
||||
os: 'ubuntu-22.04'
|
||||
- build-type: 'Release'
|
||||
linter: 'clang-tidy'
|
||||
runner: 'vega20'
|
||||
os: 'ubuntu-22.04'
|
||||
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
needs: get_latest_mainline_build_number
|
||||
|
||||
container:
|
||||
image: compute-artifactory.amd.com:5000/rocm-plus-docker/compute-rocm-dkms-no-npi-hipclang:${{ needs.get_latest_mainline_build_number.outputs.LATEST_BUILD_NUMBER }}-${{ matrix.os }}-stg1
|
||||
options: --ipc=host --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --cap-add CAP_SYS_PTRACE --cap-add CAP_SYS_ADMIN --security-opt seccomp=unconfined
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: List Files
|
||||
shell: bash
|
||||
run: |
|
||||
which-realpath() { echo "$1 resolves to $(realpath $(which $1))"; }
|
||||
for i in python python3 git cmake ctest; do which-realpath $i; done
|
||||
ls -la
|
||||
|
||||
- name: Update container
|
||||
run: |
|
||||
apt-get update
|
||||
apt-get install -y clang-tidy-11 g++-12
|
||||
update-alternatives --install /usr/bin/clang-tidy clang-tidy /usr/bin/clang-tidy-11 10
|
||||
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 10 --slave /usr/bin/g++ g++ /usr/bin/g++-11
|
||||
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 20 --slave /usr/bin/g++ g++ /usr/bin/g++-12
|
||||
|
||||
- name: Install Python requirements
|
||||
shell: bash
|
||||
run: |
|
||||
python3 -m pip install -r requirements.txt
|
||||
|
||||
- name: Configure, Build, and Test
|
||||
timeout-minutes: 30
|
||||
shell: bash
|
||||
run:
|
||||
python3 ./script/run-ci.py -B build
|
||||
--name ${{ github.repository }}-${{ github.ref_name }}-${{ matrix.runner }}-${{ matrix.linter }}-${{ matrix.build-type }}
|
||||
--build-jobs 12
|
||||
--site ${{ matrix.runner }}
|
||||
--gpu-targets ${{ env.GPU_LIST }}
|
||||
--linter ${{ matrix.linter }}
|
||||
--
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
|
||||
-DCMAKE_INSTALL_PREFIX="${{ env.ROCM_PATH }}"
|
||||
-DCMAKE_MODULE_PATH="${{ env.ROCM_PATH }}/hip/cmake;${{ env.ROCM_PATH }}/lib/cmake"
|
||||
-DCMAKE_SHARED_LINKER_FLAGS="${{ env.LD_RUNPATH_FLAG }}"
|
||||
-DCMAKE_INSTALL_RPATH=${{ env.ROCM_PATH }}
|
||||
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF
|
||||
-DPython3_EXECUTABLE=$(which python3)
|
||||
--
|
||||
-VV
|
||||
@@ -0,0 +1,21 @@
|
||||
name: Markdown Lint
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches: [ "amd-staging" ]
|
||||
paths:
|
||||
- '*.md'
|
||||
|
||||
jobs:
|
||||
check-readme:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Lint Markdown files
|
||||
uses: avto-dev/markdown-lint@v1
|
||||
with:
|
||||
config: './.markdown-lint-config.yml'
|
||||
args: './README.md'
|
||||
@@ -0,0 +1,141 @@
|
||||
default: false # includes/excludes all rules by default
|
||||
|
||||
# Heading levels should only increment by one level at a time <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md001>
|
||||
MD001: true
|
||||
|
||||
# Heading style <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md003>
|
||||
MD003: true
|
||||
|
||||
# Unordered list style <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md004>
|
||||
MD004: true
|
||||
|
||||
# Inconsistent indentation for list items at the same level <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md005>
|
||||
MD005: true
|
||||
|
||||
# Consider starting bulleted lists at the beginning of the line <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md006>
|
||||
MD006: true
|
||||
|
||||
# Unordered list indentation <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md007>
|
||||
MD007: true
|
||||
|
||||
# Trailing spaces <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md009>
|
||||
MD009: true
|
||||
|
||||
# Hard tabs <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md010>
|
||||
MD010: true
|
||||
|
||||
# Reversed link syntax <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md011>
|
||||
MD011: true
|
||||
|
||||
# Multiple consecutive blank lines <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md012>
|
||||
MD012: true
|
||||
|
||||
# Line length <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md013>
|
||||
MD013: false
|
||||
|
||||
# Dollar signs used before commands without showing output <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md014>
|
||||
MD014: false
|
||||
|
||||
# No space after hash on atx style heading <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md018>
|
||||
MD018: true
|
||||
|
||||
# Multiple spaces after hash on atx style heading <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md019>
|
||||
MD019: true
|
||||
|
||||
# No space inside hashes on closed atx style heading <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md020>
|
||||
MD020: true
|
||||
|
||||
# Multiple spaces inside hashes on closed atx style heading <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md021>
|
||||
MD021: true
|
||||
|
||||
# Headings should be surrounded by blank lines <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md022>
|
||||
MD022: true
|
||||
|
||||
# Headings must start at the beginning of the line <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md023>
|
||||
MD023: true
|
||||
|
||||
# Multiple headings with the same content <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md024>
|
||||
MD024:
|
||||
allow_different_nesting: true
|
||||
|
||||
# Multiple top level headings in the same document <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md025>
|
||||
MD025: true
|
||||
|
||||
# Trailing punctuation in heading <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md026>
|
||||
MD026: true
|
||||
|
||||
# Multiple spaces after blockquote symbol <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md027>
|
||||
MD027: true
|
||||
|
||||
# Blank line inside blockquote <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md028>
|
||||
MD028: false
|
||||
|
||||
# Ordered list item prefix <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md029>
|
||||
MD029:
|
||||
style: 'one'
|
||||
|
||||
# Spaces after list markers <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md030>
|
||||
MD030: true
|
||||
|
||||
# Fenced code blocks should be surrounded by blank lines <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md031>
|
||||
MD031: true
|
||||
|
||||
# Lists should be surrounded by blank lines <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md032>
|
||||
MD032: true
|
||||
|
||||
# Inline HTML <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md033>
|
||||
MD033: true
|
||||
|
||||
# Bare URL used <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md034>
|
||||
MD034: true
|
||||
|
||||
# Horizontal rule style <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md035>
|
||||
MD035:
|
||||
style: '***'
|
||||
|
||||
# Emphasis used instead of a heading <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md036>
|
||||
MD036: true
|
||||
|
||||
# Spaces inside emphasis markers <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md037>
|
||||
MD037: true
|
||||
|
||||
# Spaces inside code span elements <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md038>
|
||||
MD038: true
|
||||
|
||||
# Spaces inside link text <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md039>
|
||||
MD039: true
|
||||
|
||||
# Fenced code blocks should have a language specified <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md040>
|
||||
MD040: true
|
||||
|
||||
# First line in file should be a top level heading <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md041>
|
||||
MD041: true
|
||||
|
||||
# No empty links <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md042>
|
||||
MD042: true
|
||||
|
||||
# Required heading structure <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md043>
|
||||
MD043: false
|
||||
|
||||
# Proper names should have the correct capitalization <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md044>
|
||||
MD044: false
|
||||
|
||||
# Images should have alternate text (alt text) <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md045>
|
||||
MD045: false
|
||||
|
||||
# Code block style <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md046>
|
||||
MD046:
|
||||
style: 'fenced'
|
||||
|
||||
# Files should end with a single newline character <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md047>
|
||||
MD047: true
|
||||
|
||||
# Code fence style <https://github.com/DavidAnson/markdownlint/blob/master/doc/Rules.md#md048>
|
||||
MD048:
|
||||
style: 'backtick'
|
||||
|
||||
# Custom rules:
|
||||
CHANGELOG-RULE-001: true
|
||||
CHANGELOG-RULE-002: true
|
||||
CHANGELOG-RULE-003: true
|
||||
CHANGELOG-RULE-004: true
|
||||
@@ -20,7 +20,21 @@
|
||||
# SOFTWARE.
|
||||
# ##############################################################################
|
||||
|
||||
cmake_minimum_required(VERSION 3.18.0)
|
||||
cmake_minimum_required(VERSION 3.18.0 FATAL_ERROR)
|
||||
|
||||
set(CMAKE_C_FLAGS_COVERAGE_INIT
|
||||
"-Og -g3 -fno-omit-frame-pointer -fprofile-abs-path -fprofile-arcs -ftest-coverage --coverage"
|
||||
CACHE STRING "C flags for code coverage builds")
|
||||
set(CMAKE_CXX_FLAGS_COVERAGE_INIT
|
||||
"-Og -g3 -fno-omit-frame-pointer -fprofile-abs-path -fprofile-arcs -ftest-coverage --coverage"
|
||||
CACHE STRING "C++ flags for code coverage builds")
|
||||
|
||||
set(CMAKE_C_FLAGS_COVERAGE
|
||||
"${CMAKE_C_FLAGS_COVERAGE_INIT}"
|
||||
CACHE STRING "C flags for code coverage builds")
|
||||
set(CMAKE_CXX_FLAGS_COVERAGE
|
||||
"${CMAKE_CXX_FLAGS_COVERAGE_INIT}"
|
||||
CACHE STRING "C++ flags for code coverage builds")
|
||||
|
||||
# Build is not supported on Windows plaform
|
||||
if(WIN32)
|
||||
@@ -49,18 +63,24 @@ endif()
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
add_compile_options(-Wall)
|
||||
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
set(CMAKE_BUILD_RPATH
|
||||
"${PROJECT_BINARY_DIR}:${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}")
|
||||
set(CMAKE_BUILD_RPATH_USE_ORIGIN ON)
|
||||
set(CMAKE_SKIP_BUILD_RPATH OFF)
|
||||
|
||||
# Adding default path cmake modules
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
|
||||
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules")
|
||||
|
||||
# Set build environment
|
||||
include(utils)
|
||||
include(env)
|
||||
include(rocprofiler_options)
|
||||
include(rocprofiler_utils)
|
||||
include(rocprofiler_env)
|
||||
include(rocprofiler_formatting)
|
||||
include(rocprofiler_linting)
|
||||
|
||||
# Setup the package version.
|
||||
get_version("1.0.0")
|
||||
rocprofiler_get_version("1.0.0")
|
||||
message("-- LIB-VERSION: ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
||||
|
||||
set(BUILD_VERSION_MAJOR ${VERSION_MAJOR})
|
||||
@@ -162,22 +182,32 @@ if(USE_PROF_API EQUAL 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
enable_testing()
|
||||
|
||||
# Temporarily for CI to work
|
||||
set(ROCPROFILER_BUILD_TESTS ON)
|
||||
set(ROCPROFILER_BUILD_CI ON)
|
||||
|
||||
if(ROCPROFILER_BUILD_CI)
|
||||
include(CTest)
|
||||
endif()
|
||||
|
||||
# Build libraries
|
||||
add_subdirectory(src)
|
||||
|
||||
if(${LIBRARY_TYPE} STREQUAL SHARED)
|
||||
# Build samples
|
||||
add_subdirectory(samples)
|
||||
|
||||
# Build tests
|
||||
add_subdirectory(tests-v2)
|
||||
endif()
|
||||
|
||||
# Build Plugins
|
||||
add_subdirectory(plugin)
|
||||
|
||||
# Build tests
|
||||
add_subdirectory(${TEST_DIR} ${PROJECT_BINARY_DIR}/test)
|
||||
if(ROCPROFILER_BUILD_SAMPLES)
|
||||
# Build samples
|
||||
add_subdirectory(samples)
|
||||
endif()
|
||||
|
||||
if(ROCPROFILER_BUILD_TESTS)
|
||||
# Build tests
|
||||
add_subdirectory(test)
|
||||
add_subdirectory(tests-v2)
|
||||
endif()
|
||||
|
||||
# Installation and packaging
|
||||
set(DEST_NAME ${ROCPROFILER_NAME})
|
||||
@@ -241,27 +271,12 @@ install(
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${ROCPROFILER_NAME}
|
||||
COMPONENT runtime)
|
||||
|
||||
# librocprof-tool.so
|
||||
install(
|
||||
FILES ${PROJECT_BINARY_DIR}/test/librocprof-tool.so
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${ROCPROFILER_NAME}
|
||||
COMPONENT runtime)
|
||||
|
||||
install(
|
||||
FILES ${PROJECT_BINARY_DIR}/test/librocprof-tool.so
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${ROCPROFILER_NAME}
|
||||
COMPONENT asan)
|
||||
|
||||
install(
|
||||
FILES ${PROJECT_BINARY_DIR}/test/rocprof-ctrl
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${ROCPROFILER_NAME}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ
|
||||
WORLD_EXECUTE
|
||||
COMPONENT runtime)
|
||||
|
||||
# File reorg Backward compatibility
|
||||
option(FILE_REORG_BACKWARD_COMPATIBILITY
|
||||
"Enable File Reorg with backward compatibility" OFF)
|
||||
# File reorg backward compatibility for non ASAN packaging
|
||||
if(NOT ENABLE_ASAN_PACKAGING)
|
||||
# File reorg Backward compatibility
|
||||
option(FILE_REORG_BACKWARD_COMPATIBILITY
|
||||
"Enable File Reorg with backward compatibility" ON)
|
||||
endif()
|
||||
|
||||
if(FILE_REORG_BACKWARD_COMPATIBILITY)
|
||||
# To enabe/disable #error in wrapper header files
|
||||
|
||||
+116
-15
@@ -83,19 +83,24 @@ export ROCPROFILER_TRACE=1
|
||||
## Supported AMD GPU Architectures (V1)
|
||||
|
||||
The following AMD GPU architectures are supported with ROCprofiler V1:
|
||||
|
||||
|
||||
- gfx8 (Fiji/Ellesmere)
|
||||
- gfx900 (AMD Vega 10)
|
||||
- gfx906 (AMD Vega 7nm also referred to as AMD Vega 20)
|
||||
- gfx908 (AMD Instinct™ MI100 accelerator)
|
||||
- gfx90a (AMD Instinct™ MI200)
|
||||
|
||||
***
|
||||
Note: ROCProfiler V1 tool usage documentation is available at [Click Here](doc/rocprof_tool.md)
|
||||
***
|
||||
|
||||
## ROCProfiler V2
|
||||
|
||||
ROCProfilerV2 is a newly developed design for AMD’s tooling infrastructure that provides a hardware specific low level performance analysis interface for profiling of GPU compute applications.
|
||||
The first API library version for ROCProfiler v2 is 9.0.0
|
||||
|
||||
### Note: ROCProfilerV2 is currently considered a beta version and is subject to change in future releases
|
||||
***
|
||||
Note: ROCProfilerV2 is currently considered a beta version and is subject to change in future releases
|
||||
***
|
||||
|
||||
### ROCProfilerV2 Modules
|
||||
|
||||
@@ -288,14 +293,6 @@ Usage:
|
||||
rocprofv2 --plugin perfetto --hsa-trace -d output_dir <app_relative_path> # -d is optional, but can be used to define the directory output for output results
|
||||
```
|
||||
|
||||
Both the output directory and filenames allow for simple environment variable substitution via a special syntax %q{var} -> $var, e.g.:
|
||||
|
||||
```bash
|
||||
export var="FOO"
|
||||
rocprofv2 --plugin perfetto -o file_%q{var}_name
|
||||
# Generates file names: file_FOO_name[...].pftrace
|
||||
```
|
||||
|
||||
- CTF plugin: Outputs the data in ctf format(a binary trace format). CTF binary output can be viewed using TraceCompass or babeltrace.
|
||||
Usage:
|
||||
|
||||
@@ -313,7 +310,7 @@ Tool used to collect fine-grained hardware metrics. Provides ISA-level instructi
|
||||
rocprofv2 -i input.txt --plugin att <app_assembly_file> --mode network <app_relative_path>
|
||||
```
|
||||
|
||||
- app_assembly_file:
|
||||
- app_assembly_file:
|
||||
On ROCm 6.0, ATT enables automatic capture of the ISA during kernel execution, and does not require recompiling. It is recommeneded to leave at "auto".
|
||||
- app_relative_path
|
||||
Path for the running application
|
||||
@@ -356,7 +353,7 @@ Tool used to collect fine-grained hardware metrics. Provides ISA-level instructi
|
||||
- att: TARGET_CU=1 //or some other CU [0,15] - WGP for Navi [0,8]
|
||||
- SE_MASK=0x1 // bitmask of shader engines. The fewer, the easier on the hardware. Default enables 1 out of 4 shader engines.
|
||||
- SIMD_MASK=0xF // GFX9: bitmask of SIMDs. Navi: SIMD Index [0-3].
|
||||
- DISPATCH=ID,RN // collect trace only for the given dispatch_ID and MPI rank RN. RN is optional and ignored for single processes. Multiple line with varying combinations of RN and ID can be added.
|
||||
- DISPATCH=ID,RN // collect trace only for the given dispatch_ID and MPI rank RN. RN ignored for single processes. Multiple lines with varying combinations of RN and ID can be added.
|
||||
- KERNEL=kernname // Profile only kernels containing the string kernname (c++ mangled name). Multiple lines can be added.
|
||||
- PERFCOUNTERS_COL_PERIOD=0x3 // Multiplier period for counter collection [0~31]. 0=fastest (usually once every 16 cycles). GFX9 only. Counters will be shown in a graph over time in the browser UI.
|
||||
- PERFCOUNTER=counter_name // Add a SQ counter to be collected with ATT; period defined by PERFCOUNTERS_COL_PERIOD. GFX9 only.
|
||||
@@ -434,7 +431,105 @@ A device profiling session allows the user to profile the GPU device for counter
|
||||
|
||||
### Session Support
|
||||
|
||||
A session is a unique identifier for a profiling/tracing/pc-sampling task. A ROCProfilerV2 Session has enough information about what needs to be collected or traced and it allows the user to start/stop profiling/tracing whenever required. More details on the API can be found in the API specification documentation that can be installed using rocprofiler-doc package. Samples also can be found for how to use the API in samples directory.
|
||||
A session is a unique identifier for a profiling/tracing/pc-sampling task. A ROCProfilerV2 Session has enough information about what needs to be collected or traced and it allows the user to start/stop profiling/tracing whenever required. More details on the API can be found in the API specification documentation that can be installed using rocprofiler-doc package. Samples also can be found for how to use the API in samples directory.
|
||||
|
||||
- #### (ATT) Advanced Thread Trace
|
||||
|
||||
Tool used to collect fine-grained hardware metrics. Provides ISA-level instruction hotspot analysis via hardware tracing.
|
||||
|
||||
```bash
|
||||
# ATT(Advanced Thread Trace) needs some preparation before running.
|
||||
|
||||
# 1. Make sure to generate the assembly file for application by executing the following before compiling your HIP Application
|
||||
# This can be achieved globally by following environment variable
|
||||
export HIPCC_COMPILE_FLAGS_APPEND="--save-temps -g"
|
||||
# Similarly, the --save-temps -g flags can be added per file for better ISA generation control.
|
||||
|
||||
# 2. Install plugin package
|
||||
# see Plugin Support section for installation
|
||||
|
||||
# 3. Run the following to view the trace
|
||||
# Att-specific options must come right after the assembly file
|
||||
rocprofv2 -i input.txt --plugin att <app_assembly_file> --mode network <app_relative_path>
|
||||
```
|
||||
|
||||
```bash
|
||||
# Example for vectoradd on navi31.
|
||||
# Special attention to gfx1100.s==navi31 in the ISA file name.
|
||||
# Use gfx1030 for navi21, gfx90a for MI200 and gfx940 for MI300
|
||||
hipcc -g --save-temps vectoradd_hip.cpp -o vectoradd_hip.exe
|
||||
rocprofv2 -i input.txt --plugin att vectoradd_hip-hip-amdgcn-amd-amdhsa-gfx1100.s --mode network ./vectoradd_hip.exe
|
||||
# Then open the browser at http://localhost:8000
|
||||
# The ISA can also be obtained from llvm/roc objdump, however, annotations will be different
|
||||
```
|
||||
|
||||
For MPI or very long applications, we recommend to run collection, and later run the parser with already collected data:
|
||||
|
||||
```bash
|
||||
# Run only collection: The assembly file is not used. Use mpirun [...] rocprofv2 [...] if needed.
|
||||
rocprofv2 -i input.txt --plugin att none ./vectoradd_hip.exe
|
||||
# Remove the binary/application: Only runs the parser.
|
||||
rocprofv2 -i input.txt --plugin att vectoradd_hip-hip-amdgcn-amd-amdhsa-gfx1100.s --mode network
|
||||
```
|
||||
|
||||
- ##### app_assembly_file_relative_path
|
||||
|
||||
AMDGCN ISA file with .s extension generated in 1st step
|
||||
|
||||
- ##### app_relative_path
|
||||
|
||||
Path for the running application
|
||||
|
||||
- ##### ATT plugin optional parameters
|
||||
|
||||
- --depth [n]: How many waves per slot to parse (maximum).
|
||||
- --mpi [proc]: Parse with this many mpi processes, for greater analysis speed. Does not change results. Requires mpi4py.
|
||||
- --att_kernel "filename": Kernel filename to use (instead of ATT asking which one to use).
|
||||
- --trace_file "files": glob (wildcards allowed) of traces files to parse. Requires quotes for use with wildcards.
|
||||
- --mode [network, file, off (default)]
|
||||
|
||||
- ##### network
|
||||
|
||||
Opens the server with the browser UI.
|
||||
att needs 2 ports available (e.g. 8000, 18000). There is an option (default: --ports "8000,18000") to change these.
|
||||
In case rocprofv2 is running on a different machine, use port forwarding "ssh -L 8000:localhost:8000 <user@IP>" so the browser can be used locally. For docker, use --network=host --ipc=host -p8000:8000 -p18000:18000
|
||||
|
||||
- ##### file
|
||||
|
||||
Dumps the analyzed json files to disk for vieweing at a later time. Run python3 httpserver.py from within the generated ui/ folder to view the trace, similarly to network mode. The folder can be copied to another machine, and will run without rocm.
|
||||
|
||||
- ##### off
|
||||
|
||||
Runs trace collection but not analysis, so it can be analyzed at a later time. Run rocprofv2 ATT [network, file] with the same parameters, removing the application binary, to analyze previously generated traces. We recommend not setting the mode when collecting for MPI applications.
|
||||
|
||||
- ##### input.txt
|
||||
|
||||
Required. Used to select specific compute units and other trace parameters.
|
||||
For first time users, we recommend compiling and running vectorAdd with
|
||||
|
||||
```bash
|
||||
att: TARGET_CU=1
|
||||
SE_MASK=0x1
|
||||
SIMD_MASK=0x3
|
||||
```
|
||||
|
||||
and histogram with
|
||||
|
||||
```bash
|
||||
att: TARGET_CU=0
|
||||
SE_MASK=0xFF
|
||||
SIMD_MASK=0xF // 0xF for GFX9, SIMD_MASK=0 for Navi
|
||||
```
|
||||
|
||||
Possible contents:
|
||||
- att: TARGET_CU=1 //or some other CU [0,15] - WGP for Navi [0,8]
|
||||
- SE_MASK=0x1 // bitmask of shader engines. The fewer, the easier on the hardware. Default enables 1 out of 4 shader engines.
|
||||
- SIMD_MASK=0xF // GFX9: bitmask of SIMDs. Navi: SIMD Index [0-3].
|
||||
- DISPATCH=ID,RN // collect trace only for the given dispatch_ID and MPI rank RN. RN is optional and ignored for single processes. Multiple lines with varying combinations of RN and ID can be added.
|
||||
- KERNEL=kernname // Profile only kernels containing the string kernname (c++ mangled name). Multiple lines can be added.
|
||||
- PERFCOUNTERS_COL_PERIOD=0x3 // Multiplier period for counter collection [0~31]. 0=fastest (usually once every 16 cycles). GFX9 only. Counters will be shown in a graph over time in the browser UI.
|
||||
- PERFCOUNTER=counter_name // Add a SQ counter to be collected with ATT; period defined by PERFCOUNTERS_COL_PERIOD. GFX9 only.
|
||||
- BUFFER_SIZE=[size] // Sets size of the ATT buffer collection, per dispatch, in megabytes (shared among all shader engines).
|
||||
|
||||
## Tests
|
||||
|
||||
@@ -476,6 +571,12 @@ rocprofiler-tests-9.0.0-local.x86_64.rpm
|
||||
rocprofv2 -t
|
||||
```
|
||||
|
||||
OR
|
||||
|
||||
```bash
|
||||
ctest
|
||||
```
|
||||
|
||||
### Guidelines for adding new tests
|
||||
|
||||
- Prefer to enhance an existing test as opposed to writing a new one. Tests have overhead to start and many small tests spend precious test time on startup and initialization issues.
|
||||
@@ -561,7 +662,7 @@ samples can be run as independent executables once installed
|
||||
|
||||
## Support
|
||||
|
||||
Please report in the Github Issues
|
||||
Please report in the Github Issues.
|
||||
|
||||
## Limitations
|
||||
|
||||
|
||||
@@ -22,19 +22,23 @@
|
||||
|
||||
import numpy as np
|
||||
import sys
|
||||
BYTE_MAP = [str(k) for k in range(10)] + ['a', 'b', 'c', 'd', 'e', 'f']
|
||||
|
||||
BYTE_MAP = [str(k) for k in range(10)] + ["a", "b", "c", "d", "e", "f"]
|
||||
|
||||
|
||||
def map8(c):
|
||||
return BYTE_MAP[(c//16)%16]+BYTE_MAP[c%16]
|
||||
return BYTE_MAP[(c // 16) % 16] + BYTE_MAP[c % 16]
|
||||
|
||||
|
||||
def map16(c):
|
||||
return map8(c>>8)+map8(c)
|
||||
return map8(c >> 8) + map8(c)
|
||||
|
||||
|
||||
in_filename = sys.argv[1]
|
||||
out_filename = in_filename.split('.att')[0]+'.out'
|
||||
out_filename = in_filename.split(".att")[0] + ".out"
|
||||
|
||||
in_bytes = np.fromfile(in_filename, dtype=np.uint16)
|
||||
out_bytes = [map16(c)+'\n' for c in in_bytes]
|
||||
out_bytes = [map16(c) + "\n" for c in in_bytes]
|
||||
|
||||
with open(out_filename, 'w') as f:
|
||||
with open(out_filename, "w") as f:
|
||||
[f.write(b) for b in out_bytes]
|
||||
|
||||
@@ -23,51 +23,85 @@
|
||||
import os
|
||||
from sqlitedb import SQLiteDB
|
||||
|
||||
def gen_message(outfile):
|
||||
if outfile != '':
|
||||
print("File '" + outfile + "' is generating")
|
||||
|
||||
def post_process_data(db, table_name, outfile = ''):
|
||||
# db.add_data_column('A', 'DispDurNs', 'INTEGER', 'BeginNs - DispatchNs')
|
||||
# db.add_data_column('A', 'ComplDurNs', 'INTEGER', 'CompleteNs - EndNs')
|
||||
# db.add_data_column('A', 'TotalDurNs', 'INTEGER', 'CompleteNs - DispatchNs')
|
||||
# db.add_data_column(table_name, 'TimeNs', 'INTEGER', 'BeginNs - %d' % start_ns)
|
||||
db.add_data_column(table_name, 'DurationNs', 'INTEGER', 'EndNs - BeginNs')
|
||||
if outfile != '': db.dump_csv(table_name, outfile)
|
||||
gen_message(outfile)
|
||||
def gen_message(outfile):
|
||||
if outfile != "":
|
||||
print("File '" + outfile + "' is generating")
|
||||
|
||||
|
||||
def post_process_data(db, table_name, outfile=""):
|
||||
# db.add_data_column('A', 'DispDurNs', 'INTEGER', 'BeginNs - DispatchNs')
|
||||
# db.add_data_column('A', 'ComplDurNs', 'INTEGER', 'CompleteNs - EndNs')
|
||||
# db.add_data_column('A', 'TotalDurNs', 'INTEGER', 'CompleteNs - DispatchNs')
|
||||
# db.add_data_column(table_name, 'TimeNs', 'INTEGER', 'BeginNs - %d' % start_ns)
|
||||
db.add_data_column(table_name, "DurationNs", "INTEGER", "EndNs - BeginNs")
|
||||
if outfile != "":
|
||||
db.dump_csv(table_name, outfile)
|
||||
gen_message(outfile)
|
||||
|
||||
|
||||
def gen_data_bins(db, outfile):
|
||||
db.execute('create view C as select Name, Calls, TotalDurationNs, TotalDurationNs/Calls as AverageNs, TotalDurationNs*100.0/(select sum(TotalDurationNs) from %s) as Percentage from %s order by TotalDurationNs desc;' % ('B', 'B'));
|
||||
db.dump_csv('C', outfile)
|
||||
db.execute('DROP VIEW C')
|
||||
db.execute(
|
||||
"create view C as select Name, Calls, TotalDurationNs, TotalDurationNs/Calls as AverageNs, TotalDurationNs*100.0/(select sum(TotalDurationNs) from %s) as Percentage from %s order by TotalDurationNs desc;"
|
||||
% ("B", "B")
|
||||
)
|
||||
db.dump_csv("C", outfile)
|
||||
db.execute("DROP VIEW C")
|
||||
|
||||
|
||||
def gen_table_bins(db, table, outfile, name_var, dur_ns_var):
|
||||
db.execute('create view B as select (%s) as Name, count(%s) as Calls, sum(%s) as TotalDurationNs from %s group by %s' % (name_var, name_var, dur_ns_var, table, name_var))
|
||||
gen_data_bins(db, outfile)
|
||||
db.execute('DROP VIEW B')
|
||||
gen_message(outfile)
|
||||
db.execute(
|
||||
"create view B as select (%s) as Name, count(%s) as Calls, sum(%s) as TotalDurationNs from %s group by %s"
|
||||
% (name_var, name_var, dur_ns_var, table, name_var)
|
||||
)
|
||||
gen_data_bins(db, outfile)
|
||||
db.execute("DROP VIEW B")
|
||||
gen_message(outfile)
|
||||
|
||||
|
||||
def gen_api_json_trace(db, table, start_ns, outfile):
|
||||
db.execute('create view B as select "Index", Name as name, __section as pid, __lane as tid, ((BeginNs - %d)/1000) as ts, (DurationNs/1000) as dur from %s;' % (start_ns, table));
|
||||
db.dump_json('B', table, outfile)
|
||||
db.execute('DROP VIEW B')
|
||||
gen_message(outfile)
|
||||
db.execute(
|
||||
'create view B as select "Index", Name as name, __section as pid, __lane as tid, ((BeginNs - %d)/1000) as ts, (DurationNs/1000) as dur from %s;'
|
||||
% (start_ns, table)
|
||||
)
|
||||
db.dump_json("B", table, outfile)
|
||||
db.execute("DROP VIEW B")
|
||||
gen_message(outfile)
|
||||
|
||||
|
||||
def gen_ext_json_trace(db, table, start_ns, outfile):
|
||||
db.execute('create view B as select Name as name, __section as pid, __lane as tid, ((BeginNs - %d)/1000) as ts, ((EndNs - BeginNs)/1000) as dur from %s;' % (start_ns, table));
|
||||
db.dump_json('B', table, outfile)
|
||||
db.execute('DROP VIEW B')
|
||||
gen_message(outfile)
|
||||
db.execute(
|
||||
"create view B as select Name as name, __section as pid, __lane as tid, ((BeginNs - %d)/1000) as ts, ((EndNs - BeginNs)/1000) as dur from %s;"
|
||||
% (start_ns, table)
|
||||
)
|
||||
db.dump_json("B", table, outfile)
|
||||
db.execute("DROP VIEW B")
|
||||
gen_message(outfile)
|
||||
|
||||
|
||||
def gen_ops_json_trace(db, table, base_pid, start_ns, outfile):
|
||||
db.execute('create view B as select "Index", "%s" as name, ("dev-id" + %d) as pid, __lane as tid, ((BeginNs - %d)/1000) as ts, (DurationNs/1000) as dur from %s;' % ('roctx-range' if 'ROCP_RENAME_KERNEL' in os.environ else 'Name',base_pid, start_ns, table));
|
||||
db.dump_json('B', table, outfile)
|
||||
db.execute('DROP VIEW B')
|
||||
gen_message(outfile)
|
||||
db.execute(
|
||||
'create view B as select "Index", "%s" as name, ("dev-id" + %d) as pid, __lane as tid, ((BeginNs - %d)/1000) as ts, (DurationNs/1000) as dur from %s;'
|
||||
% (
|
||||
"roctx-range" if "ROCP_RENAME_KERNEL" in os.environ else "Name",
|
||||
base_pid,
|
||||
start_ns,
|
||||
table,
|
||||
)
|
||||
)
|
||||
db.dump_json("B", table, outfile)
|
||||
db.execute("DROP VIEW B")
|
||||
gen_message(outfile)
|
||||
|
||||
|
||||
def gen_kernel_json_trace(db, table, base_pid, start_ns, outfile):
|
||||
db.execute('create view B as select "Index", KernelName as name, ("gpu-id" + %d) as pid, tid, ((BeginNs - %d)/1000) as ts, (DurationNs/1000) as dur from %s;' % (base_pid, start_ns, table));
|
||||
db.dump_json('B', table, outfile)
|
||||
db.execute('DROP VIEW B')
|
||||
gen_message(outfile)
|
||||
db.execute(
|
||||
'create view B as select "Index", KernelName as name, ("gpu-id" + %d) as pid, tid, ((BeginNs - %d)/1000) as ts, (DurationNs/1000) as dur from %s;'
|
||||
% (base_pid, start_ns, table)
|
||||
)
|
||||
db.dump_json("B", table, outfile)
|
||||
db.execute("DROP VIEW B")
|
||||
gen_message(outfile)
|
||||
|
||||
|
||||
##############################################################################################
|
||||
|
||||
+437
-341
@@ -23,368 +23,464 @@
|
||||
import sys, os, re
|
||||
from sqlitedb import SQLiteDB
|
||||
|
||||
pinned = ['hipMallocHost', 'hipHostMalloc', 'hipHostAlloc']
|
||||
ondevice = ['hipMalloc', 'hipMallocPitch', 'hipMallocArray', 'hipMalloc3DArray', 'hsa_amd_memory_pool_allocate']
|
||||
|
||||
mm_table_descr = [
|
||||
['BeginNs', 'EndNs', 'pid', 'tid', 'Name', 'Direction', 'SrcType', 'DstType', 'Size', 'Async'],
|
||||
{'BeginNs':'INTEGER', 'EndNs':'INTEGER', 'pid':'INTEGER', 'tid':'INTEGER', 'Name':'TEXT', 'Direction':'TEXT', 'SrcType':'TEXT', 'DstType':'TEXT', 'Size':'INTEGER', 'Async':'TEXT'}
|
||||
pinned = ["hipMallocHost", "hipHostMalloc", "hipHostAlloc"]
|
||||
ondevice = [
|
||||
"hipMalloc",
|
||||
"hipMallocPitch",
|
||||
"hipMallocArray",
|
||||
"hipMalloc3DArray",
|
||||
"hsa_amd_memory_pool_allocate",
|
||||
]
|
||||
|
||||
def fatal(msg):
|
||||
sys.stderr.write(sys.argv[0] + ": " + msg + "\n");
|
||||
sys.exit(1)
|
||||
mm_table_descr = [
|
||||
[
|
||||
"BeginNs",
|
||||
"EndNs",
|
||||
"pid",
|
||||
"tid",
|
||||
"Name",
|
||||
"Direction",
|
||||
"SrcType",
|
||||
"DstType",
|
||||
"Size",
|
||||
"Async",
|
||||
],
|
||||
{
|
||||
"BeginNs": "INTEGER",
|
||||
"EndNs": "INTEGER",
|
||||
"pid": "INTEGER",
|
||||
"tid": "INTEGER",
|
||||
"Name": "TEXT",
|
||||
"Direction": "TEXT",
|
||||
"SrcType": "TEXT",
|
||||
"DstType": "TEXT",
|
||||
"Size": "INTEGER",
|
||||
"Async": "TEXT",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def fatal(msg):
|
||||
sys.stderr.write(sys.argv[0] + ": " + msg + "\n")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
DELIM = ","
|
||||
|
||||
DELIM = ','
|
||||
|
||||
# Mem copy manager class
|
||||
class MemManager:
|
||||
def __init__(self, db, indir):
|
||||
self.db = db
|
||||
self.allocations = {}
|
||||
self.hsa_agent_types = {}
|
||||
self.memcopies = {}
|
||||
self.filename = ""
|
||||
self.fd = 0
|
||||
self.parse_hsa_handles(indir + "/" + "hsa_handles.txt")
|
||||
|
||||
def __init__(self, db, indir):
|
||||
self.db = db
|
||||
self.allocations = {}
|
||||
self.hsa_agent_types = {}
|
||||
self.memcopies = {}
|
||||
self.filename = ''
|
||||
self.fd = 0
|
||||
self.parse_hsa_handles(indir + '/' + 'hsa_handles.txt');
|
||||
def __del__(self):
|
||||
if self.fd != 0:
|
||||
self.fd.close()
|
||||
|
||||
def __del__(self):
|
||||
if self.fd != 0: self.fd.close()
|
||||
# Parsing the mapping of HSA agent and memory pool handles
|
||||
def parse_hsa_handles(self, infile):
|
||||
if os.path.exists(infile):
|
||||
inp = open(infile, "r")
|
||||
cpu_agent_ptrn = re.compile(r"(0x[0-9a-fA-F]+) agent cpu")
|
||||
gpu_agent_ptrn = re.compile(r"(0x[0-9a-fA-F]+) agent gpu")
|
||||
for line in inp.readlines():
|
||||
m_cpu = cpu_agent_ptrn.match(line)
|
||||
if m_cpu:
|
||||
self.hsa_agent_types[str(int(m_cpu.group(1), 16))] = 0 # "cpu"
|
||||
m_gpu = gpu_agent_ptrn.match(line)
|
||||
if m_gpu:
|
||||
self.hsa_agent_types[str(int(m_gpu.group(1), 16))] = 1 # "gpu"
|
||||
inp.close()
|
||||
|
||||
# Parsing the mapping of HSA agent and memory pool handles
|
||||
def parse_hsa_handles(self, infile):
|
||||
if os.path.exists(infile):
|
||||
inp = open(infile, 'r')
|
||||
cpu_agent_ptrn = re.compile(r'(0x[0-9a-fA-F]+) agent cpu')
|
||||
gpu_agent_ptrn = re.compile(r'(0x[0-9a-fA-F]+) agent gpu')
|
||||
for line in inp.readlines():
|
||||
m_cpu = cpu_agent_ptrn.match(line)
|
||||
if m_cpu:
|
||||
self.hsa_agent_types[str(int(m_cpu.group(1),16))] = 0 # "cpu"
|
||||
m_gpu = gpu_agent_ptrn.match(line)
|
||||
if m_gpu:
|
||||
self.hsa_agent_types[str(int(m_gpu.group(1),16))] = 1 # "gpu"
|
||||
inp.close()
|
||||
# register alloc and memcpy API calls
|
||||
# ['BeginNs', 'EndNs', 'pid', 'tid', 'Name', 'args', 'Index', 'Data'],
|
||||
def register_api(self, rec_vals):
|
||||
res = ""
|
||||
record_name = rec_vals[4] # 'Name'
|
||||
record_args = rec_vals[5] # 'args'
|
||||
malloc_ptrn = re.compile(r"hip.*Malloc|hsa_amd_memory_pool_allocate")
|
||||
mcopy_ptrn = re.compile(r"hipMemcpy|hsa_amd_memory_async_copy")
|
||||
|
||||
# register alloc and memcpy API calls
|
||||
# ['BeginNs', 'EndNs', 'pid', 'tid', 'Name', 'args', 'Index', 'Data'],
|
||||
def register_api(self, rec_vals):
|
||||
res = ''
|
||||
record_name = rec_vals[4] # 'Name'
|
||||
record_args = rec_vals[5] # 'args'
|
||||
malloc_ptrn = re.compile(r'hip.*Malloc|hsa_amd_memory_pool_allocate')
|
||||
mcopy_ptrn = re.compile(r'hipMemcpy|hsa_amd_memory_async_copy')
|
||||
if malloc_ptrn.match(record_name):
|
||||
self.add_allocation(record_name, record_args)
|
||||
elif mcopy_ptrn.match(record_name):
|
||||
res = self.add_memcpy(rec_vals)
|
||||
|
||||
if malloc_ptrn.match(record_name):
|
||||
self.add_allocation(record_name, record_args)
|
||||
elif mcopy_ptrn.match(record_name):
|
||||
res = self.add_memcpy(rec_vals)
|
||||
return res
|
||||
|
||||
return res
|
||||
# register memcpy asynchronous copy
|
||||
# ['BeginNs', 'EndNs', 'Name', 'pid', 'tid', 'Index', ...
|
||||
def register_copy(self, rec_vals):
|
||||
data = ""
|
||||
event = rec_vals[2] # 'Name'
|
||||
procid = rec_vals[3] # 'pid'
|
||||
recordid = rec_vals[5] # 'Index'
|
||||
size_ptrn = re.compile(DELIM + "Size=(\d+)" + DELIM)
|
||||
# query syncronous memcopy API record
|
||||
key = (recordid, procid, 0)
|
||||
if key in self.memcopies:
|
||||
data = self.memcopies[key]
|
||||
|
||||
# query asyncronous memcopy API record
|
||||
key = (recordid, procid, 1)
|
||||
if key in self.memcopies:
|
||||
if data != "":
|
||||
fatal("register_copy: corrupted record sync/async")
|
||||
async_copy_start_time = rec_vals[0]
|
||||
async_copy_end_time = rec_vals[1]
|
||||
|
||||
# register memcpy asynchronous copy
|
||||
# ['BeginNs', 'EndNs', 'Name', 'pid', 'tid', 'Index', ...
|
||||
def register_copy(self, rec_vals):
|
||||
data = ''
|
||||
event = rec_vals[2] # 'Name'
|
||||
procid = rec_vals[3] # 'pid'
|
||||
recordid = rec_vals[5] # 'Index'
|
||||
size_ptrn = re.compile(DELIM + 'Size=(\d+)' + DELIM)
|
||||
# query syncronous memcopy API record
|
||||
key = (recordid, procid, 0)
|
||||
if key in self.memcopies:
|
||||
data = self.memcopies[key]
|
||||
tid = rec_vals[4]
|
||||
copy_line_header = (
|
||||
str(async_copy_start_time)
|
||||
+ DELIM
|
||||
+ str(async_copy_end_time)
|
||||
+ DELIM
|
||||
+ str(procid)
|
||||
+ DELIM
|
||||
+ str(tid)
|
||||
)
|
||||
copy_line_footer = "Async=" + str(1)
|
||||
data = copy_line_header + self.memcopies[key] + copy_line_footer
|
||||
self.memcopies[key] = data
|
||||
|
||||
# query asyncronous memcopy API record
|
||||
key = (recordid, procid, 1)
|
||||
if key in self.memcopies:
|
||||
if data != '': fatal('register_copy: corrupted record sync/async')
|
||||
async_copy_start_time = rec_vals[0]
|
||||
async_copy_end_time = rec_vals[1]
|
||||
return data
|
||||
|
||||
tid = rec_vals[4]
|
||||
copy_line_header = str(async_copy_start_time) + DELIM + str(async_copy_end_time) + DELIM + str(procid) + DELIM + str(tid)
|
||||
copy_line_footer = 'Async=' + str(1)
|
||||
data = copy_line_header + self.memcopies[key] + copy_line_footer
|
||||
self.memcopies[key] = data
|
||||
# register memcpy asynchronous activity
|
||||
# rec_vals: ['BeginNs', 'EndNs', 'dev-id', 'queue-id', 'Name', 'pid', 'tid', 'Index', 'Data', ...
|
||||
def register_activity(self, rec_vals):
|
||||
data = ""
|
||||
procid = rec_vals[5] # 'pid'
|
||||
recordid = rec_vals[7] # 'Index'
|
||||
|
||||
return data
|
||||
# query syncronous memcopy API record
|
||||
key = (recordid, procid, 0)
|
||||
if key in self.memcopies:
|
||||
data = self.memcopies[key]
|
||||
|
||||
# register memcpy asynchronous activity
|
||||
# rec_vals: ['BeginNs', 'EndNs', 'dev-id', 'queue-id', 'Name', 'pid', 'tid', 'Index', 'Data', ...
|
||||
def register_activity(self, rec_vals):
|
||||
data = ''
|
||||
procid = rec_vals[5] # 'pid'
|
||||
recordid = rec_vals[7] # 'Index'
|
||||
# query asyncronous memcopy API record
|
||||
key = (recordid, procid, 1)
|
||||
if key in self.memcopies:
|
||||
if data != "":
|
||||
fatal("register_activity: corrupted record sync/async")
|
||||
|
||||
# query syncronous memcopy API record
|
||||
key = (recordid, procid, 0)
|
||||
if key in self.memcopies:
|
||||
data = self.memcopies[key]
|
||||
async_copy_start_time = rec_vals[0]
|
||||
async_copy_end_time = rec_vals[1]
|
||||
|
||||
# query asyncronous memcopy API record
|
||||
key = (recordid, procid, 1)
|
||||
if key in self.memcopies:
|
||||
if data != '': fatal('register_activity: corrupted record sync/async')
|
||||
tid = rec_vals[6]
|
||||
copy_line_header = (
|
||||
str(async_copy_start_time)
|
||||
+ DELIM
|
||||
+ str(async_copy_end_time)
|
||||
+ DELIM
|
||||
+ str(procid)
|
||||
+ DELIM
|
||||
+ str(tid)
|
||||
)
|
||||
copy_line_footer = "Async=" + str(1)
|
||||
data = copy_line_header + self.memcopies[key] + copy_line_footer
|
||||
self.memcopies[key] = data
|
||||
|
||||
async_copy_start_time = rec_vals[0]
|
||||
async_copy_end_time = rec_vals[1]
|
||||
return data
|
||||
|
||||
tid = rec_vals[6]
|
||||
copy_line_header = str(async_copy_start_time) + DELIM + str(async_copy_end_time) + DELIM + str(procid) + DELIM + str(tid)
|
||||
copy_line_footer = 'Async=' + str(1)
|
||||
data = copy_line_header + self.memcopies[key] + copy_line_footer
|
||||
self.memcopies[key] = data
|
||||
|
||||
return data
|
||||
|
||||
# add allocation to map
|
||||
def add_allocation(self, event, args):
|
||||
choice = 0
|
||||
if event == "hipMallocPitch":
|
||||
malloc_args_ptrn = re.compile(r'\(ptr\((.*)\) width\((.*)\) height\((.*)\)\)')
|
||||
choice = 1
|
||||
elif event == "hipMallocArray":
|
||||
malloc_args_ptrn = re.compile(r'\(array\((.*)\) width\((.*)\) height\((.*)\)\)')
|
||||
choice = 1
|
||||
elif event == "hipMalloc3DArray":
|
||||
malloc_args_ptrn = re.compile(r'\(array\((.*)\) width\((.*)\) height\((.*)\) depth\((.*)\)\)')
|
||||
choice = 2
|
||||
elif event == "hsa_amd_memory_pool_allocate":
|
||||
#({handle=25291264}, 40, 0, 0x7ffc4c7bf1b0)
|
||||
malloc_args_ptrn = re.compile(r'\({handle=\d+}, (\d+), \d+, (0x[0-9a-fA-F]+)\)')
|
||||
choice = 4
|
||||
else:
|
||||
#(ptr(0x7f3407000000) size(800000000) flags(0))
|
||||
malloc_args_ptrn = re.compile(r'\(ptr\((.*)\) size\((.*)\) .*\)')
|
||||
choice = 3
|
||||
m = malloc_args_ptrn.match(args)
|
||||
if m:
|
||||
if choice == 4:
|
||||
ptr = int(m.group(2), 16)
|
||||
size = int(m.group(1))
|
||||
elif choice == 3:
|
||||
ptr = int(m.group(1), 16)
|
||||
size = int(m.group(2))
|
||||
elif choice == 1:
|
||||
ptr = int(m.group(1), 16)
|
||||
size = int(m.group(2)) * int(m.group(3))
|
||||
else:
|
||||
ptr = int(m.group(1), 16)
|
||||
size = int(m.group(2)) * int(m.group(3)) * int(m.group(4))
|
||||
self.allocations[ptr] = (size, event)
|
||||
|
||||
#get type of ptr
|
||||
def get_ptr_type(self, ptr):
|
||||
addr = int(ptr, 16)
|
||||
addr_type = 'unknown'
|
||||
found = 0
|
||||
for base, (size, event) in self.allocations.items():
|
||||
if addr >= base and addr < base + size:
|
||||
found = 1
|
||||
break
|
||||
if not found:
|
||||
addr_type = 'pageable'
|
||||
elif event in pinned:
|
||||
addr_type = 'pinned'
|
||||
elif event in ondevice:
|
||||
addr_type = 'device'
|
||||
elif ptr in self.hsa_agent_types:
|
||||
if self.hsa_agent_types[ptr] == 0:
|
||||
addr_type = 'pinned'
|
||||
elif self.hsa_agent_types[ptr] == 1:
|
||||
addr_type = 'device'
|
||||
else:
|
||||
fatal('internal error: ptr(' + ptr + ') cannot be identified')
|
||||
else:
|
||||
fatal('internal error: ptr(' + ptr + ') cannot be identified')
|
||||
return addr_type
|
||||
|
||||
# add memcpy to map
|
||||
def add_memcpy(self, recvals):
|
||||
recordid = recvals[6] #same as corrid
|
||||
event = recvals[4]
|
||||
start_time = recvals[0] # sync time stamp
|
||||
end_time = recvals[1] # sync time stamp
|
||||
args = recvals[5]
|
||||
procid = int(recvals[2]) # used to query async entries
|
||||
pid = recvals[2]
|
||||
tid = recvals[3]
|
||||
|
||||
# hipMemcpy(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind)
|
||||
hip_memcpy_ptrn = re.compile(r'\(\s*dst\((.*)\) src\((.*)\) sizeBytes\((\d+)\).*\)')
|
||||
# hipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width,
|
||||
# size_t height, hipMemcpyKind kind);
|
||||
hip_memcpy_ptrn2 = re.compile(r'\(\s*dst\((.*)\) .* src\((.*)\) .* width\((\d+)\) height\((\d+)\).*\)')
|
||||
# hipMemcpyToArray(hipArray* dst, size_t wOffset, size_t hOffset, const void* src,
|
||||
# size_t count, hipMemcpyKind kind);
|
||||
hip_memcpy_ptrn3 = re.compile(r'\(\s*dst\((.*)\) .* src\((.*)\) count\((\d+)\).*\)')
|
||||
# hipMemcpyToSymbol(const void* symbolName, const void* src, size_t sizeBytes,
|
||||
# size_t offset = 0, hipMemcpyKind kind)
|
||||
hip_memcpy_ptrn4 = re.compile(r'\(\s*symbol\((.*)\) src\((.*)\) sizeBytes\((\d+)\).*\)')
|
||||
# memcopy with kind argument
|
||||
hip_memcpy_ptrn_kind = re.compile(r'.* kind\((\d+)\)\s*.*')
|
||||
#hsa_amd_memory_async_copy(void* dst, hsa_agent_t dst_agent, const void* src,
|
||||
# hsa_agent_t src_agent, size_t size,
|
||||
# uint32_t num_dep_signals,
|
||||
# const hsa_signal_t* dep_signals,
|
||||
# hsa_signal_t completion_signal);
|
||||
# "(0x7f8ab6600000, 27064880, 0x7f8b16000000, 27059968, 800000000, 0, 0, 140240759809536) = 0"
|
||||
# hsa_memcpy_ptrn_prev used to support format transition and will be cleaned up later.
|
||||
hsa_memcpy_ptrn_prev = re.compile(r'\((0x[0-9a-fA-F]+), (\d+), (0x[0-9a-fA-F]+), (\d+), (\d+), .*\) = \d')
|
||||
# "(0x7fd83bc00000, {handle=16124864}, 0x7fd89b600000, {handle=16119808}, 800000000, 0, 0, {handle=140573877724672}) = 0"
|
||||
hsa_memcpy_ptrn = re.compile(r'\((0x[0-9a-fA-F]+), {handle=(\d+)}, (0x[0-9a-fA-F]+), {handle=(\d+)}, (\d+), .*\) = \d')
|
||||
# "(0x7f9125cfe7b0, 0x7f9125cfe784, 0x7f9125cfe790, 0x7f9125cfe784, 0x7f9125cfe778, {handle=94324038652880}, 1, 0, 0, {handle=140261380710784}) = 0"
|
||||
# dst, dst_offset, src, src_offset, range, copy_agent, dir, num_dep_signals, dep_signals, completion_signal
|
||||
hsa_memcpy_ptrn2 = re.compile(r'\((0x[0-9a-fA-F]+), 0x[0-9a-fA-F]+, (0x[0-9a-fA-F]+), 0x[0-9a-fA-F]+, 0x[0-9a-fA-F]+, {z=(\d+), y=(\d+), x=(\d+)}, {handle=(\d+)}, .*\) = \d')
|
||||
# aysnc memcopy
|
||||
async_event_ptrn = re.compile(r'Async|async')
|
||||
m_basic_hip = hip_memcpy_ptrn.match(args)
|
||||
m_basic_hsa3 = hip_memcpy_ptrn4.match(args)
|
||||
m_basic_hsa_prev = hsa_memcpy_ptrn_prev.match(args)
|
||||
m_basic_hsa = hsa_memcpy_ptrn.match(args)
|
||||
m_basic_hsa2 = hsa_memcpy_ptrn2.match(args)
|
||||
is_hip = True if not (m_basic_hsa_prev or m_basic_hsa or m_basic_hsa2) else False
|
||||
m_2d = hip_memcpy_ptrn2.match(args)
|
||||
m_array = hip_memcpy_ptrn3.match(args)
|
||||
is_async = 1 if async_event_ptrn.search(event) else 0
|
||||
copy_line = ''
|
||||
size = 0
|
||||
dstptr_type = 'unknown'
|
||||
srcptr_type = 'unknown'
|
||||
direction = 'unknown'
|
||||
kind_switcher = {
|
||||
'0': "HtoH",
|
||||
'1': "HtoD",
|
||||
'2': "DtoH",
|
||||
'3': "DtoD",
|
||||
'4': "auto",
|
||||
}
|
||||
|
||||
condition_matched = False
|
||||
if m_basic_hip:
|
||||
dstptr = m_basic_hip.group(1)
|
||||
dstptr_type = self.get_ptr_type(dstptr)
|
||||
srcptr = m_basic_hip.group(2)
|
||||
srcptr_type = self.get_ptr_type(srcptr)
|
||||
size = int(m_basic_hip.group(3))
|
||||
condition_matched = True
|
||||
|
||||
if m_basic_hsa_prev:
|
||||
dstptr = m_basic_hsa_prev.group(1)
|
||||
dst_agent_ptr = m_basic_hsa_prev.group(2)
|
||||
dstptr_type = self.get_ptr_type(dst_agent_ptr)
|
||||
srcptr = m_basic_hsa_prev.group(3)
|
||||
src_agent_ptr = m_basic_hsa_prev.group(4)
|
||||
srcptr_type = self.get_ptr_type(src_agent_ptr)
|
||||
size = int(m_basic_hsa_prev.group(5))
|
||||
condition_matched = True
|
||||
|
||||
if m_basic_hsa:
|
||||
dstptr = m_basic_hsa.group(1)
|
||||
dst_agent_ptr = m_basic_hsa.group(2)
|
||||
dstptr_type = self.get_ptr_type(dst_agent_ptr)
|
||||
srcptr = m_basic_hsa.group(3)
|
||||
src_agent_ptr = m_basic_hsa.group(4)
|
||||
srcptr_type = self.get_ptr_type(src_agent_ptr)
|
||||
size = int(m_basic_hsa.group(5))
|
||||
condition_matched = True
|
||||
|
||||
if m_basic_hsa2:
|
||||
dstptr = m_basic_hsa2.group(1)
|
||||
dst_agent_ptr = m_basic_hsa2.group(6)
|
||||
dstptr_type = self.get_ptr_type(dst_agent_ptr)
|
||||
srcptr = m_basic_hsa2.group(2)
|
||||
src_agent_ptr = m_basic_hsa2.group(6)
|
||||
srcptr_type = self.get_ptr_type(src_agent_ptr)
|
||||
z = int(m_basic_hsa2.group(3))
|
||||
y = int(m_basic_hsa2.group(4))
|
||||
x = int(m_basic_hsa2.group(5))
|
||||
size = x*y*z
|
||||
condition_matched = True
|
||||
|
||||
if m_basic_hsa3:
|
||||
dstptr = m_basic_hsa3.group(1)
|
||||
dstptr_type = self.get_ptr_type(dstptr)
|
||||
srcptr = m_basic_hsa3.group(2)
|
||||
srcptr_type = self.get_ptr_type(srcptr)
|
||||
size = int(m_basic_hsa3.group(3))
|
||||
condition_matched = True
|
||||
|
||||
if m_array:
|
||||
dstptr = m_array.group(1)
|
||||
dstptr_type = self.get_ptr_type(dstptr)
|
||||
srcptr = m_array.group(2)
|
||||
srcptr_type = self.get_ptr_type(srcptr)
|
||||
size = m_array.group(3)
|
||||
condition_matched = True
|
||||
|
||||
if m_2d:
|
||||
dstptr = m_2d.group(1)
|
||||
dstptr_type = self.get_ptr_type(dstptr)
|
||||
srcptr = m_2d.group(2)
|
||||
srcptr_type = self.get_ptr_type(srcptr)
|
||||
size = int(m_2d.group(3))*int(m_2d.group(4))
|
||||
condition_matched = True
|
||||
|
||||
if not condition_matched: fatal('Memcpy args \"' + args + '\" cannot be identified')
|
||||
|
||||
if not is_async:
|
||||
start_time = recvals[0] # sync time stamp
|
||||
end_time = recvals[1] # sync time stamp
|
||||
duration = (int(end_time) - int(start_time))
|
||||
|
||||
|
||||
evt_switcher = {
|
||||
'hipMemcpyDtoD': "DtoD",
|
||||
'hipMemcpyDtoDAsync': "DtoD",
|
||||
'hipMemcpyDtoH': "DtoH",
|
||||
'hipMemcpyDtoHAsync': "DtoH",
|
||||
'hipMemcpyHtoD': "HtoD",
|
||||
'hipMemcpyHtoDAsync': "HtoD",
|
||||
}
|
||||
|
||||
if is_hip:
|
||||
m = hip_memcpy_ptrn_kind.match(args)
|
||||
if m:
|
||||
direction = kind_switcher.get(m.group(1), "unknown")
|
||||
else:
|
||||
direction = evt_switcher.get(event, "unknown")
|
||||
else:
|
||||
if dst_agent_ptr in self.hsa_agent_types and src_agent_ptr in self.hsa_agent_types:
|
||||
if self.hsa_agent_types[src_agent_ptr] == 1: direction = 'D'
|
||||
elif self.hsa_agent_types[src_agent_ptr] == 0: direction = 'H'
|
||||
if direction != 'unknown': direction += 'to'
|
||||
if self.hsa_agent_types[dst_agent_ptr] == 1: direction += 'D'
|
||||
elif self.hsa_agent_types[dst_agent_ptr] == 0: direction += 'H'
|
||||
|
||||
copy_line_header = ''
|
||||
copy_line_footer = ''
|
||||
copy_line_header = str(start_time) + DELIM + str(end_time) + DELIM + str(pid) + DELIM + str(tid)
|
||||
copy_line_footer = 'Async=' + str(is_async)
|
||||
|
||||
copy_line = copy_line_header + DELIM + event + DELIM + 'Direction=' + direction + DELIM + 'SrcType=' + srcptr_type + DELIM + 'DstType=' + dstptr_type + DELIM + "Size=" + str(size) + DELIM + copy_line_footer
|
||||
|
||||
self.memcopies[(recordid, procid, is_async)] = copy_line
|
||||
return copy_line;
|
||||
|
||||
def dump_data(self, table_name, file_name):
|
||||
# To create memcopy info table in DB
|
||||
print("File '" + file_name + "' is generating")
|
||||
table_handle = self.db.add_table(table_name, mm_table_descr)
|
||||
|
||||
fld_ptrn = re.compile(r'(.*)=(.*)')
|
||||
for (key, record) in self.memcopies.items():
|
||||
rec_vals_array = []
|
||||
for rec in record.split(DELIM):
|
||||
fld_ptrnm = fld_ptrn.match(rec)
|
||||
if fld_ptrnm:
|
||||
rec_vals_array.append(fld_ptrnm.group(2))
|
||||
# add allocation to map
|
||||
def add_allocation(self, event, args):
|
||||
choice = 0
|
||||
if event == "hipMallocPitch":
|
||||
malloc_args_ptrn = re.compile(r"\(ptr\((.*)\) width\((.*)\) height\((.*)\)\)")
|
||||
choice = 1
|
||||
elif event == "hipMallocArray":
|
||||
malloc_args_ptrn = re.compile(
|
||||
r"\(array\((.*)\) width\((.*)\) height\((.*)\)\)"
|
||||
)
|
||||
choice = 1
|
||||
elif event == "hipMalloc3DArray":
|
||||
malloc_args_ptrn = re.compile(
|
||||
r"\(array\((.*)\) width\((.*)\) height\((.*)\) depth\((.*)\)\)"
|
||||
)
|
||||
choice = 2
|
||||
elif event == "hsa_amd_memory_pool_allocate":
|
||||
# ({handle=25291264}, 40, 0, 0x7ffc4c7bf1b0)
|
||||
malloc_args_ptrn = re.compile(
|
||||
r"\({handle=\d+}, (\d+), \d+, (0x[0-9a-fA-F]+)\)"
|
||||
)
|
||||
choice = 4
|
||||
else:
|
||||
rec_vals_array.append(rec)
|
||||
self.db.insert_entry(table_handle, rec_vals_array)
|
||||
# (ptr(0x7f3407000000) size(800000000) flags(0))
|
||||
malloc_args_ptrn = re.compile(r"\(ptr\((.*)\) size\((.*)\) .*\)")
|
||||
choice = 3
|
||||
m = malloc_args_ptrn.match(args)
|
||||
if m:
|
||||
if choice == 4:
|
||||
ptr = int(m.group(2), 16)
|
||||
size = int(m.group(1))
|
||||
elif choice == 3:
|
||||
ptr = int(m.group(1), 16)
|
||||
size = int(m.group(2))
|
||||
elif choice == 1:
|
||||
ptr = int(m.group(1), 16)
|
||||
size = int(m.group(2)) * int(m.group(3))
|
||||
else:
|
||||
ptr = int(m.group(1), 16)
|
||||
size = int(m.group(2)) * int(m.group(3)) * int(m.group(4))
|
||||
self.allocations[ptr] = (size, event)
|
||||
|
||||
# To dump the memcopy info table as CSV
|
||||
self.db.dump_csv(table_name, file_name)
|
||||
# get type of ptr
|
||||
def get_ptr_type(self, ptr):
|
||||
addr = int(ptr, 16)
|
||||
addr_type = "unknown"
|
||||
found = 0
|
||||
for base, (size, event) in self.allocations.items():
|
||||
if addr >= base and addr < base + size:
|
||||
found = 1
|
||||
break
|
||||
if not found:
|
||||
addr_type = "pageable"
|
||||
elif event in pinned:
|
||||
addr_type = "pinned"
|
||||
elif event in ondevice:
|
||||
addr_type = "device"
|
||||
elif ptr in self.hsa_agent_types:
|
||||
if self.hsa_agent_types[ptr] == 0:
|
||||
addr_type = "pinned"
|
||||
elif self.hsa_agent_types[ptr] == 1:
|
||||
addr_type = "device"
|
||||
else:
|
||||
fatal("internal error: ptr(" + ptr + ") cannot be identified")
|
||||
else:
|
||||
fatal("internal error: ptr(" + ptr + ") cannot be identified")
|
||||
return addr_type
|
||||
|
||||
# add memcpy to map
|
||||
def add_memcpy(self, recvals):
|
||||
recordid = recvals[6] # same as corrid
|
||||
event = recvals[4]
|
||||
start_time = recvals[0] # sync time stamp
|
||||
end_time = recvals[1] # sync time stamp
|
||||
args = recvals[5]
|
||||
procid = int(recvals[2]) # used to query async entries
|
||||
pid = recvals[2]
|
||||
tid = recvals[3]
|
||||
|
||||
# hipMemcpy(void* dst, const void* src, size_t sizeBytes, hipMemcpyKind kind)
|
||||
hip_memcpy_ptrn = re.compile(
|
||||
r"\(\s*dst\((.*)\) src\((.*)\) sizeBytes\((\d+)\).*\)"
|
||||
)
|
||||
# hipMemcpy2D(void* dst, size_t dpitch, const void* src, size_t spitch, size_t width,
|
||||
# size_t height, hipMemcpyKind kind);
|
||||
hip_memcpy_ptrn2 = re.compile(
|
||||
r"\(\s*dst\((.*)\) .* src\((.*)\) .* width\((\d+)\) height\((\d+)\).*\)"
|
||||
)
|
||||
# hipMemcpyToArray(hipArray* dst, size_t wOffset, size_t hOffset, const void* src,
|
||||
# size_t count, hipMemcpyKind kind);
|
||||
hip_memcpy_ptrn3 = re.compile(
|
||||
r"\(\s*dst\((.*)\) .* src\((.*)\) count\((\d+)\).*\)"
|
||||
)
|
||||
# hipMemcpyToSymbol(const void* symbolName, const void* src, size_t sizeBytes,
|
||||
# size_t offset = 0, hipMemcpyKind kind)
|
||||
hip_memcpy_ptrn4 = re.compile(
|
||||
r"\(\s*symbol\((.*)\) src\((.*)\) sizeBytes\((\d+)\).*\)"
|
||||
)
|
||||
# memcopy with kind argument
|
||||
hip_memcpy_ptrn_kind = re.compile(r".* kind\((\d+)\)\s*.*")
|
||||
# hsa_amd_memory_async_copy(void* dst, hsa_agent_t dst_agent, const void* src,
|
||||
# hsa_agent_t src_agent, size_t size,
|
||||
# uint32_t num_dep_signals,
|
||||
# const hsa_signal_t* dep_signals,
|
||||
# hsa_signal_t completion_signal);
|
||||
# "(0x7f8ab6600000, 27064880, 0x7f8b16000000, 27059968, 800000000, 0, 0, 140240759809536) = 0"
|
||||
# hsa_memcpy_ptrn_prev used to support format transition and will be cleaned up later.
|
||||
hsa_memcpy_ptrn_prev = re.compile(
|
||||
r"\((0x[0-9a-fA-F]+), (\d+), (0x[0-9a-fA-F]+), (\d+), (\d+), .*\) = \d"
|
||||
)
|
||||
# "(0x7fd83bc00000, {handle=16124864}, 0x7fd89b600000, {handle=16119808}, 800000000, 0, 0, {handle=140573877724672}) = 0"
|
||||
hsa_memcpy_ptrn = re.compile(
|
||||
r"\((0x[0-9a-fA-F]+), {handle=(\d+)}, (0x[0-9a-fA-F]+), {handle=(\d+)}, (\d+), .*\) = \d"
|
||||
)
|
||||
# "(0x7f9125cfe7b0, 0x7f9125cfe784, 0x7f9125cfe790, 0x7f9125cfe784, 0x7f9125cfe778, {handle=94324038652880}, 1, 0, 0, {handle=140261380710784}) = 0"
|
||||
# dst, dst_offset, src, src_offset, range, copy_agent, dir, num_dep_signals, dep_signals, completion_signal
|
||||
hsa_memcpy_ptrn2 = re.compile(
|
||||
r"\((0x[0-9a-fA-F]+), 0x[0-9a-fA-F]+, (0x[0-9a-fA-F]+), 0x[0-9a-fA-F]+, 0x[0-9a-fA-F]+, {z=(\d+), y=(\d+), x=(\d+)}, {handle=(\d+)}, .*\) = \d"
|
||||
)
|
||||
# aysnc memcopy
|
||||
async_event_ptrn = re.compile(r"Async|async")
|
||||
m_basic_hip = hip_memcpy_ptrn.match(args)
|
||||
m_basic_hsa3 = hip_memcpy_ptrn4.match(args)
|
||||
m_basic_hsa_prev = hsa_memcpy_ptrn_prev.match(args)
|
||||
m_basic_hsa = hsa_memcpy_ptrn.match(args)
|
||||
m_basic_hsa2 = hsa_memcpy_ptrn2.match(args)
|
||||
is_hip = True if not (m_basic_hsa_prev or m_basic_hsa or m_basic_hsa2) else False
|
||||
m_2d = hip_memcpy_ptrn2.match(args)
|
||||
m_array = hip_memcpy_ptrn3.match(args)
|
||||
is_async = 1 if async_event_ptrn.search(event) else 0
|
||||
copy_line = ""
|
||||
size = 0
|
||||
dstptr_type = "unknown"
|
||||
srcptr_type = "unknown"
|
||||
direction = "unknown"
|
||||
kind_switcher = {
|
||||
"0": "HtoH",
|
||||
"1": "HtoD",
|
||||
"2": "DtoH",
|
||||
"3": "DtoD",
|
||||
"4": "auto",
|
||||
}
|
||||
|
||||
condition_matched = False
|
||||
if m_basic_hip:
|
||||
dstptr = m_basic_hip.group(1)
|
||||
dstptr_type = self.get_ptr_type(dstptr)
|
||||
srcptr = m_basic_hip.group(2)
|
||||
srcptr_type = self.get_ptr_type(srcptr)
|
||||
size = int(m_basic_hip.group(3))
|
||||
condition_matched = True
|
||||
|
||||
if m_basic_hsa_prev:
|
||||
dstptr = m_basic_hsa_prev.group(1)
|
||||
dst_agent_ptr = m_basic_hsa_prev.group(2)
|
||||
dstptr_type = self.get_ptr_type(dst_agent_ptr)
|
||||
srcptr = m_basic_hsa_prev.group(3)
|
||||
src_agent_ptr = m_basic_hsa_prev.group(4)
|
||||
srcptr_type = self.get_ptr_type(src_agent_ptr)
|
||||
size = int(m_basic_hsa_prev.group(5))
|
||||
condition_matched = True
|
||||
|
||||
if m_basic_hsa:
|
||||
dstptr = m_basic_hsa.group(1)
|
||||
dst_agent_ptr = m_basic_hsa.group(2)
|
||||
dstptr_type = self.get_ptr_type(dst_agent_ptr)
|
||||
srcptr = m_basic_hsa.group(3)
|
||||
src_agent_ptr = m_basic_hsa.group(4)
|
||||
srcptr_type = self.get_ptr_type(src_agent_ptr)
|
||||
size = int(m_basic_hsa.group(5))
|
||||
condition_matched = True
|
||||
|
||||
if m_basic_hsa2:
|
||||
dstptr = m_basic_hsa2.group(1)
|
||||
dst_agent_ptr = m_basic_hsa2.group(6)
|
||||
dstptr_type = self.get_ptr_type(dst_agent_ptr)
|
||||
srcptr = m_basic_hsa2.group(2)
|
||||
src_agent_ptr = m_basic_hsa2.group(6)
|
||||
srcptr_type = self.get_ptr_type(src_agent_ptr)
|
||||
z = int(m_basic_hsa2.group(3))
|
||||
y = int(m_basic_hsa2.group(4))
|
||||
x = int(m_basic_hsa2.group(5))
|
||||
size = x * y * z
|
||||
condition_matched = True
|
||||
|
||||
if m_basic_hsa3:
|
||||
dstptr = m_basic_hsa3.group(1)
|
||||
dstptr_type = self.get_ptr_type(dstptr)
|
||||
srcptr = m_basic_hsa3.group(2)
|
||||
srcptr_type = self.get_ptr_type(srcptr)
|
||||
size = int(m_basic_hsa3.group(3))
|
||||
condition_matched = True
|
||||
|
||||
if m_array:
|
||||
dstptr = m_array.group(1)
|
||||
dstptr_type = self.get_ptr_type(dstptr)
|
||||
srcptr = m_array.group(2)
|
||||
srcptr_type = self.get_ptr_type(srcptr)
|
||||
size = m_array.group(3)
|
||||
condition_matched = True
|
||||
|
||||
if m_2d:
|
||||
dstptr = m_2d.group(1)
|
||||
dstptr_type = self.get_ptr_type(dstptr)
|
||||
srcptr = m_2d.group(2)
|
||||
srcptr_type = self.get_ptr_type(srcptr)
|
||||
size = int(m_2d.group(3)) * int(m_2d.group(4))
|
||||
condition_matched = True
|
||||
|
||||
if not condition_matched:
|
||||
fatal('Memcpy args "' + args + '" cannot be identified')
|
||||
|
||||
if not is_async:
|
||||
start_time = recvals[0] # sync time stamp
|
||||
end_time = recvals[1] # sync time stamp
|
||||
duration = int(end_time) - int(start_time)
|
||||
|
||||
evt_switcher = {
|
||||
"hipMemcpyDtoD": "DtoD",
|
||||
"hipMemcpyDtoDAsync": "DtoD",
|
||||
"hipMemcpyDtoH": "DtoH",
|
||||
"hipMemcpyDtoHAsync": "DtoH",
|
||||
"hipMemcpyHtoD": "HtoD",
|
||||
"hipMemcpyHtoDAsync": "HtoD",
|
||||
}
|
||||
|
||||
if is_hip:
|
||||
m = hip_memcpy_ptrn_kind.match(args)
|
||||
if m:
|
||||
direction = kind_switcher.get(m.group(1), "unknown")
|
||||
else:
|
||||
direction = evt_switcher.get(event, "unknown")
|
||||
else:
|
||||
if (
|
||||
dst_agent_ptr in self.hsa_agent_types
|
||||
and src_agent_ptr in self.hsa_agent_types
|
||||
):
|
||||
if self.hsa_agent_types[src_agent_ptr] == 1:
|
||||
direction = "D"
|
||||
elif self.hsa_agent_types[src_agent_ptr] == 0:
|
||||
direction = "H"
|
||||
if direction != "unknown":
|
||||
direction += "to"
|
||||
if self.hsa_agent_types[dst_agent_ptr] == 1:
|
||||
direction += "D"
|
||||
elif self.hsa_agent_types[dst_agent_ptr] == 0:
|
||||
direction += "H"
|
||||
|
||||
copy_line_header = ""
|
||||
copy_line_footer = ""
|
||||
copy_line_header = (
|
||||
str(start_time) + DELIM + str(end_time) + DELIM + str(pid) + DELIM + str(tid)
|
||||
)
|
||||
copy_line_footer = "Async=" + str(is_async)
|
||||
|
||||
copy_line = (
|
||||
copy_line_header
|
||||
+ DELIM
|
||||
+ event
|
||||
+ DELIM
|
||||
+ "Direction="
|
||||
+ direction
|
||||
+ DELIM
|
||||
+ "SrcType="
|
||||
+ srcptr_type
|
||||
+ DELIM
|
||||
+ "DstType="
|
||||
+ dstptr_type
|
||||
+ DELIM
|
||||
+ "Size="
|
||||
+ str(size)
|
||||
+ DELIM
|
||||
+ copy_line_footer
|
||||
)
|
||||
|
||||
self.memcopies[(recordid, procid, is_async)] = copy_line
|
||||
return copy_line
|
||||
|
||||
def dump_data(self, table_name, file_name):
|
||||
# To create memcopy info table in DB
|
||||
print("File '" + file_name + "' is generating")
|
||||
table_handle = self.db.add_table(table_name, mm_table_descr)
|
||||
|
||||
fld_ptrn = re.compile(r"(.*)=(.*)")
|
||||
for key, record in self.memcopies.items():
|
||||
rec_vals_array = []
|
||||
for rec in record.split(DELIM):
|
||||
fld_ptrnm = fld_ptrn.match(rec)
|
||||
if fld_ptrnm:
|
||||
rec_vals_array.append(fld_ptrnm.group(2))
|
||||
else:
|
||||
rec_vals_array.append(rec)
|
||||
self.db.insert_entry(table_handle, rec_vals_array)
|
||||
|
||||
# To dump the memcopy info table as CSV
|
||||
self.db.dump_csv(table_name, file_name)
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
#!/bin/bash
|
||||
#!/bin/bash -e
|
||||
|
||||
set -eo pipefail
|
||||
CURRENT_DIR="$(dirname -- "$0")"
|
||||
ROCPROFV2_DIR=$(dirname -- $(realpath ${BASH_SOURCE[0]}))
|
||||
ROCM_DIR=$(dirname -- "$ROCPROFV2_DIR")
|
||||
|
||||
# LD_PRELOAD on script will not get propagated
|
||||
if [ -n "${ROCP_PRELOAD}" ]; then LD_PRELOAD="${ROCP_PRELOAD}"; fi
|
||||
|
||||
CURRENT_DIR="$( dirname -- "$0"; )";
|
||||
ROCPROFV2_DIR=$(dirname -- $(realpath ${BASH_SOURCE[0]}));
|
||||
ROCM_DIR=$( dirname -- "$ROCPROFV2_DIR"; )
|
||||
PLUGIN_LIST=("ctf" "perfetto" "file" "att")
|
||||
RUN_FROM_BUILD=0
|
||||
if [[ $ROCPROFV2_DIR == *"/build"* ]]; then
|
||||
|
||||
@@ -262,6 +262,7 @@ run() {
|
||||
MY_LD_PRELOAD=""
|
||||
if [ "$ROCTX_TRACE" = 1 ] ; then
|
||||
API_TRACE=${API_TRACE}":roctx"
|
||||
MY_LD_PRELOAD="$TTLIB_PATH/libroctx64.so"
|
||||
fi
|
||||
if [ "$HIP_TRACE" = 1 ] ; then
|
||||
API_TRACE=${API_TRACE}":hip"
|
||||
@@ -273,18 +274,18 @@ run() {
|
||||
if [ "$HSA_TRACE" = 1 ] ; then
|
||||
export ROCTRACER_DOMAIN=$API_TRACE":hsa"
|
||||
MY_HSA_TOOLS_LIB="$MY_HSA_TOOLS_LIB $ROCM_LIB_PATH/libroctracer64.so.4"
|
||||
MY_LD_PRELOAD="$TTLIB_PATH/libroctracer_tool.so"
|
||||
MY_LD_PRELOAD="$MY_LD_PRELOAD:$TTLIB_PATH/libroctracer_tool.so"
|
||||
elif [ -n "$API_TRACE" ] ; then
|
||||
export ROCTRACER_DOMAIN=$API_TRACE
|
||||
OUTPUT_LIST="$ROCP_OUTPUT_DIR/"
|
||||
MY_HSA_TOOLS_LIB="$ROCM_LIB_PATH/libroctracer64.so.4"
|
||||
MY_LD_PRELOAD="$TTLIB_PATH/libroctracer_tool.so"
|
||||
MY_LD_PRELOAD="$MY_LD_PRELOAD:$TTLIB_PATH/libroctracer_tool.so"
|
||||
fi
|
||||
|
||||
if [ "$ROCP_STATS_OPT" = 1 ] ; then
|
||||
if [ "$ROCTRACER_DOMAIN" = ":hip" ] ; then
|
||||
MY_HSA_TOOLS_LIB="$ROCM_LIB_PATH/libroctracer64.so.4"
|
||||
MY_LD_PRELOAD="$TTLIB_PATH/libhip_stats.so"
|
||||
MY_LD_PRELOAD="$MY_LD_PRELOAD:$TTLIB_PATH/libhip_stats.so"
|
||||
else
|
||||
error_message="ROCP_STATS_OPT is only available with --hip-trace option"
|
||||
echo $error_message
|
||||
|
||||
+280
-223
@@ -24,269 +24,326 @@ import csv, sqlite3, re, sys
|
||||
from functools import reduce
|
||||
from txt2params import gen_params
|
||||
|
||||
|
||||
# SQLite Database class
|
||||
class SQLiteDB:
|
||||
def __init__(self, file_name):
|
||||
self.connection = sqlite3.connect(file_name)
|
||||
self.tables = {}
|
||||
self.section_index = 0
|
||||
def __init__(self, file_name):
|
||||
self.connection = sqlite3.connect(file_name)
|
||||
self.tables = {}
|
||||
self.section_index = 0
|
||||
|
||||
def __del__(self):
|
||||
self.connection.close()
|
||||
def __del__(self):
|
||||
self.connection.close()
|
||||
|
||||
# add DB table
|
||||
def add_table(self, name, descr, extra = ()):
|
||||
(field_list, field_dict) = descr
|
||||
if name in self.tables: raise Exception('table is already added: "' + name + '"')
|
||||
# add DB table
|
||||
def add_table(self, name, descr, extra=()):
|
||||
(field_list, field_dict) = descr
|
||||
if name in self.tables:
|
||||
raise Exception('table is already added: "' + name + '"')
|
||||
|
||||
# create DB table
|
||||
table_descr = []
|
||||
for field in field_list: table_descr.append('"%s" %s' % (field, field_dict[field]))
|
||||
for item in extra: table_descr.append('"%s" %s' % (item[0], item[1]))
|
||||
stm = 'CREATE TABLE ' + name + ' (%s)' % ', '.join(table_descr)
|
||||
cursor = self.connection.cursor()
|
||||
cursor.execute(stm)
|
||||
self.connection.commit()
|
||||
# create DB table
|
||||
table_descr = []
|
||||
for field in field_list:
|
||||
table_descr.append('"%s" %s' % (field, field_dict[field]))
|
||||
for item in extra:
|
||||
table_descr.append('"%s" %s' % (item[0], item[1]))
|
||||
stm = "CREATE TABLE " + name + " (%s)" % ", ".join(table_descr)
|
||||
cursor = self.connection.cursor()
|
||||
cursor.execute(stm)
|
||||
self.connection.commit()
|
||||
|
||||
# register table
|
||||
fields_str = ','.join(map(lambda x: '"' + x + '"', field_list))
|
||||
templ_str = ','.join('?' * len(field_list))
|
||||
stm = 'INSERT INTO ' + name + '(' + fields_str + ') VALUES(' + templ_str + ');'
|
||||
self.tables[name] = stm
|
||||
# register table
|
||||
fields_str = ",".join(map(lambda x: '"' + x + '"', field_list))
|
||||
templ_str = ",".join("?" * len(field_list))
|
||||
stm = "INSERT INTO " + name + "(" + fields_str + ") VALUES(" + templ_str + ");"
|
||||
self.tables[name] = stm
|
||||
|
||||
return (cursor, stm);
|
||||
return (cursor, stm)
|
||||
|
||||
# add columns to table
|
||||
def add_columns(self, name, columns):
|
||||
cursor = self.connection.cursor()
|
||||
for item in columns:
|
||||
stm = 'ALTER TABLE ' + name + ' ADD COLUMN "%s" %s' % (item[0], item[1])
|
||||
cursor.execute(stm)
|
||||
self.connection.commit()
|
||||
# add columns to table
|
||||
def add_columns(self, name, columns):
|
||||
cursor = self.connection.cursor()
|
||||
for item in columns:
|
||||
stm = "ALTER TABLE " + name + ' ADD COLUMN "%s" %s' % (item[0], item[1])
|
||||
cursor.execute(stm)
|
||||
self.connection.commit()
|
||||
|
||||
# add columns with expression
|
||||
def add_data_column(self, table_name, data_label, data_type, data_expr):
|
||||
cursor = self.connection.cursor()
|
||||
cursor.execute('ALTER TABLE %s ADD COLUMN "%s" %s' % (table_name, data_label, data_type))
|
||||
cursor.execute('UPDATE %s SET %s = (%s);' % (table_name, data_label, data_expr))
|
||||
# add columns with expression
|
||||
def add_data_column(self, table_name, data_label, data_type, data_expr):
|
||||
cursor = self.connection.cursor()
|
||||
cursor.execute(
|
||||
'ALTER TABLE %s ADD COLUMN "%s" %s' % (table_name, data_label, data_type)
|
||||
)
|
||||
cursor.execute("UPDATE %s SET %s = (%s);" % (table_name, data_label, data_expr))
|
||||
|
||||
def change_rec_name(self, table_name, rec_id, rec_name):
|
||||
self.connection.execute('UPDATE ' + table_name + ' SET Name = ? WHERE "Index" = ?', (rec_name, rec_id))
|
||||
def change_rec_tid(self, table_name, rec_id, tid):
|
||||
self.connection.execute('UPDATE ' + table_name + ' SET tid = ? WHERE "Index" = ?', (tid, rec_id))
|
||||
def change_rec_fld(self, table_name, fld_expr, rec_pat):
|
||||
self.connection.execute('UPDATE ' + table_name + ' SET ' + fld_expr + ' WHERE ' + rec_pat)
|
||||
def table_get_record(self, table_name, rec_pat):
|
||||
cursor = self.connection.execute('SELECT * FROM ' + table_name + ' WHERE ' + rec_pat)
|
||||
raws = cursor.fetchall()
|
||||
if len(raws) != 1: raise Exception('Record (' + rec_pat + ') is not unique, table "' + table_name + '"')
|
||||
return list(raws[0])
|
||||
def change_rec_name(self, table_name, rec_id, rec_name):
|
||||
self.connection.execute(
|
||||
"UPDATE " + table_name + ' SET Name = ? WHERE "Index" = ?', (rec_name, rec_id)
|
||||
)
|
||||
|
||||
# populate DB table entry
|
||||
def insert_entry(self, table, val_list):
|
||||
(cursor, stm) = table
|
||||
cursor.execute(stm, val_list)
|
||||
def change_rec_tid(self, table_name, rec_id, tid):
|
||||
self.connection.execute(
|
||||
"UPDATE " + table_name + ' SET tid = ? WHERE "Index" = ?', (tid, rec_id)
|
||||
)
|
||||
|
||||
# populate DB table entry
|
||||
def commit_entry(self, table, val_list):
|
||||
self.insert_entry(table, val_list)
|
||||
self.connection.commit()
|
||||
def change_rec_fld(self, table_name, fld_expr, rec_pat):
|
||||
self.connection.execute(
|
||||
"UPDATE " + table_name + " SET " + fld_expr + " WHERE " + rec_pat
|
||||
)
|
||||
|
||||
# populate DB table data
|
||||
def insert_table(self, table, reader):
|
||||
for val_list in reader:
|
||||
if not val_list[-1]: val_list.pop()
|
||||
self.insert_entry(table, val_list)
|
||||
self.connection.commit()
|
||||
def table_get_record(self, table_name, rec_pat):
|
||||
cursor = self.connection.execute(
|
||||
"SELECT * FROM " + table_name + " WHERE " + rec_pat
|
||||
)
|
||||
raws = cursor.fetchall()
|
||||
if len(raws) != 1:
|
||||
raise Exception(
|
||||
"Record (" + rec_pat + ') is not unique, table "' + table_name + '"'
|
||||
)
|
||||
return list(raws[0])
|
||||
|
||||
# return table fields list
|
||||
def _get_fields(self, table_name):
|
||||
cursor = self.connection.execute('SELECT * FROM ' + table_name)
|
||||
return list(map(lambda x: '"%s"' % (x[0]), cursor.description))
|
||||
# populate DB table entry
|
||||
def insert_entry(self, table, val_list):
|
||||
(cursor, stm) = table
|
||||
cursor.execute(stm, val_list)
|
||||
|
||||
# return table raws list
|
||||
def _get_raws(self, table_name):
|
||||
cursor = self.connection.execute('SELECT * FROM ' + table_name)
|
||||
return cursor.fetchall()
|
||||
def _get_raws_indexed(self, table_name):
|
||||
cursor = self.connection.execute('SELECT * FROM ' + table_name + ' order by "Index" asc;')
|
||||
return cursor.fetchall()
|
||||
def _get_raw_by_id(self, table_name, rec_id):
|
||||
cursor = self.connection.execute('SELECT * FROM ' + table_name + ' WHERE "Index"=?', (rec_id,))
|
||||
raws = cursor.fetchall()
|
||||
if len(raws) != 1: raise Exception('Index is not unique, table "' + table_name + '"')
|
||||
return list(raws[0])
|
||||
# populate DB table entry
|
||||
def commit_entry(self, table, val_list):
|
||||
self.insert_entry(table, val_list)
|
||||
self.connection.commit()
|
||||
|
||||
def table_get_raws(self, table_name):
|
||||
return self._get_raws(table_name)
|
||||
# populate DB table data
|
||||
def insert_table(self, table, reader):
|
||||
for val_list in reader:
|
||||
if not val_list[-1]:
|
||||
val_list.pop()
|
||||
self.insert_entry(table, val_list)
|
||||
self.connection.commit()
|
||||
|
||||
# dump CSV table
|
||||
def dump_csv(self, table_name, file_name):
|
||||
if not re.search(r'\.csv$', file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"' )
|
||||
# return table fields list
|
||||
def _get_fields(self, table_name):
|
||||
cursor = self.connection.execute("SELECT * FROM " + table_name)
|
||||
return list(map(lambda x: '"%s"' % (x[0]), cursor.description))
|
||||
|
||||
fields = self._get_fields(table_name)
|
||||
with open(file_name, mode='w') as fd:
|
||||
fd.write(','.join(fields) + '\n')
|
||||
for raw in self._get_raws(table_name):
|
||||
tmp = list(raw)
|
||||
for idx in range(len(tmp)):
|
||||
if type(tmp[idx]) == str:
|
||||
if(not(tmp[idx][0] == tmp[idx][-1] == '"')): tmp[idx] = '"'+tmp[idx]+'"'
|
||||
raw = tuple(tmp)
|
||||
fd.write(reduce(lambda a, b: str(a) + ',' + str(b), raw) + '\n')
|
||||
# return table raws list
|
||||
def _get_raws(self, table_name):
|
||||
cursor = self.connection.execute("SELECT * FROM " + table_name)
|
||||
return cursor.fetchall()
|
||||
|
||||
# dump JSON trace
|
||||
def open_json(self, file_name):
|
||||
if not re.search(r'\.json$', file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"' )
|
||||
with open(file_name, mode='w') as fd:
|
||||
fd.write('{ "traceEvents":[{}\n');
|
||||
def _get_raws_indexed(self, table_name):
|
||||
cursor = self.connection.execute(
|
||||
"SELECT * FROM " + table_name + ' order by "Index" asc;'
|
||||
)
|
||||
return cursor.fetchall()
|
||||
|
||||
def close_json(self, file_name):
|
||||
if not re.search(r'\.json$', file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"' )
|
||||
with open(file_name, mode='a') as fd:
|
||||
fd.write('}')
|
||||
def _get_raw_by_id(self, table_name, rec_id):
|
||||
cursor = self.connection.execute(
|
||||
"SELECT * FROM " + table_name + ' WHERE "Index"=?', (rec_id,)
|
||||
)
|
||||
raws = cursor.fetchall()
|
||||
if len(raws) != 1:
|
||||
raise Exception('Index is not unique, table "' + table_name + '"')
|
||||
return list(raws[0])
|
||||
|
||||
def label_json(self, pid, label, file_name):
|
||||
if not re.search(r'\.json$', file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"' )
|
||||
with open(file_name, mode='a') as fd:
|
||||
fd.write(',{"args":{"name":"%s"},"ph":"M","pid":%s,"name":"process_name","sort_index":%d}\n' %(label, pid, self.section_index))
|
||||
self.section_index += 1
|
||||
def table_get_raws(self, table_name):
|
||||
return self._get_raws(table_name)
|
||||
|
||||
def flow_json(self, base_id, from_pid, from_us_list, to_pid, to_us_dict, corr_id_list, file_name):
|
||||
if not re.search(r'\.json$', file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"' )
|
||||
with open(file_name, mode='a') as fd:
|
||||
dep_id = base_id
|
||||
for ind in range(len(from_us_list)):
|
||||
corr_id = corr_id_list[ind] if (len(corr_id_list) != 0) else ind
|
||||
if corr_id in to_us_dict:
|
||||
(from_ts, stream_id, tid) = from_us_list[ind]
|
||||
to_ts = to_us_dict[corr_id]
|
||||
if from_ts > to_ts: from_ts = to_ts
|
||||
fd.write(',{"ts":%d,"ph":"s","cat":"DataFlow","id":%d,"pid":%d,"tid":%d,"name":"dep"}\n' % (from_ts, dep_id, from_pid, tid))
|
||||
fd.write(',{"ts":%d,"ph":"t","cat":"DataFlow","id":%d,"pid":%d,"tid":%d,"name":"dep"}\n' % (to_ts, dep_id, to_pid, stream_id))
|
||||
dep_id += 1
|
||||
# dump CSV table
|
||||
def dump_csv(self, table_name, file_name):
|
||||
if not re.search(r"\.csv$", file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"')
|
||||
|
||||
def metadata_json(self, jsonfile, sysinfo_file):
|
||||
params = gen_params(sysinfo_file);
|
||||
with open(jsonfile, mode='a') as fd:
|
||||
cnt = 0
|
||||
fd.write('],\n')
|
||||
fd.write('"otherData": {\n')
|
||||
for nkey in sorted(params.keys()):
|
||||
key = nkey[1]
|
||||
cnt = cnt + 1
|
||||
if cnt == len(params):
|
||||
fd.write(' "' + key + '": "' + params[nkey] + '"\n')
|
||||
else:
|
||||
fd.write(' "' + key + '": "' + params[nkey] + '",\n')
|
||||
fd.write(' }\n')
|
||||
fields = self._get_fields(table_name)
|
||||
with open(file_name, mode="w") as fd:
|
||||
fd.write(",".join(fields) + "\n")
|
||||
for raw in self._get_raws(table_name):
|
||||
tmp = list(raw)
|
||||
for idx in range(len(tmp)):
|
||||
if type(tmp[idx]) == str:
|
||||
if not (tmp[idx][0] == tmp[idx][-1] == '"'):
|
||||
tmp[idx] = '"' + tmp[idx] + '"'
|
||||
raw = tuple(tmp)
|
||||
fd.write(reduce(lambda a, b: str(a) + "," + str(b), raw) + "\n")
|
||||
|
||||
def dump_json(self, table_name, data_name, file_name):
|
||||
if not re.search(r'\.json$', file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"' )
|
||||
# dump JSON trace
|
||||
def open_json(self, file_name):
|
||||
if not re.search(r"\.json$", file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"')
|
||||
with open(file_name, mode="w") as fd:
|
||||
fd.write('{ "traceEvents":[{}\n')
|
||||
|
||||
sub_ptrn = re.compile(r'(^"|"$)')
|
||||
name_ptrn = re.compile(r'(name|Name)')
|
||||
def close_json(self, file_name):
|
||||
if not re.search(r"\.json$", file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"')
|
||||
with open(file_name, mode="a") as fd:
|
||||
fd.write("}")
|
||||
|
||||
table_fields = self._get_fields(table_name)
|
||||
table_raws = self._get_raws(table_name)
|
||||
data_fields = self._get_fields(data_name)
|
||||
data_raws = self._get_raws(data_name)
|
||||
def label_json(self, pid, label, file_name):
|
||||
if not re.search(r"\.json$", file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"')
|
||||
with open(file_name, mode="a") as fd:
|
||||
fd.write(
|
||||
',{"args":{"name":"%s"},"ph":"M","pid":%s,"name":"process_name","sort_index":%d}\n'
|
||||
% (label, pid, self.section_index)
|
||||
)
|
||||
self.section_index += 1
|
||||
|
||||
with open(file_name, mode='a') as fd:
|
||||
table_raws_len = len(table_raws)
|
||||
for raw_index in range(table_raws_len):
|
||||
if (raw_index == table_raws_len - 1) or (raw_index % 1000 == 0):
|
||||
sys.stdout.write( \
|
||||
"\rdump json " + str(raw_index) + ":" + str(len(table_raws)) + " "*100 \
|
||||
)
|
||||
def flow_json(
|
||||
self, base_id, from_pid, from_us_list, to_pid, to_us_dict, corr_id_list, file_name
|
||||
):
|
||||
if not re.search(r"\.json$", file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"')
|
||||
with open(file_name, mode="a") as fd:
|
||||
dep_id = base_id
|
||||
for ind in range(len(from_us_list)):
|
||||
corr_id = corr_id_list[ind] if (len(corr_id_list) != 0) else ind
|
||||
if corr_id in to_us_dict:
|
||||
(from_ts, stream_id, tid) = from_us_list[ind]
|
||||
to_ts = to_us_dict[corr_id]
|
||||
if from_ts > to_ts:
|
||||
from_ts = to_ts
|
||||
fd.write(
|
||||
',{"ts":%d,"ph":"s","cat":"DataFlow","id":%d,"pid":%d,"tid":%d,"name":"dep"}\n'
|
||||
% (from_ts, dep_id, from_pid, tid)
|
||||
)
|
||||
fd.write(
|
||||
',{"ts":%d,"ph":"t","cat":"DataFlow","id":%d,"pid":%d,"tid":%d,"name":"dep"}\n'
|
||||
% (to_ts, dep_id, to_pid, stream_id)
|
||||
)
|
||||
dep_id += 1
|
||||
|
||||
vals_list = []
|
||||
values = list(table_raws[raw_index])
|
||||
for value_index in range(len(values)):
|
||||
label = table_fields[value_index]
|
||||
value = values[value_index]
|
||||
if name_ptrn.search(label): value = sub_ptrn.sub(r'', value)
|
||||
if label != '"Index"':
|
||||
if label == '"dur"' and value == 0:
|
||||
vals_list.append('%s:"%s"' % (label, "1"))
|
||||
else:
|
||||
vals_list.append('%s:"%s"' % (label, value))
|
||||
def metadata_json(self, jsonfile, sysinfo_file):
|
||||
params = gen_params(sysinfo_file)
|
||||
with open(jsonfile, mode="a") as fd:
|
||||
cnt = 0
|
||||
fd.write("],\n")
|
||||
fd.write('"otherData": {\n')
|
||||
for nkey in sorted(params.keys()):
|
||||
key = nkey[1]
|
||||
cnt = cnt + 1
|
||||
if cnt == len(params):
|
||||
fd.write(' "' + key + '": "' + params[nkey] + '"\n')
|
||||
else:
|
||||
fd.write(' "' + key + '": "' + params[nkey] + '",\n')
|
||||
fd.write(" }\n")
|
||||
|
||||
args_list = []
|
||||
data = list(data_raws[raw_index])
|
||||
for value_index in range(len(data)):
|
||||
label = data_fields[value_index]
|
||||
value = data[value_index]
|
||||
if label[:3] == '"__': continue
|
||||
if name_ptrn.search(label): value = sub_ptrn.sub(r'', value)
|
||||
if label != '"Index"' and label != '"roctx-range"': args_list.append('%s:"%s"' % (label, value))
|
||||
def dump_json(self, table_name, data_name, file_name):
|
||||
if not re.search(r"\.json$", file_name):
|
||||
raise Exception('wrong output file type: "' + file_name + '"')
|
||||
|
||||
fd.write(',{"ph":"%s",%s,\n "args":{\n %s\n }\n}\n' % ('X', ','.join(vals_list), ',\n '.join(args_list)))
|
||||
sub_ptrn = re.compile(r'(^"|"$)')
|
||||
name_ptrn = re.compile(r"(name|Name)")
|
||||
|
||||
sys.stdout.write('\n')
|
||||
table_fields = self._get_fields(table_name)
|
||||
table_raws = self._get_raws(table_name)
|
||||
data_fields = self._get_fields(data_name)
|
||||
data_raws = self._get_raws(data_name)
|
||||
|
||||
# execute query on DB
|
||||
def execute(self, cmd):
|
||||
cursor = self.connection.cursor()
|
||||
cursor.execute(cmd)
|
||||
with open(file_name, mode="a") as fd:
|
||||
table_raws_len = len(table_raws)
|
||||
for raw_index in range(table_raws_len):
|
||||
if (raw_index == table_raws_len - 1) or (raw_index % 1000 == 0):
|
||||
sys.stdout.write(
|
||||
"\rdump json "
|
||||
+ str(raw_index)
|
||||
+ ":"
|
||||
+ str(len(table_raws))
|
||||
+ " " * 100
|
||||
)
|
||||
|
||||
# commit DB
|
||||
def commit(self):
|
||||
self.connection.commit()
|
||||
vals_list = []
|
||||
values = list(table_raws[raw_index])
|
||||
for value_index in range(len(values)):
|
||||
label = table_fields[value_index]
|
||||
value = values[value_index]
|
||||
if name_ptrn.search(label):
|
||||
value = sub_ptrn.sub(r"", value)
|
||||
if label != '"Index"':
|
||||
if label == '"dur"' and value == 0:
|
||||
vals_list.append('%s:"%s"' % (label, "1"))
|
||||
else:
|
||||
vals_list.append('%s:"%s"' % (label, value))
|
||||
|
||||
# close DB
|
||||
def close(self):
|
||||
self.connection.commit()
|
||||
self.connection.close()
|
||||
args_list = []
|
||||
data = list(data_raws[raw_index])
|
||||
for value_index in range(len(data)):
|
||||
label = data_fields[value_index]
|
||||
value = data[value_index]
|
||||
if label[:3] == '"__':
|
||||
continue
|
||||
if name_ptrn.search(label):
|
||||
value = sub_ptrn.sub(r"", value)
|
||||
if label != '"Index"' and label != '"roctx-range"':
|
||||
args_list.append('%s:"%s"' % (label, value))
|
||||
|
||||
# access DB
|
||||
def get_raws(self, table_name):
|
||||
cur = self.connection.cursor()
|
||||
cur.execute("SELECT * FROM %s" % table_name)
|
||||
return cur.fetchall()
|
||||
fd.write(
|
||||
',{"ph":"%s",%s,\n "args":{\n %s\n }\n}\n'
|
||||
% ("X", ",".join(vals_list), ",\n ".join(args_list))
|
||||
)
|
||||
|
||||
# return CSV descriptor
|
||||
# list of fields and dictionaly for the fields types
|
||||
def _get_csv_descr(self, table_name, fd):
|
||||
reader = csv.DictReader(fd)
|
||||
field_names = reader.fieldnames
|
||||
if not field_names[-1]: field_names.pop()
|
||||
field_types = {}
|
||||
sys.stdout.write("\n")
|
||||
|
||||
for entry in reader:
|
||||
fields_left = [f for f in field_names if f not in field_types.keys()]
|
||||
# all fields processed
|
||||
if not fields_left: break
|
||||
# execute query on DB
|
||||
def execute(self, cmd):
|
||||
cursor = self.connection.cursor()
|
||||
cursor.execute(cmd)
|
||||
|
||||
for field in fields_left:
|
||||
data = entry[field]
|
||||
# need data for the field to be processed
|
||||
if len(data) == 0: continue
|
||||
# commit DB
|
||||
def commit(self):
|
||||
self.connection.commit()
|
||||
|
||||
if data.isdigit():
|
||||
field_types[field] = "INTEGER"
|
||||
else:
|
||||
field_types[field] = "TEXT"
|
||||
# close DB
|
||||
def close(self):
|
||||
self.connection.commit()
|
||||
self.connection.close()
|
||||
|
||||
if len(fields_left) > 0: raise Exception('types not found for fields: ', fields_left)
|
||||
return (field_names, field_types)
|
||||
# access DB
|
||||
def get_raws(self, table_name):
|
||||
cur = self.connection.cursor()
|
||||
cur.execute("SELECT * FROM %s" % table_name)
|
||||
return cur.fetchall()
|
||||
|
||||
# return CSV descriptor
|
||||
# list of fields and dictionaly for the fields types
|
||||
def _get_csv_descr(self, table_name, fd):
|
||||
reader = csv.DictReader(fd)
|
||||
field_names = reader.fieldnames
|
||||
if not field_names[-1]:
|
||||
field_names.pop()
|
||||
field_types = {}
|
||||
|
||||
for entry in reader:
|
||||
fields_left = [f for f in field_names if f not in field_types.keys()]
|
||||
# all fields processed
|
||||
if not fields_left:
|
||||
break
|
||||
|
||||
for field in fields_left:
|
||||
data = entry[field]
|
||||
# need data for the field to be processed
|
||||
if len(data) == 0:
|
||||
continue
|
||||
|
||||
if data.isdigit():
|
||||
field_types[field] = "INTEGER"
|
||||
else:
|
||||
field_types[field] = "TEXT"
|
||||
|
||||
if len(fields_left) > 0:
|
||||
raise Exception("types not found for fields: ", fields_left)
|
||||
return (field_names, field_types)
|
||||
|
||||
# add CSV table
|
||||
def add_csv_table(self, table_name, file_name, extra=()):
|
||||
with open(file_name, mode="r") as fd:
|
||||
# get CSV table descriptor
|
||||
descr = self._get_csv_descr(table_name, fd)
|
||||
# reader to populate the table
|
||||
fd.seek(0)
|
||||
reader = csv.reader(fd)
|
||||
reader.next()
|
||||
table = self.add_table(table_name, descr, extra)
|
||||
self.insert_table(table, reader)
|
||||
|
||||
# add CSV table
|
||||
def add_csv_table(self, table_name, file_name, extra = ()):
|
||||
with open(file_name, mode='r') as fd:
|
||||
# get CSV table descriptor
|
||||
descr = self._get_csv_descr(table_name, fd)
|
||||
# reader to populate the table
|
||||
fd.seek(0)
|
||||
reader = csv.reader(fd)
|
||||
reader.next()
|
||||
table = self.add_table(table_name, descr, extra)
|
||||
self.insert_table(table, reader)
|
||||
|
||||
##############################################################################################
|
||||
|
||||
+980
-625
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
Diff 로드
@@ -22,89 +22,92 @@
|
||||
|
||||
import os, sys, re
|
||||
|
||||
|
||||
# gen_params() takes a text file like the output of rocminfo cmd and parses it into a map {key,value}
|
||||
# where key is the param and value is the value of this param
|
||||
# for example: Threadmodel : "posix"
|
||||
# it also processes encompasing sections to generate a full param name such as (section names separated by '_'):
|
||||
# "Agent2_PoolInfo_ISAInfo_ISA1_WorkgroupMaxSizeperDimension_x": "1024(0x400)",
|
||||
def gen_params(txtfile):
|
||||
fields = {}
|
||||
counter = 0
|
||||
parent_field = ''
|
||||
nbr_indent = 0
|
||||
nbr_indent_prev = 0
|
||||
check_for_dims = False
|
||||
with open(txtfile) as fp:
|
||||
for line in fp:
|
||||
me = re.match(r'\*\*\* Done \*\*\*',line) #Marks the end of cmd
|
||||
if me:
|
||||
parent_field = ''
|
||||
nbr_indent = 0
|
||||
nbr_indent_prev = 0
|
||||
check_for_dims = False
|
||||
continue
|
||||
mv = re.match(r'HCC clang version\s+(.*)',line) # outlier: only line with a version number and no ':', special case
|
||||
if mv:
|
||||
key = 'HCCclangversion'
|
||||
val = mv.group(1)
|
||||
counter = counter + 1
|
||||
fields[(counter,key)] = val
|
||||
continue
|
||||
# Variable 'check_for_dims' is True for text like this:
|
||||
# Workgroup Max Size per Dimension:
|
||||
# x 1024(0x400)
|
||||
# y 1024(0x400)
|
||||
# z 1024(0x400)
|
||||
if check_for_dims == True:
|
||||
mc = re.match(r'\s*([x|y|z])\s+(.*)',line)
|
||||
if mc:
|
||||
key_sav = mc.group(1)
|
||||
if parent_field != '':
|
||||
key = parent_field + '.' + mc.group(1)
|
||||
else:
|
||||
key = mc.group(1)
|
||||
val = re.sub(r"\s+", "", mc.group(2))
|
||||
counter = counter + 1
|
||||
fields[(counter,key)] = val
|
||||
if key_sav == 'z':
|
||||
check_for_dims = False
|
||||
nbr_indent_prev = nbr_indent
|
||||
mi = re.search(r'^(\s+)\w+.*', line)
|
||||
md = re.search(':', line)
|
||||
if mi:
|
||||
nbr_indent = int(len(mi.group(1)) / 2) #indentation cnt
|
||||
else:
|
||||
if not md:
|
||||
tmp = re.sub(r"\s+", "", line)
|
||||
if tmp.isalnum():
|
||||
parent_field = tmp
|
||||
fields = {}
|
||||
counter = 0
|
||||
parent_field = ""
|
||||
nbr_indent = 0
|
||||
nbr_indent_prev = 0
|
||||
check_for_dims = False
|
||||
with open(txtfile) as fp:
|
||||
for line in fp:
|
||||
me = re.match(r"\*\*\* Done \*\*\*", line) # Marks the end of cmd
|
||||
if me:
|
||||
parent_field = ""
|
||||
nbr_indent = 0
|
||||
nbr_indent_prev = 0
|
||||
check_for_dims = False
|
||||
continue
|
||||
mv = re.match(
|
||||
r"HCC clang version\s+(.*)", line
|
||||
) # outlier: only line with a version number and no ':', special case
|
||||
if mv:
|
||||
key = "HCCclangversion"
|
||||
val = mv.group(1)
|
||||
counter = counter + 1
|
||||
fields[(counter, key)] = val
|
||||
continue
|
||||
# Variable 'check_for_dims' is True for text like this:
|
||||
# Workgroup Max Size per Dimension:
|
||||
# x 1024(0x400)
|
||||
# y 1024(0x400)
|
||||
# z 1024(0x400)
|
||||
if check_for_dims == True:
|
||||
mc = re.match(r"\s*([x|y|z])\s+(.*)", line)
|
||||
if mc:
|
||||
key_sav = mc.group(1)
|
||||
if parent_field != "":
|
||||
key = parent_field + "." + mc.group(1)
|
||||
else:
|
||||
key = mc.group(1)
|
||||
val = re.sub(r"\s+", "", mc.group(2))
|
||||
counter = counter + 1
|
||||
fields[(counter, key)] = val
|
||||
if key_sav == "z":
|
||||
check_for_dims = False
|
||||
nbr_indent_prev = nbr_indent
|
||||
mi = re.search(r"^(\s+)\w+.*", line)
|
||||
md = re.search(":", line)
|
||||
if mi:
|
||||
nbr_indent = int(len(mi.group(1)) / 2) # indentation cnt
|
||||
else:
|
||||
if not md:
|
||||
tmp = re.sub(r"\s+", "", line)
|
||||
if tmp.isalnum():
|
||||
parent_field = tmp
|
||||
|
||||
if nbr_indent < nbr_indent_prev:
|
||||
go_back_parent = (nbr_indent_prev - nbr_indent)
|
||||
for i in range(go_back_parent): #decrease as many levels up as needed
|
||||
pos = parent_field.rfind('.')
|
||||
if pos != -1:
|
||||
parent_field = parent_field[:pos]
|
||||
# Process lines such as :
|
||||
# Segment: GLOBAL; FLAGS: KERNARG, FINE GRAINED
|
||||
# Size: 131897644(0x7dc992c) KB
|
||||
for lin in line.split(';'):
|
||||
lin = re.sub(r"\s+", "", lin)
|
||||
m = re.match(r'(.*):(.*)', lin)
|
||||
if m:
|
||||
key, val = m.group(1), m.group(2)
|
||||
if parent_field != '':
|
||||
key = parent_field + '.' + key
|
||||
if val == '':
|
||||
mk = re.match(r'.*Dimension',key)
|
||||
if mk: # expect x,y,z on next 3 lines
|
||||
check_for_dims = True
|
||||
parent_field = key
|
||||
else:
|
||||
counter = counter + 1
|
||||
fields[(counter,key)] = val
|
||||
else:
|
||||
if nbr_indent != nbr_indent_prev and not check_for_dims :
|
||||
parent_field = parent_field + '.' + lin.replace(':','')
|
||||
if nbr_indent < nbr_indent_prev:
|
||||
go_back_parent = nbr_indent_prev - nbr_indent
|
||||
for i in range(go_back_parent): # decrease as many levels up as needed
|
||||
pos = parent_field.rfind(".")
|
||||
if pos != -1:
|
||||
parent_field = parent_field[:pos]
|
||||
# Process lines such as :
|
||||
# Segment: GLOBAL; FLAGS: KERNARG, FINE GRAINED
|
||||
# Size: 131897644(0x7dc992c) KB
|
||||
for lin in line.split(";"):
|
||||
lin = re.sub(r"\s+", "", lin)
|
||||
m = re.match(r"(.*):(.*)", lin)
|
||||
if m:
|
||||
key, val = m.group(1), m.group(2)
|
||||
if parent_field != "":
|
||||
key = parent_field + "." + key
|
||||
if val == "":
|
||||
mk = re.match(r".*Dimension", key)
|
||||
if mk: # expect x,y,z on next 3 lines
|
||||
check_for_dims = True
|
||||
parent_field = key
|
||||
else:
|
||||
counter = counter + 1
|
||||
fields[(counter, key)] = val
|
||||
else:
|
||||
if nbr_indent != nbr_indent_prev and not check_for_dims:
|
||||
parent_field = parent_field + "." + lin.replace(":", "")
|
||||
|
||||
return fields
|
||||
return fields
|
||||
|
||||
+12
-18
@@ -50,7 +50,11 @@ while [ 1 ] ; do
|
||||
elif [[ "$1" = "-cb" || "$1" = "--clean-build" ]] ; then
|
||||
TO_CLEAN=yes
|
||||
shift
|
||||
elif [[ "$1" = "-"* || "$1" = "--"* ]] ; then
|
||||
elif [ "$1" = "--" ] ; then
|
||||
shift
|
||||
EXTRA_BUILD_ARGS=$@
|
||||
break
|
||||
elif [[ "$1" = "-"* ]] ; then
|
||||
echo -e "Wrong option \"$1\", Please use the following options:\n"
|
||||
usage
|
||||
exit 1
|
||||
@@ -73,14 +77,14 @@ if [ -z "$RUN_TEST" ] ; then RUN_TEST=no; fi
|
||||
if [ -z "$ASAN" ] ; then ASAN=False; fi
|
||||
if [ -z "$GPU_LIST" ] ; then GPU_LIST="gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942 gfx1030 gfx1100 gfx1101 gfx1102"; fi
|
||||
|
||||
|
||||
ROCPROFILER_ROOT=$(cd $ROCPROFILER_ROOT && echo $PWD)
|
||||
|
||||
if [ "$TO_CLEAN" = "yes" ] ; then rm -rf $BUILD_DIR; fi
|
||||
mkdir -p $BUILD_DIR
|
||||
pushd $BUILD_DIR
|
||||
|
||||
cmake \
|
||||
cmake -B ${BUILD_DIR} ${ROCPROFILER_ROOT} \
|
||||
-DROCPROFILER_BUILD_CI=1 \
|
||||
-DROCPROFILER_BUILD_TESTS=1 \
|
||||
-DROCPROFILER_BUILD_SAMPLES=1 \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=TRUE \
|
||||
-DCMAKE_BUILD_TYPE=${BUILD_TYPE:-'RelWithDebInfo'} \
|
||||
-DCMAKE_MODULE_PATH="${ROCM_PATH}/hip/cmake;${ROCM_PATH}/lib/cmake" \
|
||||
@@ -96,19 +100,9 @@ cmake \
|
||||
-DCPACK_READELF_EXECUTABLE="${PACKAGE_ROOT}/llvm/bin/llvm-readelf" \
|
||||
-DCPACK_STRIP_EXECUTABLE="${PACKAGE_ROOT}/llvm/bin/llvm-strip" \
|
||||
-DCPACK_OBJDUMP_EXECUTABLE="${PACKAGE_ROOT}/llvm/bin/llvm-objdump" \
|
||||
-DHIP_ROOT_DIR=${ROCM_PATH} \
|
||||
$ROCPROFILER_ROOT
|
||||
${EXTRA_BUILD_ARGS}
|
||||
|
||||
popd
|
||||
|
||||
MAKE_OPTS="-j -C $ROCPROFILER_ROOT/$BUILD_DIR"
|
||||
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS mytest
|
||||
if [ "$RUN_TEST" = "no" ] ; then
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS tests samples doc package
|
||||
else
|
||||
cmake --build "$BUILD_DIR" -- $MAKE_OPTS tests
|
||||
fi
|
||||
cmake --build "$BUILD_DIR" --target all --parallel $(nproc)
|
||||
cmake --build "$BUILD_DIR" --target package --parallel $(nproc)
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
cmake_minimum_required(VERSION 3.18.0 FATAL_ERROR)
|
||||
|
||||
if(NOT @GTEST_DISCOVER_TESTS_TARGET@_TESTS)
|
||||
message(FATAL_ERROR "@GTEST_DISCOVER_TESTS_TARGET@_TESTS is not defined")
|
||||
endif()
|
||||
|
||||
foreach(_TEST ${@GTEST_DISCOVER_TESTS_TARGET@_TESTS})
|
||||
set_tests_properties(
|
||||
${_TEST} PROPERTIES LABELS "@GTEST_DISCOVER_TESTS_LABELS@" ENVIRONMENT
|
||||
"@GTEST_DISCOVER_TESTS_ENVIRONMENT@")
|
||||
endforeach()
|
||||
+15
-21
@@ -20,29 +20,25 @@
|
||||
# THE SOFTWARE.
|
||||
################################################################################
|
||||
|
||||
# Linux Compiler options
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fms-extensions")
|
||||
add_library(rocprofiler-build-flags INTERFACE)
|
||||
add_library(rocprofiler::build-flags ALIAS rocprofiler-build-flags)
|
||||
|
||||
add_definitions(-DNEW_TRACE_API=1)
|
||||
|
||||
# CLANG options
|
||||
if("$ENV{CXX}" STREQUAL "/usr/bin/clang++")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ferror-limit=1000000")
|
||||
endif()
|
||||
target_compile_options(
|
||||
rocprofiler-build-flags
|
||||
INTERFACE $<$<COMPILE_LANGUAGE:C,CXX>:-W -Wall -Wextra -Wno-unused-parameter>
|
||||
$<$<COMPILE_LANGUAGE:CXX>:-fms-extensions>
|
||||
$<$<COMPILE_LANGUAGE:CXX>:$<$<CXX_COMPILER_ID:Clang>:-ferror-limit=1000000>>
|
||||
)
|
||||
target_compile_definitions(rocprofiler-build-flags INTERFACE NEW_TRACE_API=1)
|
||||
|
||||
# Enable debug trace
|
||||
if(DEFINED ENV{CMAKE_DEBUG_TRACE})
|
||||
add_definitions(-DDEBUG_TRACE=1)
|
||||
endif()
|
||||
|
||||
# Enable AQL-profile new API
|
||||
if(NOT DEFINED ENV{CMAKE_CURR_API})
|
||||
add_definitions(-DAQLPROF_NEW_API=1)
|
||||
if(ROCPROFILER_DEBUG_TRACE)
|
||||
target_compile_definitions(rocprofiler-build-flags INTERFACE DEBUG_TRACE=1)
|
||||
endif()
|
||||
|
||||
# Enable direct loading of AQL-profile HSA extension
|
||||
if(DEFINED ENV{CMAKE_LD_AQLPROFILE})
|
||||
add_definitions(-DROCP_LD_AQLPROFILE=1)
|
||||
if(ROCPROFILER_LD_AQLPROFILE)
|
||||
target_compile_definitions(rocprofiler-build-flags INTERFACE ROCP_LD_AQLPROFILE=1)
|
||||
endif()
|
||||
|
||||
# Find hsa-runtime
|
||||
@@ -85,10 +81,8 @@ if("${ROCM_ROOT_DIR}" STREQUAL "")
|
||||
endif()
|
||||
|
||||
find_library(
|
||||
FIND_AQL_PROFILE_LIB "libhsa-amd-aqlprofile64.so"
|
||||
HSA_AMD_AQLPROFILE_LIBRARY
|
||||
NAMES hsa-amd-aqlprofile64
|
||||
HINTS ${CMAKE_PREFIX_PATH}
|
||||
PATHS ${ROCM_ROOT_DIR}
|
||||
PATH_SUFFIXES lib REQUIRED)
|
||||
if(NOT FIND_AQL_PROFILE_LIB)
|
||||
message("AQL_PROFILE not installed. Please install AQL_PROFILE")
|
||||
endif()
|
||||
@@ -0,0 +1,103 @@
|
||||
# ------------------------------------------------------------------------------#
|
||||
#
|
||||
# creates following targets to format code:
|
||||
# - format
|
||||
# - format-source
|
||||
# - format-cmake
|
||||
# - format-python
|
||||
# - format-rocprofiler-source
|
||||
# - format-rocprofiler-cmake
|
||||
# - format-rocprofiler-python
|
||||
#
|
||||
# ------------------------------------------------------------------------------#
|
||||
|
||||
include_guard(GLOBAL)
|
||||
|
||||
find_program(ROCPROFILER_CLANG_FORMAT_EXE NAMES clang-format-11 clang-format-mp-11)
|
||||
find_program(ROCPROFILER_CMAKE_FORMAT_EXE NAMES cmake-format)
|
||||
find_program(ROCPROFILER_BLACK_FORMAT_EXE NAMES black)
|
||||
|
||||
if(ROCPROFILER_CLANG_FORMAT_EXE
|
||||
OR ROCPROFILER_BLACK_FORMAT_EXE
|
||||
OR ROCPROFILER_CMAKE_FORMAT_EXE)
|
||||
add_custom_target(format-rocprofiler)
|
||||
|
||||
if(NOT TARGET format)
|
||||
add_custom_target(format)
|
||||
endif()
|
||||
|
||||
foreach(_TYPE source python cmake)
|
||||
if(NOT TARGET format-${_TYPE})
|
||||
add_custom_target(format-${_TYPE})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(rocp_sources)
|
||||
set(rocp_headers)
|
||||
set(rocp_cmake_files)
|
||||
set(rocp_python_files)
|
||||
foreach(_DIR include src plugin samples test tests-v2 script cmake_modules)
|
||||
foreach(_TYPE headers sources cmake_files python_files)
|
||||
set(${_TYPE})
|
||||
endforeach()
|
||||
file(GLOB_RECURSE headers ${PROJECT_SOURCE_DIR}/${_DIR}/*.h)
|
||||
file(GLOB_RECURSE sources ${PROJECT_SOURCE_DIR}/${_DIR}/*.cpp)
|
||||
file(GLOB_RECURSE cmake_files ${PROJECT_SOURCE_DIR}/${_DIR}/*CMakeLists.txt
|
||||
${PROJECT_SOURCE_DIR}/${_DIR}/*.cmake)
|
||||
file(GLOB_RECURSE python_files ${PROJECT_SOURCE_DIR}/${_DIR}/*.py)
|
||||
foreach(_TYPE headers sources cmake_files python_files)
|
||||
list(APPEND rocp_${_TYPE} ${${_TYPE}})
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
if(ROCPROFILER_CLANG_FORMAT_EXE)
|
||||
add_custom_target(
|
||||
format-rocprofiler-source
|
||||
${ROCPROFILER_CLANG_FORMAT_EXE} -i ${rocp_sources} ${rocp_headers}
|
||||
COMMENT
|
||||
"[rocprofiler] Running source formatter ${ROCPROFILER_CLANG_FORMAT_EXE}..."
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ROCPROFILER_BLACK_FORMAT_EXE)
|
||||
add_custom_target(
|
||||
format-rocprofiler-python
|
||||
${ROCPROFILER_BLACK_FORMAT_EXE} -q ${rocp_python_files}
|
||||
COMMENT
|
||||
"[rocprofiler] Running Python formatter ${ROCPROFILER_BLACK_FORMAT_EXE}..."
|
||||
)
|
||||
if(NOT TARGET format-python)
|
||||
add_custom_target(format-python)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ROCPROFILER_CMAKE_FORMAT_EXE)
|
||||
add_custom_target(
|
||||
format-rocprofiler-cmake
|
||||
${ROCPROFILER_CMAKE_FORMAT_EXE} -i ${rocp_cmake_files}
|
||||
COMMENT
|
||||
"[rocprofiler] Running CMake formatter ${ROCPROFILER_CMAKE_FORMAT_EXE}..."
|
||||
)
|
||||
if(NOT TARGET format-cmake)
|
||||
add_custom_target(format-cmake)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
foreach(_TYPE source python cmake)
|
||||
if(TARGET format-rocprofiler-${_TYPE})
|
||||
add_dependencies(format-rocprofiler format-rocprofiler-${_TYPE})
|
||||
add_dependencies(format-${_TYPE} format-rocprofiler-${_TYPE})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
foreach(_TYPE source python)
|
||||
if(TARGET format-rocprofiler-${_TYPE})
|
||||
add_dependencies(format format-rocprofiler-${_TYPE})
|
||||
endif()
|
||||
endforeach()
|
||||
else()
|
||||
message(
|
||||
STATUS
|
||||
"no formatting tools (clang-format-11/black/cmake-format) could not be found. formatting build targets not available."
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,30 @@
|
||||
include_guard(DIRECTORY)
|
||||
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# Clang Tidy
|
||||
#
|
||||
# ----------------------------------------------------------------------------------------#
|
||||
|
||||
if(ROCPROFILER_ENABLE_CLANG_TIDY)
|
||||
find_program(ROCPROFILER_CLANG_TIDY_COMMAND NAMES clang-tidy)
|
||||
|
||||
if(NOT ROCPROFILER_CLANG_TIDY_COMMAND)
|
||||
message(
|
||||
WARNING "ROCPROFILER_ENABLE_CLANG_TIDY is ON but clang-tidy is not found!")
|
||||
set(ROCPROFILER_ENABLE_CLANG_TIDY OFF)
|
||||
else()
|
||||
set(CMAKE_CXX_CLANG_TIDY ${ROCPROFILER_CLANG_TIDY_COMMAND}
|
||||
-header-filter=${PROJECT_SOURCE_DIR}/.*)
|
||||
|
||||
# Create a preprocessor definition that depends on .clang-tidy content so the
|
||||
# compile command will change when .clang-tidy changes. This ensures that a
|
||||
# subsequent build re-runs clang-tidy on all sources even if they do not otherwise
|
||||
# need to be recompiled. Nothing actually uses this definition. We add it to
|
||||
# targets on which we run clang-tidy just to get the build dependency on the
|
||||
# .clang-tidy file.
|
||||
file(SHA1 ${PROJECT_SOURCE_DIR}/.clang-tidy clang_tidy_sha1)
|
||||
set(CLANG_TIDY_DEFINITIONS "CLANG_TIDY_SHA1=${clang_tidy_sha1}")
|
||||
unset(clang_tidy_sha1)
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,139 @@
|
||||
if("${PROJECT_SOURCE_DIR}" STREQUAL "${PROJECT_BINARY_DIR}")
|
||||
message(STATUS "")
|
||||
message(STATUS "rocprofiler does not support in-source builds.")
|
||||
message(STATUS "Delete CMakeCache.txt and CMakeFiles in ${PROJECT_SOURCE_DIR}")
|
||||
message(STATUS "and run cmake with `-B <build-directory>`")
|
||||
message(STATUS "")
|
||||
message(FATAL_ERROR "In-source build detected.")
|
||||
endif()
|
||||
|
||||
option(ROCPROFILER_BUILD_TESTS "Enable building the tests" OFF)
|
||||
option(ROCPROFILER_BUILD_SAMPLES "Enable building the code samples" OFF)
|
||||
|
||||
# CLI and FILE plugins are always built
|
||||
foreach(_PLUGIN "ATT" "CTF" "PERFETTO")
|
||||
option(ROCPROFILER_BUILD_PLUGIN_${_PLUGIN} "Enable building the ${_PLUGIN} plugin" ON)
|
||||
endforeach()
|
||||
|
||||
option(ROCPROFILER_DEBUG_TRACE "Enable debug tracing" OFF)
|
||||
mark_as_advanced(ROCPROFILER_DEBUG_TRACE)
|
||||
|
||||
option(ROCPROFILER_LD_AQLPROFILE "Enable direct loading of AQL-profile HSA extension" OFF)
|
||||
mark_as_advanced(ROCPROFILER_LD_AQLPROFILE)
|
||||
|
||||
option(ROCPROFILER_BUILD_CI "Enable continuous integration additions" OFF)
|
||||
mark_as_advanced(ROCPROFILER_BUILD_CI)
|
||||
|
||||
option(ROCPROFILER_ENABLE_CLANG_TIDY "Enable clang-tidy checks" OFF)
|
||||
mark_as_advanced(ROCPROFILER_ENABLE_CLANG_TIDY)
|
||||
|
||||
set(ROCPROFILER_BUILD_TYPES "Release" "RelWithDebInfo" "Debug" "MinSizeRel" "Coverage")
|
||||
|
||||
# export compile commands in the project
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE
|
||||
"Release"
|
||||
CACHE STRING "Build type" FORCE)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE IN_LIST ROCPROFILER_BUILD_TYPES)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"Unsupported build type '${CMAKE_BUILD_TYPE}'. Options: ${ROCPROFILER_BUILD_TYPES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ROCPROFILER_BUILD_CI)
|
||||
foreach(_BUILD_TYPE ${ROCPROFILER_BUILD_TYPES})
|
||||
string(TOUPPER "${_BUILD_TYPE}" _BUILD_TYPE)
|
||||
|
||||
# remove NDEBUG preprocessor def so that asserts are triggered
|
||||
string(REGEX REPLACE ".DNDEBUG" "" CMAKE_C_FLAGS_${_BUILD_TYPE}
|
||||
"${CMAKE_C_FLAGS_${_BUILD_TYPE}}")
|
||||
string(REGEX REPLACE ".DNDEBUG" "" CMAKE_CXX_FLAGS_${_BUILD_TYPE}
|
||||
"${CMAKE_CXX_FLAGS_${_BUILD_TYPE}}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
|
||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${ROCPROFILER_BUILD_TYPES}")
|
||||
endif()
|
||||
|
||||
set(ROCPROFILER_MEMCHECK
|
||||
""
|
||||
CACHE STRING "Memory checker type")
|
||||
mark_as_advanced(ROCPROFILER_MEMCHECK)
|
||||
|
||||
# ASAN is defined by testing team on Jenkins
|
||||
if(ASAN)
|
||||
set(ROCPROFILER_MEMCHECK
|
||||
"AddressSanitizer"
|
||||
CACHE STRING "Memory checker type (forced by ASAN defined)" FORCE)
|
||||
endif()
|
||||
|
||||
set(ROCPROFILER_MEMCHECK_TYPES "ThreadSanitizer" "AddressSanitizer" "LeakSanitizer"
|
||||
"MemorySanitizer" "UndefinedBehaviorSanitizer")
|
||||
|
||||
if(ROCPROFILER_MEMCHECK AND NOT ROCPROFILER_MEMCHECK IN_LIST ROCPROFILER_MEMCHECK_TYPES)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"Unsupported memcheck type '${ROCPROFILER_MEMCHECK}'. Options: ${ROCPROFILER_MEMCHECK_TYPES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
set_property(CACHE ROCPROFILER_MEMCHECK PROPERTY STRINGS "${ROCPROFILER_MEMCHECK_TYPES}")
|
||||
|
||||
add_library(rocprofiler-memcheck INTERFACE)
|
||||
add_library(rocprofiler::memcheck ALIAS rocprofiler-memcheck)
|
||||
|
||||
function(rocprofiler_add_memcheck_flags _TYPE)
|
||||
target_compile_options(
|
||||
rocprofiler-memcheck INTERFACE $<BUILD_INTERFACE:-g3 -Og -fno-omit-frame-pointer
|
||||
-fsanitize=${_TYPE}>)
|
||||
target_link_options(rocprofiler-memcheck INTERFACE
|
||||
$<BUILD_INTERFACE:-fsanitize=${_TYPE} -Wl,--no-undefined>)
|
||||
endfunction()
|
||||
|
||||
function(rocprofiler_set_memcheck_env _TYPE _LIB_BASE)
|
||||
set(_LIBS ${_LIB_BASE})
|
||||
foreach(_N 6 5 4 3 2 1 0)
|
||||
list(
|
||||
APPEND _LIBS
|
||||
${CMAKE_SHARED_LIBRARY_PREFIX}${_LIB_BASE}${CMAKE_SHARED_LIBRARY_SUFFIX}.${_N}
|
||||
)
|
||||
endforeach()
|
||||
foreach(_LIB ${_LIBS})
|
||||
if(NOT ${_TYPE}_LIBRARY)
|
||||
find_library(${_TYPE}_LIBRARY NAMES ${_LIB} ${ARGN})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
target_link_libraries(rocprofiler-memcheck INTERFACE ${_LIB_BASE})
|
||||
|
||||
if(${_TYPE}_LIBRARY)
|
||||
set(ROCPROFILER_MEMCHECK_PRELOAD_ENV
|
||||
"LD_PRELOAD=${${_TYPE}_LIBRARY};LD_LIBRARY_PATH=${PROJECT_BINARY_DIR}/lib:$ENV{LD_LIBRARY_PATH}"
|
||||
CACHE INTERNAL "LD_PRELOAD env variable for tests" FORCE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# always unset so that it doesn't preload if memcheck disabled
|
||||
unset(ROCPROFILER_MEMCHECK_PRELOAD_ENV CACHE)
|
||||
|
||||
if(ROCPROFILER_MEMCHECK STREQUAL "AddressSanitizer")
|
||||
rocprofiler_add_memcheck_flags("address")
|
||||
rocprofiler_set_memcheck_env("${ROCPROFILER_MEMCHECK}" "asan")
|
||||
elseif(ROCPROFILER_MEMCHECK STREQUAL "LeakSanitizer")
|
||||
rocprofiler_add_memcheck_flags("leak")
|
||||
rocprofiler_set_memcheck_env("${ROCPROFILER_MEMCHECK}" "lsan")
|
||||
elseif(ROCPROFILER_MEMCHECK STREQUAL "MemorySanitizer")
|
||||
rocprofiler_add_memcheck_flags("memory")
|
||||
elseif(ROCPROFILER_MEMCHECK STREQUAL "ThreadSanitizer")
|
||||
rocprofiler_add_memcheck_flags("thread")
|
||||
rocprofiler_set_memcheck_env("${ROCPROFILER_MEMCHECK}" "tsan")
|
||||
elseif(ROCPROFILER_MEMCHECK STREQUAL "UndefinedBehaviorSanitizer")
|
||||
rocprofiler_add_memcheck_flags("undefined")
|
||||
rocprofiler_set_memcheck_env("${ROCPROFILER_MEMCHECK}" "ubsan")
|
||||
endif()
|
||||
+4
-4
@@ -22,7 +22,7 @@
|
||||
|
||||
# Parses the VERSION_STRING variable and places the first, second and third number values
|
||||
# in the major, minor and patch variables.
|
||||
function(parse_version VERSION_STRING)
|
||||
function(rocprofiler_parse_version VERSION_STRING)
|
||||
|
||||
string(FIND ${VERSION_STRING} "-" STRING_INDEX)
|
||||
|
||||
@@ -72,9 +72,9 @@ endfunction()
|
||||
|
||||
# Gets the current version of the repository using versioning tags and git describe.
|
||||
# Passes back a packaging version string and a library version string.
|
||||
function(get_version DEFAULT_VERSION_STRING)
|
||||
function(rocprofiler_get_version DEFAULT_VERSION_STRING)
|
||||
|
||||
parse_version(${DEFAULT_VERSION_STRING})
|
||||
rocprofiler_parse_version(${DEFAULT_VERSION_STRING})
|
||||
|
||||
find_program(GIT NAMES git)
|
||||
|
||||
@@ -89,7 +89,7 @@ function(get_version DEFAULT_VERSION_STRING)
|
||||
|
||||
if(${RESULT} EQUAL 0)
|
||||
|
||||
parse_version(${GIT_TAG_STRING})
|
||||
rocprofiler_parse_version(${GIT_TAG_STRING})
|
||||
|
||||
endif()
|
||||
|
||||
@@ -20,8 +20,22 @@
|
||||
# IN THE SOFTWARE.
|
||||
################################################################################
|
||||
|
||||
add_subdirectory(file)
|
||||
add_subdirectory(perfetto)
|
||||
add_subdirectory(ctf)
|
||||
add_subdirectory(att)
|
||||
if(ROCPROFILER_BUILD_CODECOV)
|
||||
set(CMAKE_BUILD_TYPE "Coverage")
|
||||
endif()
|
||||
|
||||
# these two "native" plugins are always built
|
||||
add_subdirectory(cli)
|
||||
add_subdirectory(file)
|
||||
|
||||
if(ROCPROFILER_BUILD_PLUGIN_PERFETTO)
|
||||
add_subdirectory(perfetto)
|
||||
endif()
|
||||
|
||||
if(ROCPROFILER_BUILD_PLUGIN_CTF)
|
||||
add_subdirectory(ctf)
|
||||
endif()
|
||||
|
||||
if(ROCPROFILER_BUILD_PLUGIN_ATT)
|
||||
add_subdirectory(att)
|
||||
endif()
|
||||
|
||||
+250
-158
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
|
||||
if sys.version_info[0] < 3:
|
||||
raise Exception("Must be using Python 3")
|
||||
|
||||
@@ -18,23 +19,33 @@ import gc
|
||||
|
||||
try:
|
||||
from mpi4py import MPI
|
||||
|
||||
MPI_IMPORTED = True
|
||||
except:
|
||||
MPI_IMPORTED = False
|
||||
|
||||
|
||||
class PerfEvent(ctypes.Structure):
|
||||
_fields_ = [
|
||||
('time', c_uint64),
|
||||
('event0', c_uint16),
|
||||
('event1', c_uint16),
|
||||
('event2', c_uint16),
|
||||
('event3', c_uint16),
|
||||
('cu', c_uint8),
|
||||
('bank', c_uint8),
|
||||
("time", c_uint64),
|
||||
("event0", c_uint16),
|
||||
("event1", c_uint16),
|
||||
("event2", c_uint16),
|
||||
("event3", c_uint16),
|
||||
("cu", c_uint8),
|
||||
("bank", c_uint8),
|
||||
]
|
||||
|
||||
def toTuple(self):
|
||||
return (int(self.time), int(self.event0), int(self.event1),
|
||||
int(self.event2), int(self.event3), int(self.cu), int(self.bank))
|
||||
return (
|
||||
int(self.time),
|
||||
int(self.event0),
|
||||
int(self.event1),
|
||||
int(self.event2),
|
||||
int(self.event3),
|
||||
int(self.cu),
|
||||
int(self.bank),
|
||||
)
|
||||
|
||||
|
||||
class CodeWrapped(ctypes.Structure):
|
||||
@@ -64,44 +75,41 @@ class ReturnAssemblyInfo(ctypes.Structure):
|
||||
|
||||
class Wave(ctypes.Structure):
|
||||
_fields_ = [
|
||||
('simd', ctypes.c_uint64),
|
||||
('wave_id', ctypes.c_uint64),
|
||||
('begin_time', ctypes.c_uint64), # Begin and end cycle
|
||||
('end_time', ctypes.c_uint64),
|
||||
|
||||
("simd", ctypes.c_uint64),
|
||||
("wave_id", ctypes.c_uint64),
|
||||
("begin_time", ctypes.c_uint64), # Begin and end cycle
|
||||
("end_time", ctypes.c_uint64),
|
||||
# total VMEM/FLAT/LDS/SMEM instructions issued
|
||||
# total issued memory instructions
|
||||
('num_mem_instrs', ctypes.c_uint64),
|
||||
("num_mem_instrs", ctypes.c_uint64),
|
||||
# total issued instructions (compute + memory)
|
||||
('num_issued_instrs', ctypes.c_uint64),
|
||||
('num_valu_instrs', ctypes.c_uint64),
|
||||
('num_valu_stalls', ctypes.c_uint64),
|
||||
("num_issued_instrs", ctypes.c_uint64),
|
||||
("num_valu_instrs", ctypes.c_uint64),
|
||||
("num_valu_stalls", ctypes.c_uint64),
|
||||
# VMEM Pipeline: instrs and stalls
|
||||
('num_vmem_instrs', ctypes.c_uint64),
|
||||
('num_vmem_stalls', ctypes.c_uint64),
|
||||
("num_vmem_instrs", ctypes.c_uint64),
|
||||
("num_vmem_stalls", ctypes.c_uint64),
|
||||
# FLAT instrs and stalls
|
||||
('num_flat_instrs', ctypes.c_uint64),
|
||||
('num_flat_stalls', ctypes.c_uint64),
|
||||
|
||||
("num_flat_instrs", ctypes.c_uint64),
|
||||
("num_flat_stalls", ctypes.c_uint64),
|
||||
# LDS instr and stalls
|
||||
('num_lds_instrs', ctypes.c_uint64),
|
||||
('num_lds_stalls', ctypes.c_uint64),
|
||||
|
||||
("num_lds_instrs", ctypes.c_uint64),
|
||||
("num_lds_stalls", ctypes.c_uint64),
|
||||
# SCA instrs stalls
|
||||
('num_salu_instrs', ctypes.c_uint64),
|
||||
('num_smem_instrs', ctypes.c_uint64),
|
||||
('num_salu_stalls', ctypes.c_uint64),
|
||||
('num_smem_stalls', ctypes.c_uint64),
|
||||
|
||||
("num_salu_instrs", ctypes.c_uint64),
|
||||
("num_smem_instrs", ctypes.c_uint64),
|
||||
("num_salu_stalls", ctypes.c_uint64),
|
||||
("num_smem_stalls", ctypes.c_uint64),
|
||||
# Branch
|
||||
('num_branch_instrs', ctypes.c_uint64),
|
||||
('num_branch_taken_instrs', ctypes.c_uint64),
|
||||
('num_branch_stalls', ctypes.c_uint64),
|
||||
("num_branch_instrs", ctypes.c_uint64),
|
||||
("num_branch_taken_instrs", ctypes.c_uint64),
|
||||
("num_branch_stalls", ctypes.c_uint64),
|
||||
("timeline_array", POINTER(ctypes.c_int64)),
|
||||
("instructions_array", POINTER(ctypes.c_int64)),
|
||||
("timeline_size", ctypes.c_uint64),
|
||||
("instructions_size", ctypes.c_uint64),
|
||||
]
|
||||
|
||||
('timeline_array', POINTER(ctypes.c_int64)),
|
||||
('instructions_array', POINTER(ctypes.c_int64)),
|
||||
('timeline_size', ctypes.c_uint64),
|
||||
('instructions_size', ctypes.c_uint64)]
|
||||
|
||||
class PythonWave:
|
||||
def __init__(self, source_wave):
|
||||
@@ -110,20 +118,26 @@ class PythonWave:
|
||||
self.timeline_array = None
|
||||
self.instructions_array = None
|
||||
|
||||
|
||||
# Flags :
|
||||
# IS_NAVI = 0x1
|
||||
class ReturnInfo(ctypes.Structure):
|
||||
_fields_ = [('num_waves', ctypes.c_uint64),
|
||||
('wavedata', POINTER(Wave)),
|
||||
('num_events', ctypes.c_uint64),
|
||||
('perfevents', POINTER(PerfEvent)),
|
||||
('occupancy', POINTER(ctypes.c_uint64)),
|
||||
('num_occupancy', ctypes.c_uint64),
|
||||
('flags', ctypes.c_uint64)]
|
||||
_fields_ = [
|
||||
("num_waves", ctypes.c_uint64),
|
||||
("wavedata", POINTER(Wave)),
|
||||
("num_events", ctypes.c_uint64),
|
||||
("perfevents", POINTER(PerfEvent)),
|
||||
("occupancy", POINTER(ctypes.c_uint64)),
|
||||
("num_occupancy", ctypes.c_uint64),
|
||||
("flags", ctypes.c_uint64),
|
||||
]
|
||||
|
||||
rocprofv2_att_lib = os.getenv('ROCPROFV2_ATT_LIB_PATH')
|
||||
|
||||
rocprofv2_att_lib = os.getenv("ROCPROFV2_ATT_LIB_PATH")
|
||||
if rocprofv2_att_lib is None:
|
||||
print("ATT Lib path not set. Use export ROCPROFV2_ATT_LIB_PATH=/path/to/librocprofv2_att.so")
|
||||
print(
|
||||
"ATT Lib path not set. Use export ROCPROFV2_ATT_LIB_PATH=/path/to/librocprofv2_att.so"
|
||||
)
|
||||
quit()
|
||||
path_to_parser = os.path.abspath(rocprofv2_att_lib)
|
||||
SO = CDLL(path_to_parser)
|
||||
@@ -133,18 +147,19 @@ SO.AnalyseBinary.argtypes = [ctypes.c_char_p, ctypes.c_int, ctypes.c_bool]
|
||||
SO.wrapped_parse_binary.argtypes = [ctypes.c_char_p, ctypes.c_char_p]
|
||||
SO.wrapped_parse_binary.restype = ReturnAssemblyInfo
|
||||
|
||||
|
||||
def parse_binary(filename, kernel=None):
|
||||
if kernel is None or kernel == '':
|
||||
if kernel is None or kernel == "":
|
||||
kernel = ctypes.c_char_p(0)
|
||||
print('Parsing all kernels')
|
||||
print("Parsing all kernels")
|
||||
else:
|
||||
with open(glob.glob(kernel)[0], 'r') as file:
|
||||
with open(glob.glob(kernel)[0], "r") as file:
|
||||
kernel = file.readlines()
|
||||
print('Parsing kernel:', kernel[0].split(': ')[0])
|
||||
kernel = kernel[0].split(': ')[1].split('.kd')[0]
|
||||
kernel = str(kernel).encode('utf-8')
|
||||
print("Parsing kernel:", kernel[0].split(": ")[0])
|
||||
kernel = kernel[0].split(": ")[1].split(".kd")[0]
|
||||
kernel = str(kernel).encode("utf-8")
|
||||
filename = os.path.abspath(str(filename))
|
||||
info = SO.wrapped_parse_binary(str(filename).encode('utf-8'), kernel)
|
||||
info = SO.wrapped_parse_binary(str(filename).encode("utf-8"), kernel)
|
||||
|
||||
code = []
|
||||
for k in range(info.code_len):
|
||||
@@ -169,23 +184,32 @@ def parse_binary(filename, kernel=None):
|
||||
|
||||
def getWaves_binary(name, shader_engine_data_dict, target_cu, depth):
|
||||
filename = os.path.abspath(str(name))
|
||||
info = SO.AnalyseBinary(filename.encode('utf-8'), target_cu, False)
|
||||
info = SO.AnalyseBinary(filename.encode("utf-8"), target_cu, False)
|
||||
|
||||
waves = [info.wavedata[k] for k in range(info.num_waves)]
|
||||
events = [deepcopy(info.perfevents[k]) for k in range(info.num_events)]
|
||||
occupancy = [int(info.occupancy[k]) for k in range(int(info.num_occupancy))]
|
||||
flags = 'navi' if (info.flags & 0x1) else 'vega'
|
||||
flags = "navi" if (info.flags & 0x1) else "vega"
|
||||
|
||||
wave_slot_count = [[0 for k in range(20)] for j in range(4)]
|
||||
waves_python = []
|
||||
for wave in waves:
|
||||
if wave_slot_count[wave.simd][wave.wave_id] >= depth or wave.instructions_size == 0:
|
||||
if (
|
||||
wave_slot_count[wave.simd][wave.wave_id] >= depth
|
||||
or wave.instructions_size == 0
|
||||
):
|
||||
continue
|
||||
wave_slot_count[wave.simd][wave.wave_id] += 1
|
||||
pwave = PythonWave(wave)
|
||||
pwave.timeline = [(wave.timeline_array[2*k], wave.timeline_array[2*k+1]) for k in range(wave.timeline_size)]
|
||||
pwave.instructions = [tuple([wave.instructions_array[4*k+m] for m in range(4)]) for k in range(wave.instructions_size)]
|
||||
waves_python.append( pwave )
|
||||
pwave.timeline = [
|
||||
(wave.timeline_array[2 * k], wave.timeline_array[2 * k + 1])
|
||||
for k in range(wave.timeline_size)
|
||||
]
|
||||
pwave.instructions = [
|
||||
tuple([wave.instructions_array[4 * k + m] for m in range(4)])
|
||||
for k in range(wave.instructions_size)
|
||||
]
|
||||
waves_python.append(pwave)
|
||||
shader_engine_data_dict[name] = (waves_python, events, occupancy, flags)
|
||||
|
||||
|
||||
@@ -233,31 +257,31 @@ def persist(trace_file, SIMD):
|
||||
instructions.append(wave.instructions)
|
||||
|
||||
df = {
|
||||
'name': [trace for _ in range(len(begin_time))],
|
||||
'id': [i for i in range(len(begin_time))],
|
||||
'simd': simds,
|
||||
'wave_slot': waves,
|
||||
'begin_time': begin_time,
|
||||
'end_time': end_time,
|
||||
'mem_ins': mem_ins,
|
||||
'issued_ins': issued_ins,
|
||||
'valu_ins': valu_ins,
|
||||
'valu_stalls': valu_stalls,
|
||||
'vmem_ins': vmem_ins,
|
||||
'vmem_stalls': vmem_stalls,
|
||||
'flat_ins': flat_ins,
|
||||
'flat_stalls': flat_stalls,
|
||||
'lds_ins': lds_ins,
|
||||
'lds_stalls': lds_stalls,
|
||||
'salu_ins': salu_ins,
|
||||
'salu_stalls': salu_stalls,
|
||||
'smem_ins': smem_ins,
|
||||
'smem_stalls': smem_stalls,
|
||||
'br_ins': br_ins,
|
||||
'br_taken_ins': br_taken_ins,
|
||||
'br_stalls': br_stalls,
|
||||
'timeline': timeline,
|
||||
'instructions': instructions,
|
||||
"name": [trace for _ in range(len(begin_time))],
|
||||
"id": [i for i in range(len(begin_time))],
|
||||
"simd": simds,
|
||||
"wave_slot": waves,
|
||||
"begin_time": begin_time,
|
||||
"end_time": end_time,
|
||||
"mem_ins": mem_ins,
|
||||
"issued_ins": issued_ins,
|
||||
"valu_ins": valu_ins,
|
||||
"valu_stalls": valu_stalls,
|
||||
"vmem_ins": vmem_ins,
|
||||
"vmem_stalls": vmem_stalls,
|
||||
"flat_ins": flat_ins,
|
||||
"flat_stalls": flat_stalls,
|
||||
"lds_ins": lds_ins,
|
||||
"lds_stalls": lds_stalls,
|
||||
"salu_ins": salu_ins,
|
||||
"salu_stalls": salu_stalls,
|
||||
"smem_ins": smem_ins,
|
||||
"smem_stalls": smem_stalls,
|
||||
"br_ins": br_ins,
|
||||
"br_taken_ins": br_taken_ins,
|
||||
"br_stalls": br_stalls,
|
||||
"timeline": timeline,
|
||||
"instructions": instructions,
|
||||
}
|
||||
return df
|
||||
|
||||
@@ -271,68 +295,85 @@ def mem_max(array):
|
||||
mem_dict[inst[0]][0] = max(mem_dict[inst[0]][0], inst[1])
|
||||
except:
|
||||
mem_dict[inst[0]] = inst[1:]
|
||||
assert(mem_dict[inst[0]][1] == inst[2])
|
||||
assert mem_dict[inst[0]][1] == inst[2]
|
||||
|
||||
return mem_dict
|
||||
|
||||
|
||||
def lgk(count):
|
||||
return 'lgkmcnt({0})'.format(count)
|
||||
return "lgkmcnt({0})".format(count)
|
||||
|
||||
|
||||
def vmc(count):
|
||||
return 'vmcnt({0})'.format(count)
|
||||
return "vmcnt({0})".format(count)
|
||||
|
||||
|
||||
def both_cnt(count):
|
||||
return lgk(count)+' '+vmc(count)
|
||||
return lgk(count) + " " + vmc(count)
|
||||
|
||||
|
||||
def insert_waitcnt(flight_count, assembly_code):
|
||||
flight_count = mem_max(flight_count)
|
||||
for key in sorted(flight_count):
|
||||
line_n = key
|
||||
issue_amount, waitcnt_amount, = flight_count[key]
|
||||
if 'vmcnt' in assembly_code[line_n] and 'lgkmcnt' in assembly_code[line_n]:
|
||||
(
|
||||
issue_amount,
|
||||
waitcnt_amount,
|
||||
) = flight_count[key]
|
||||
if "vmcnt" in assembly_code[line_n] and "lgkmcnt" in assembly_code[line_n]:
|
||||
counter_type = both_cnt
|
||||
elif 'vmcnt' in assembly_code[line_n]:
|
||||
elif "vmcnt" in assembly_code[line_n]:
|
||||
counter_type = vmc
|
||||
elif 'lgkmcnt' in assembly_code[line_n]:
|
||||
elif "lgkmcnt" in assembly_code[line_n]:
|
||||
counter_type = lgk
|
||||
else:
|
||||
print('Error: Line mismatch')
|
||||
print("Error: Line mismatch")
|
||||
exit(-1)
|
||||
|
||||
for count in range(waitcnt_amount+1, issue_amount):
|
||||
print('Inserted line: '+str(line_n))
|
||||
as_index = line_n - count/(issue_amount+1)
|
||||
assembly_code[as_index] = \
|
||||
'\ts_waitcnt {0}\t\t; Timing analysis.'.format(counter_type(count))
|
||||
as_index += 0.5/(issue_amount+1)
|
||||
assembly_code[as_index] = '\ts_nop 0\t\t\t\t\t\t; Counters: '+str(issue_amount)
|
||||
for count in range(waitcnt_amount + 1, issue_amount):
|
||||
print("Inserted line: " + str(line_n))
|
||||
as_index = line_n - count / (issue_amount + 1)
|
||||
assembly_code[as_index] = "\ts_waitcnt {0}\t\t; Timing analysis.".format(
|
||||
counter_type(count)
|
||||
)
|
||||
as_index += 0.5 / (issue_amount + 1)
|
||||
assembly_code[as_index] = "\ts_nop 0\t\t\t\t\t\t; Counters: " + str(
|
||||
issue_amount
|
||||
)
|
||||
|
||||
return assembly_code
|
||||
|
||||
|
||||
def apply_min_event(min_event_time, OCCUPANCY, EVENTS, DBFILES, TIMELINES):
|
||||
for n, occ in enumerate(OCCUPANCY):
|
||||
OCCUPANCY[n] = [max(min(int((u>>16)-min_event_time)<<16,2**42),0) | (u&0xFFFFF) for u in occ]
|
||||
OCCUPANCY[n] = [
|
||||
max(min(int((u >> 16) - min_event_time) << 16, 2**42), 0) | (u & 0xFFFFF)
|
||||
for u in occ
|
||||
]
|
||||
for perf in EVENTS:
|
||||
for p in perf:
|
||||
p.time -= min_event_time
|
||||
|
||||
for df in DBFILES:
|
||||
for T in range(len(df['timeline'])):
|
||||
timeline = df['timeline'][T]
|
||||
for T in range(len(df["timeline"])):
|
||||
timeline = df["timeline"][T]
|
||||
time_acc = 0
|
||||
tuples3 = [(0,df['begin_time'][T]-min_event_time)]+[(int(t[0]),int(t[1])) for t in timeline]
|
||||
tuples3 = [(0, df["begin_time"][T] - min_event_time)] + [
|
||||
(int(t[0]), int(t[1])) for t in timeline
|
||||
]
|
||||
|
||||
for state in tuples3:
|
||||
if state[1] > 1E8:
|
||||
print('Warning: Time limit reached for ',state[0], state[1])
|
||||
if state[1] > 1e8:
|
||||
print("Warning: Time limit reached for ", state[0], state[1])
|
||||
break
|
||||
if time_acc+state[1] > TIMELINES[state[0]].size:
|
||||
TIMELINES[state[0]] = np.hstack([
|
||||
TIMELINES[state[0]],
|
||||
np.zeros_like(TIMELINES[state[0]])
|
||||
])
|
||||
TIMELINES[state[0]][time_acc:time_acc+state[1]] += 1
|
||||
if time_acc + state[1] > TIMELINES[state[0]].size:
|
||||
TIMELINES[state[0]] = np.hstack(
|
||||
[TIMELINES[state[0]], np.zeros_like(TIMELINES[state[0]])]
|
||||
)
|
||||
TIMELINES[state[0]][time_acc : time_acc + state[1]] += 1
|
||||
time_acc += state[1]
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
comm = None
|
||||
mpi_root = True
|
||||
@@ -344,25 +385,41 @@ if __name__ == "__main__":
|
||||
else:
|
||||
mpi_root = comm.Get_rank() == 0
|
||||
except:
|
||||
print('Could not load MPI')
|
||||
print("Could not load MPI")
|
||||
comm = None
|
||||
|
||||
pathenv = os.getenv('OUTPUT_PATH')
|
||||
pathenv = os.getenv("OUTPUT_PATH")
|
||||
if pathenv is None:
|
||||
pathenv = "."
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("assembly_code", help="Path to the assembly code. Must be the first parameter.")
|
||||
parser.add_argument("--depth", help="Maximum number of parsed waves per slot", default=100, type=int)
|
||||
parser.add_argument("--trace_file", help="Filter for trace files", default=None, type=str)
|
||||
parser.add_argument("--att_kernel", help="Kernel file",
|
||||
type=str, default=pathenv+'/*_kernel.txt')
|
||||
parser.add_argument(
|
||||
"assembly_code", help="Path to the assembly code. Must be the first parameter."
|
||||
)
|
||||
parser.add_argument(
|
||||
"--depth", help="Maximum number of parsed waves per slot", default=100, type=int
|
||||
)
|
||||
parser.add_argument(
|
||||
"--trace_file", help="Filter for trace files", default=None, type=str
|
||||
)
|
||||
parser.add_argument(
|
||||
"--att_kernel", help="Kernel file", type=str, default=pathenv + "/*_kernel.txt"
|
||||
)
|
||||
parser.add_argument("--ports", help="Server and websocket ports, default: 8000,18000")
|
||||
parser.add_argument("--genasm",
|
||||
help="Generate post-processed asm file at this path", type=str, default="")
|
||||
parser.add_argument("--mode", help='''ATT analysis modes:\n
|
||||
parser.add_argument(
|
||||
"--genasm",
|
||||
help="Generate post-processed asm file at this path",
|
||||
type=str,
|
||||
default="",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--mode",
|
||||
help="""ATT analysis modes:\n
|
||||
off: Only run ATT collection, disable analysis.\n
|
||||
file: dump json files to disk.\n
|
||||
network: Open att server over the network.''', type=str, default="off")
|
||||
network: Open att server over the network.""",
|
||||
type=str,
|
||||
default="off",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
CSV_MODE = False
|
||||
@@ -370,38 +427,38 @@ if __name__ == "__main__":
|
||||
CSV_MODE = True
|
||||
elif args.mode.lower() == 'file':
|
||||
args.dumpfiles = True
|
||||
elif args.mode.lower() == 'network':
|
||||
elif args.mode.lower() == "network":
|
||||
args.dumpfiles = False
|
||||
else:
|
||||
print('Skipping analysis.')
|
||||
print("Skipping analysis.")
|
||||
quit()
|
||||
|
||||
with open(os.getenv("COUNTERS_PATH"), 'r') as f:
|
||||
lines = [l.split('//')[0] for l in f.readlines()]
|
||||
with open(os.getenv("COUNTERS_PATH"), "r") as f:
|
||||
lines = [l.split("//")[0] for l in f.readlines()]
|
||||
|
||||
EVENT_NAMES = []
|
||||
clean = lambda x: x.split('=')[1].split(' ')[0].split('\n')[0]
|
||||
clean = lambda x: x.split("=")[1].split(" ")[0].split("\n")[0]
|
||||
for line in lines:
|
||||
if 'PERFCOUNTER_ID=' in line:
|
||||
EVENT_NAMES += ['id: '+clean(line)]
|
||||
elif 'att: TARGET_CU' in line:
|
||||
if "PERFCOUNTER_ID=" in line:
|
||||
EVENT_NAMES += ["id: " + clean(line)]
|
||||
elif "att: TARGET_CU" in line:
|
||||
args.target_cu = int(clean(line))
|
||||
for line in lines:
|
||||
if 'PERFCOUNTER=' in line:
|
||||
EVENT_NAMES += [clean(line).split('SQ_')[1].lower()]
|
||||
if "PERFCOUNTER=" in line:
|
||||
EVENT_NAMES += [clean(line).split("SQ_")[1].lower()]
|
||||
if args.target_cu is None:
|
||||
args.target_cu = 1
|
||||
|
||||
att_kernel = glob.glob(args.att_kernel)
|
||||
|
||||
if len(att_kernel) == 0:
|
||||
print('Could not find att output kernel:', args.att_kernel)
|
||||
print("Could not find att output kernel:", args.att_kernel)
|
||||
exit(1)
|
||||
elif len(att_kernel) > 1:
|
||||
if mpi_root:
|
||||
print('Found multiple kernel matching given filters:')
|
||||
print("Found multiple kernel matching given filters:")
|
||||
for n, k in enumerate(att_kernel):
|
||||
print('\t', n, '->', k)
|
||||
print("\t", n, "->", k)
|
||||
|
||||
bValid = False
|
||||
while bValid == False:
|
||||
@@ -411,7 +468,7 @@ if __name__ == "__main__":
|
||||
except KeyboardInterrupt:
|
||||
exit(0)
|
||||
except:
|
||||
print('Invalid option.')
|
||||
print("Invalid option.")
|
||||
if comm is not None:
|
||||
args.att_kernel = comm.bcast(args.att_kernel, root=0)
|
||||
else:
|
||||
@@ -429,13 +486,13 @@ if __name__ == "__main__":
|
||||
|
||||
# Trace Parsing
|
||||
if args.trace_file is None:
|
||||
filenames = glob.glob(args.att_kernel.split('_kernel.txt')[0]+'_*.att')
|
||||
filenames = glob.glob(args.att_kernel.split("_kernel.txt")[0] + "_*.att")
|
||||
else:
|
||||
filenames = glob.glob(args.trace_file)
|
||||
assert(len(filenames) > 0)
|
||||
assert len(filenames) > 0
|
||||
|
||||
if comm is not None:
|
||||
filenames = filenames[comm.Get_rank()::comm.Get_size()]
|
||||
filenames = filenames[comm.Get_rank() :: comm.Get_size()]
|
||||
|
||||
code = jumps = None
|
||||
if mpi_root:
|
||||
@@ -443,7 +500,7 @@ if __name__ == "__main__":
|
||||
code, jumps = parse_binary(args.assembly_code, None if bIsAuto else args.att_kernel)
|
||||
|
||||
DBFILES = []
|
||||
TIMELINES = [np.zeros(int(1E4),dtype=np.int16) for k in range(5)]
|
||||
TIMELINES = [np.zeros(int(1e4), dtype=np.int16) for k in range(5)]
|
||||
EVENTS = []
|
||||
OCCUPANCY = []
|
||||
GFXV = []
|
||||
@@ -479,16 +536,16 @@ if __name__ == "__main__":
|
||||
gc.collect()
|
||||
min_event_time = 2**62
|
||||
for df in DBFILES:
|
||||
if len(df['begin_time']) > 0:
|
||||
min_event_time = min(min_event_time, np.min(df['begin_time']))
|
||||
if len(df["begin_time"]) > 0:
|
||||
min_event_time = min(min_event_time, np.min(df["begin_time"]))
|
||||
for perf in EVENTS:
|
||||
for p in perf:
|
||||
min_event_time = min(min_event_time, p.time)
|
||||
for occ in OCCUPANCY:
|
||||
min_event_time = min(min_event_time, np.min(np.array(occ)>>16))
|
||||
min_event_time = min(min_event_time, np.min(np.array(occ) >> 16))
|
||||
|
||||
gc.collect()
|
||||
min_event_time = max(0, min_event_time-32)
|
||||
min_event_time = max(0, min_event_time - 32)
|
||||
if comm is not None:
|
||||
min_event_time = comm.reduce(min_event_time, op=MPI.MIN)
|
||||
min_event_time = comm.bcast(min_event_time, root=0)
|
||||
@@ -513,14 +570,17 @@ if __name__ == "__main__":
|
||||
OCCUPANCY = [e for elem in OCCUPANCY for e in elem]
|
||||
gathered_filenames = [e for elem in gathered_filenames for e in elem]
|
||||
gfxv = [e for elem in GFXV for e in elem][0]
|
||||
|
||||
|
||||
TIMELINES_GATHER = TIMELINES
|
||||
TIMELINES = [np.zeros((np.max([len(tm[k]) for tm in TIMELINES])), np.int16) for k in range(5)]
|
||||
TIMELINES = [
|
||||
np.zeros((np.max([len(tm[k]) for tm in TIMELINES])), np.int16)
|
||||
for k in range(5)
|
||||
]
|
||||
for gather in TIMELINES_GATHER:
|
||||
for t, m in zip(TIMELINES, gather):
|
||||
t[:len(m)] += m
|
||||
del(TIMELINES_GATHER)
|
||||
else: # free up memory
|
||||
t[: len(m)] += m
|
||||
del TIMELINES_GATHER
|
||||
else: # free up memory
|
||||
TIMELINES = []
|
||||
OCCUPANCY = []
|
||||
EVENTS = []
|
||||
@@ -542,17 +602,49 @@ if __name__ == "__main__":
|
||||
gc.collect()
|
||||
print("Min time:", min_event_time)
|
||||
|
||||
drawinfo = {'TIMELINES':TIMELINES, 'EVENTS':EVENTS, 'EVENT_NAMES':EVENT_NAMES, 'OCCUPANCY': OCCUPANCY, 'ShaderNames': gathered_filenames}
|
||||
drawinfo = {
|
||||
"TIMELINES": TIMELINES,
|
||||
"EVENTS": EVENTS,
|
||||
"EVENT_NAMES": EVENT_NAMES,
|
||||
"OCCUPANCY": OCCUPANCY,
|
||||
"ShaderNames": gathered_filenames,
|
||||
}
|
||||
if args.genasm and len(args.genasm) > 0:
|
||||
flight_count = view_trace(args, code, DBFILES, analysed_filenames, True, OCCUPANCY, args.dumpfiles, min_event_time, gfxv, drawinfo, comm, mpi_root)
|
||||
with open(args.assembly_code, 'r') as file:
|
||||
flight_count = view_trace(
|
||||
args,
|
||||
code,
|
||||
DBFILES,
|
||||
analysed_filenames,
|
||||
True,
|
||||
OCCUPANCY,
|
||||
args.dumpfiles,
|
||||
min_event_time,
|
||||
gfxv,
|
||||
drawinfo,
|
||||
comm,
|
||||
mpi_root,
|
||||
)
|
||||
with open(args.assembly_code, "r") as file:
|
||||
lines = file.readlines()
|
||||
assembly_code = {l+1.0: lines[l][:-1] for l in range(len(lines))}
|
||||
assembly_code = {l + 1.0: lines[l][:-1] for l in range(len(lines))}
|
||||
assembly_code = insert_waitcnt(flight_count, assembly_code)
|
||||
|
||||
with open(args.genasm, 'w') as file:
|
||||
with open(args.genasm, "w") as file:
|
||||
keys = sorted(assembly_code.keys())
|
||||
for k in keys:
|
||||
file.write(assembly_code[k]+'\n')
|
||||
file.write(assembly_code[k] + "\n")
|
||||
else:
|
||||
view_trace(args, code, DBFILES, analysed_filenames, False, OCCUPANCY, args.dumpfiles, min_event_time, gfxv, drawinfo, comm, mpi_root)
|
||||
view_trace(
|
||||
args,
|
||||
code,
|
||||
DBFILES,
|
||||
analysed_filenames,
|
||||
False,
|
||||
OCCUPANCY,
|
||||
args.dumpfiles,
|
||||
min_event_time,
|
||||
gfxv,
|
||||
drawinfo,
|
||||
comm,
|
||||
mpi_root,
|
||||
)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
|
||||
if sys.version_info[0] < 3:
|
||||
raise Exception("Must be using Python 3")
|
||||
|
||||
@@ -9,7 +10,8 @@ import matplotlib.pyplot as plt
|
||||
from copy import deepcopy
|
||||
import json
|
||||
|
||||
COUNTERS_MAX_CAPTURES = 1<<12
|
||||
COUNTERS_MAX_CAPTURES = 1 << 12
|
||||
|
||||
|
||||
class Readable:
|
||||
def __init__(self, jsonstring):
|
||||
@@ -17,19 +19,20 @@ class Readable:
|
||||
self.seek = 0
|
||||
|
||||
def read(self, length=0):
|
||||
if length<=0:
|
||||
if length <= 0:
|
||||
return self.jsonstr
|
||||
else:
|
||||
if self.seek >= len(self):
|
||||
self.seek = 0
|
||||
return None
|
||||
response = self.jsonstr[self.seek:self.seek+length]
|
||||
response = self.jsonstr[self.seek : self.seek + length]
|
||||
self.seek += length
|
||||
return bytes(response, 'utf-8')
|
||||
return bytes(response, "utf-8")
|
||||
|
||||
def __len__(self):
|
||||
return len(self.jsonstr)
|
||||
|
||||
|
||||
class FileBytesIO:
|
||||
def __init__(self, iobytes):
|
||||
self.iobytes = deepcopy(iobytes)
|
||||
@@ -39,72 +42,103 @@ class FileBytesIO:
|
||||
return self.iobytes.getbuffer().nbytes
|
||||
|
||||
def read(self, length=0):
|
||||
if length<=0:
|
||||
if length <= 0:
|
||||
return bytes(self.iobytes.getbuffer())
|
||||
else:
|
||||
if self.seek >= self.iobytes.getbuffer().nbytes:
|
||||
self.seek = 0
|
||||
return None
|
||||
response = self.iobytes.getbuffer()[self.seek:self.seek+length]
|
||||
response = self.iobytes.getbuffer()[self.seek : self.seek + length]
|
||||
self.seek += length
|
||||
return bytes(response)
|
||||
|
||||
|
||||
def get_delta_time(events):
|
||||
try:
|
||||
CUS = [[e.time for e in events if e.cu==k and e.bank==0] for k in range(16)]
|
||||
CUS = [[e.time for e in events if e.cu == k and e.bank == 0] for k in range(16)]
|
||||
CUS = [np.asarray(c).astype(np.int64) for c in CUS if len(c) > 2]
|
||||
return np.min([np.min(abs(c[1:]-c[:-1])) for c in CUS])
|
||||
return np.min([np.min(abs(c[1:] - c[:-1])) for c in CUS])
|
||||
except:
|
||||
return 1
|
||||
|
||||
|
||||
def draw_wave_metrics(selections, normalize, TIMELINES, EVENTS, EVENT_NAMES):
|
||||
plt.figure(figsize=(15,4))
|
||||
plt.figure(figsize=(15, 4))
|
||||
|
||||
delta_step = 8
|
||||
quad_delta_time = max(delta_step,int(0.5+np.min([get_delta_time(events) for events in EVENTS])))
|
||||
maxtime = np.max([np.max([e.time for e in events]) for events in EVENTS])/quad_delta_time+1
|
||||
quad_delta_time = max(
|
||||
delta_step, int(0.5 + np.min([get_delta_time(events) for events in EVENTS]))
|
||||
)
|
||||
maxtime = (
|
||||
np.max([np.max([e.time for e in events]) for events in EVENTS]) / quad_delta_time
|
||||
+ 1
|
||||
)
|
||||
|
||||
if maxtime*delta_step >= COUNTERS_MAX_CAPTURES:
|
||||
if maxtime * delta_step >= COUNTERS_MAX_CAPTURES:
|
||||
delta_step = 1
|
||||
while maxtime >= COUNTERS_MAX_CAPTURES:
|
||||
quad_delta_time *= 2
|
||||
maxtime /= 2
|
||||
|
||||
maxtime = int(min(maxtime*delta_step, COUNTERS_MAX_CAPTURES))
|
||||
maxtime = int(min(maxtime * delta_step, COUNTERS_MAX_CAPTURES))
|
||||
event_timeline = np.zeros((16, maxtime), dtype=np.int32)
|
||||
print('Delta:', quad_delta_time)
|
||||
print('Max_cycles:', maxtime*quad_delta_time*4//delta_step)
|
||||
print("Delta:", quad_delta_time)
|
||||
print("Max_cycles:", maxtime * quad_delta_time * 4 // delta_step)
|
||||
|
||||
cycles = 4*quad_delta_time//delta_step*np.arange(maxtime)
|
||||
kernel = len(EVENTS)*quad_delta_time
|
||||
cycles = 4 * quad_delta_time // delta_step * np.arange(maxtime)
|
||||
kernel = len(EVENTS) * quad_delta_time
|
||||
|
||||
for events in EVENTS:
|
||||
for e in range(len(events)-1):
|
||||
bk = events[e].bank*4
|
||||
start = events[e].time // (quad_delta_time//delta_step)
|
||||
end = start+delta_step
|
||||
event_timeline[bk:bk+4, start:end] += np.asarray(events[e].toTuple()[1:5])[:, None]
|
||||
for e in range(len(events) - 1):
|
||||
bk = events[e].bank * 4
|
||||
start = events[e].time // (quad_delta_time // delta_step)
|
||||
end = start + delta_step
|
||||
event_timeline[bk : bk + 4, start:end] += np.asarray(
|
||||
events[e].toTuple()[1:5]
|
||||
)[:, None]
|
||||
start = events[-1].time
|
||||
event_timeline[bk:bk+4, start:start+delta_step] += \
|
||||
np.asarray(events[-1].toTuple()[1:5])[:, None]
|
||||
event_timeline[bk : bk + 4, start : start + delta_step] += np.asarray(
|
||||
events[-1].toTuple()[1:5]
|
||||
)[:, None]
|
||||
|
||||
event_timeline = [np.convolve(e, [kernel for k in range(3)])[1:-1] for e in event_timeline]
|
||||
#event_timeline = [e/kernel for e in event_timeline]
|
||||
event_timeline = [
|
||||
np.convolve(e, [kernel for k in range(3)])[1:-1] for e in event_timeline
|
||||
]
|
||||
# event_timeline = [e/kernel for e in event_timeline]
|
||||
|
||||
if normalize:
|
||||
event_timeline = [100*e/max(e.max(), 1E-5) for e in event_timeline]
|
||||
event_timeline = [100 * e / max(e.max(), 1e-5) for e in event_timeline]
|
||||
|
||||
colors = ['blue', 'green', 'gray', 'red', 'orange', 'cyan', 'black', 'darkviolet',
|
||||
'yellow', 'darkred', 'pink', 'lime', 'gold', 'tan', 'aqua', 'olive']
|
||||
[plt.plot(cycles, e, '-', label=n, color=c)
|
||||
for e, n, c, sel in zip(event_timeline, EVENT_NAMES, colors, selections) if sel]
|
||||
colors = [
|
||||
"blue",
|
||||
"green",
|
||||
"gray",
|
||||
"red",
|
||||
"orange",
|
||||
"cyan",
|
||||
"black",
|
||||
"darkviolet",
|
||||
"yellow",
|
||||
"darkred",
|
||||
"pink",
|
||||
"lime",
|
||||
"gold",
|
||||
"tan",
|
||||
"aqua",
|
||||
"olive",
|
||||
]
|
||||
[
|
||||
plt.plot(cycles, e, "-", label=n, color=c)
|
||||
for e, n, c, sel in zip(event_timeline, EVENT_NAMES, colors, selections)
|
||||
if sel
|
||||
]
|
||||
|
||||
plt.legend()
|
||||
if normalize:
|
||||
plt.ylabel('As % of maximum')
|
||||
plt.ylabel("As % of maximum")
|
||||
else:
|
||||
plt.ylabel('Value')
|
||||
plt.xlabel('Cycle')
|
||||
plt.ylabel("Value")
|
||||
plt.xlabel("Cycle")
|
||||
plt.subplots_adjust(left=0.04, right=1, top=1, bottom=0.1)
|
||||
|
||||
figure_bytes = BytesIO()
|
||||
@@ -114,39 +148,56 @@ def draw_wave_metrics(selections, normalize, TIMELINES, EVENTS, EVENT_NAMES):
|
||||
|
||||
def draw_wave_states(selections, normalize, TIMELINES):
|
||||
plot_indices = [1, 2, 3, 4]
|
||||
STATES = [['Empty', 'Idle', 'Exec', 'Wait', 'Stall'][k] for k in plot_indices]
|
||||
colors = [['gray', 'orange', 'green', 'red', 'blue'][k] for k in plot_indices]
|
||||
STATES = [["Empty", "Idle", "Exec", "Wait", "Stall"][k] for k in plot_indices]
|
||||
colors = [["gray", "orange", "green", "red", "blue"][k] for k in plot_indices]
|
||||
|
||||
plt.figure(figsize=(15,4))
|
||||
plt.figure(figsize=(15, 4))
|
||||
|
||||
maxtime = max([np.max((TIMELINES[k]!=0)*np.arange(0,TIMELINES[k].size)) for k in plot_indices])
|
||||
maxtime = max(maxtime, 1)
|
||||
timelines = [deepcopy(TIMELINES[k][:maxtime]) for k in plot_indices]
|
||||
timelines = [np.pad(t, [0, maxtime-t.size]) for t in timelines]
|
||||
timelines = [np.pad(t, [0, maxtime - t.size]) for t in timelines]
|
||||
|
||||
if normalize:
|
||||
timelines = np.array(timelines) / np.maximum(np.sum(timelines,0)*1E-2,1E-7)
|
||||
timelines = np.array(timelines) / np.maximum(np.sum(timelines, 0) * 1e-2, 1e-7)
|
||||
|
||||
trim = max(maxtime//5000,1)
|
||||
cycles = np.arange(0, timelines[0].size//trim, 1)*trim
|
||||
timelines = [time[:trim*(time.size//trim)].reshape((-1, trim)).mean(-1) if len(time) > 0 else cycles*0 for time in timelines]
|
||||
trim = max(maxtime // 5000, 1)
|
||||
cycles = np.arange(0, timelines[0].size // trim, 1) * trim
|
||||
timelines = [
|
||||
time[: trim * (time.size // trim)].reshape((-1, trim)).mean(-1)
|
||||
if len(time) > 0
|
||||
else cycles * 0
|
||||
for time in timelines
|
||||
]
|
||||
kernsize = 21
|
||||
kernel = np.asarray([np.exp(-abs(10*k/kernsize)) for k in range(-kernsize//2,kernsize//2+1)])
|
||||
kernel = np.asarray(
|
||||
[
|
||||
np.exp(-abs(10 * k / kernsize))
|
||||
for k in range(-kernsize // 2, kernsize // 2 + 1)
|
||||
]
|
||||
)
|
||||
kernel /= np.sum(kernel)
|
||||
|
||||
timelines = [np.convolve(time, kernel)[kernsize//2:-kernsize//2] for time in timelines if len(time) > 0]
|
||||
timelines = [
|
||||
np.convolve(time, kernel)[kernsize // 2 : -kernsize // 2]
|
||||
for time in timelines
|
||||
if len(time) > 0
|
||||
]
|
||||
|
||||
[plt.plot(cycles, t, label='State '+s, linewidth=1.1, color=c)
|
||||
for t, s, c, sel in zip(timelines, STATES, colors, selections) if sel]
|
||||
[
|
||||
plt.plot(cycles, t, label="State " + s, linewidth=1.1, color=c)
|
||||
for t, s, c, sel in zip(timelines, STATES, colors, selections)
|
||||
if sel
|
||||
]
|
||||
|
||||
plt.legend()
|
||||
if normalize:
|
||||
plt.ylabel('Waves state %')
|
||||
plt.ylabel("Waves state %")
|
||||
else:
|
||||
plt.ylabel('Waves state total')
|
||||
plt.xlabel('Cycle')
|
||||
plt.ylabel("Waves state total")
|
||||
plt.xlabel("Cycle")
|
||||
plt.ylim(-1)
|
||||
plt.xlim(-maxtime//200, maxtime+maxtime//200+1)
|
||||
plt.xlim(-maxtime // 200, maxtime + maxtime // 200 + 1)
|
||||
plt.subplots_adjust(left=0.04, right=1, top=1, bottom=0.1)
|
||||
figure_bytes = BytesIO()
|
||||
plt.savefig(figure_bytes, dpi=150)
|
||||
@@ -154,7 +205,7 @@ def draw_wave_states(selections, normalize, TIMELINES):
|
||||
|
||||
|
||||
def draw_occupancy(selections, normalize, OCCUPANCY, shadernames):
|
||||
plt.figure(figsize=(15,4))
|
||||
plt.figure(figsize=(15, 4))
|
||||
names = []
|
||||
if len(OCCUPANCY) == 1: # If single SE, do occupancy per CU/WGP
|
||||
OCCUPANCY = [[u for u in OCCUPANCY[0] if u&0xFF==k] for k in range(16)]
|
||||
@@ -166,7 +217,7 @@ def draw_occupancy(selections, normalize, OCCUPANCY, shadernames):
|
||||
for name, occ in zip(shadernames, OCCUPANCY):
|
||||
occ_values = [0]
|
||||
occ_times = [0]
|
||||
occ = [(int(u>>16), (u>>8)&0xFF, u&0xFF) for u in occ]
|
||||
occ = [(int(u >> 16), (u >> 8) & 0xFF, u & 0xFF) for u in occ]
|
||||
current_occ = [0 for k in range(16)]
|
||||
|
||||
for time, value, cu in occ:
|
||||
@@ -180,30 +231,30 @@ def draw_occupancy(selections, normalize, OCCUPANCY, shadernames):
|
||||
|
||||
NUM_DOTS = 1500
|
||||
maxtime = np.max(occ_times)
|
||||
delta = max(1, maxtime//NUM_DOTS)
|
||||
chart = np.zeros((maxtime//delta+1), dtype=np.float32)
|
||||
delta = max(1, maxtime // NUM_DOTS)
|
||||
chart = np.zeros((maxtime // delta + 1), dtype=np.float32)
|
||||
norm_fact = np.zeros_like(chart)
|
||||
|
||||
for i, t in enumerate(occ_times[:-1]):
|
||||
b = t//delta
|
||||
e = max(b+1,occ_times[i+1]//delta)
|
||||
b = t // delta
|
||||
e = max(b + 1, occ_times[i + 1] // delta)
|
||||
chart[b:e] += occ_values[i]
|
||||
norm_fact[b:e] += 1
|
||||
|
||||
chart /= np.maximum(norm_fact,1)
|
||||
chart /= np.maximum(norm_fact, 1)
|
||||
if normalize:
|
||||
chart /= max(chart.max(),1E-6)
|
||||
chart /= max(chart.max(), 1e-6)
|
||||
|
||||
plt.plot(np.arange(chart.size)*delta, chart, label=name, linewidth=1.1)
|
||||
plt.plot(np.arange(chart.size) * delta, chart, label=name, linewidth=1.1)
|
||||
|
||||
plt.legend()
|
||||
if normalize:
|
||||
plt.ylabel('Occupancy %')
|
||||
plt.ylabel("Occupancy %")
|
||||
else:
|
||||
plt.ylabel('Occupancy total')
|
||||
plt.xlabel('Cycle')
|
||||
plt.ylabel("Occupancy total")
|
||||
plt.xlabel("Cycle")
|
||||
plt.ylim(-1)
|
||||
plt.xlim(-maxtime//200, maxtime+maxtime//200+delta+1)
|
||||
plt.xlim(-maxtime // 200, maxtime + maxtime // 200 + delta + 1)
|
||||
plt.subplots_adjust(left=0.04, right=1, top=1, bottom=0.1)
|
||||
figure_bytes = BytesIO()
|
||||
plt.savefig(figure_bytes, dpi=150)
|
||||
@@ -211,22 +262,26 @@ def draw_occupancy(selections, normalize, OCCUPANCY, shadernames):
|
||||
|
||||
|
||||
def GeneratePIC(drawinfo, selections=[True for k in range(16)], normalize=False):
|
||||
EVENTS = drawinfo['EVENTS']
|
||||
EVENTS = drawinfo["EVENTS"]
|
||||
|
||||
response = {}
|
||||
figures = {}
|
||||
|
||||
states, figure = draw_occupancy(selections, normalize, drawinfo['OCCUPANCY'], drawinfo['ShaderNames'])
|
||||
response['occupancy.png'] = states
|
||||
figures['occupancy.png'] = figure
|
||||
states, figure = draw_occupancy(
|
||||
selections, normalize, drawinfo["OCCUPANCY"], drawinfo["ShaderNames"]
|
||||
)
|
||||
response["occupancy.png"] = states
|
||||
figures["occupancy.png"] = figure
|
||||
|
||||
states, figure = draw_wave_states(selections, normalize, drawinfo['TIMELINES'])
|
||||
response['timeline.png'] = states
|
||||
figures['timeline.png'] = figure
|
||||
states, figure = draw_wave_states(selections, normalize, drawinfo["TIMELINES"])
|
||||
response["timeline.png"] = states
|
||||
figures["timeline.png"] = figure
|
||||
|
||||
if len(EVENTS) > 0 and np.sum([len(e) for e in EVENTS]) > 32:
|
||||
EVENT_NAMES, figure = draw_wave_metrics(selections, normalize, drawinfo['TIMELINES'], EVENTS, drawinfo['EVENT_NAMES'])
|
||||
response['counters.png'] = EVENT_NAMES
|
||||
figures['counters.png'] = figure
|
||||
EVENT_NAMES, figure = draw_wave_metrics(
|
||||
selections, normalize, drawinfo["TIMELINES"], EVENTS, drawinfo["EVENT_NAMES"]
|
||||
)
|
||||
response["counters.png"] = EVENT_NAMES
|
||||
figures["counters.png"] = figure
|
||||
|
||||
return Readable(response), figures
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
|
||||
if sys.version_info[0] < 3:
|
||||
raise Exception("Must be using Python 3")
|
||||
|
||||
@@ -54,33 +55,35 @@ WaveInstCategory = {
|
||||
# Keeps track of register states for hipcc-generated assembly
|
||||
class RegisterWatchList:
|
||||
def __init__(self, labels):
|
||||
self.registers = {'v'+str(k): [[] for m in range(64)] for k in range(64)}
|
||||
self.registers = {"v" + str(k): [[] for m in range(64)] for k in range(64)}
|
||||
for k in range(64):
|
||||
self.registers['s'+str(k)] = []
|
||||
self.registers["s" + str(k)] = []
|
||||
self.labels = labels
|
||||
|
||||
def try_translate(self, tok):
|
||||
if tok[0] in ['s']:
|
||||
if tok[0] in ["s"]:
|
||||
return self.registers[self.range(tok)[0]]
|
||||
elif '@' in tok:
|
||||
return self.labels[tok.split('@')[0]]+1
|
||||
elif "@" in tok:
|
||||
return self.labels[tok.split("@")[0]] + 1
|
||||
|
||||
def range(self, r):
|
||||
reg = r.split(':')
|
||||
reg = r.split(":")
|
||||
if len(reg) == 1:
|
||||
return reg
|
||||
else:
|
||||
r0 = reg[0].split('[')
|
||||
return [r0[0]+str(k) for k in range(int(r0[1]), int(reg[1][:-1])+1)]
|
||||
r0 = reg[0].split("[")
|
||||
return [r0[0] + str(k) for k in range(int(r0[1]), int(reg[1][:-1]) + 1)]
|
||||
|
||||
def tokenize(self, line):
|
||||
return [u for u in [t.split(',')[0].strip() for t in line.split(' ')] if len(u) > 0]
|
||||
return [
|
||||
u for u in [t.split(",")[0].strip() for t in line.split(" ")] if len(u) > 0
|
||||
]
|
||||
|
||||
def getpc(self, line, next_line):
|
||||
#print('Get pc:', line)
|
||||
# print('Get pc:', line)
|
||||
try:
|
||||
dst = line.split(' ')[1].strip()
|
||||
label_dest = next_line.split(', ')[-1].split('@')[0]
|
||||
dst = line.split(" ")[1].strip()
|
||||
label_dest = next_line.split(", ")[-1].split("@")[0]
|
||||
for reg in self.range(dst):
|
||||
self.registers[reg].append(deepcopy(self.labels[label_dest]))
|
||||
except:
|
||||
@@ -94,7 +97,7 @@ class RegisterWatchList:
|
||||
|
||||
popped = self.registers[self.range(src)[0]][-1]
|
||||
self.registers[self.range(src)[0]] = self.registers[self.range(src)[0]][:-1]
|
||||
self.registers[self.range(dst)[0]].append(line_num+1)
|
||||
self.registers[self.range(dst)[0]].append(line_num + 1)
|
||||
return popped
|
||||
except:
|
||||
return 0
|
||||
@@ -111,12 +114,12 @@ class RegisterWatchList:
|
||||
def scratch(self, line):
|
||||
try:
|
||||
tokens = self.tokenize(line)
|
||||
if '_load' in tokens[0]:
|
||||
if "_load" in tokens[0]:
|
||||
dst = tokens[1]
|
||||
src = tokens[3]+tokens[4]
|
||||
src = tokens[3] + tokens[4]
|
||||
else:
|
||||
src = tokens[2]
|
||||
dst = tokens[3]+tokens[4]
|
||||
dst = tokens[3] + tokens[4]
|
||||
self.registers[dst] = self.registers[src]
|
||||
except:
|
||||
pass
|
||||
@@ -124,19 +127,27 @@ class RegisterWatchList:
|
||||
def move(self, line):
|
||||
try:
|
||||
tokens = self.tokenize(line)
|
||||
if tokens[2][0] in ['s', 'd'] and tokens[1][0] in ['s', 'd']:
|
||||
self.registers[self.range(tokens[1])[0]] = deepcopy(self.registers[self.range(tokens[2])[0]])
|
||||
if tokens[2][0] in ["s", "d"] and tokens[1][0] in ["s", "d"]:
|
||||
self.registers[self.range(tokens[1])[0]] = deepcopy(
|
||||
self.registers[self.range(tokens[2])[0]]
|
||||
)
|
||||
except:
|
||||
pass
|
||||
|
||||
def updatelane(self, line):
|
||||
tokens = self.tokenize(line)
|
||||
try:
|
||||
if 'v_readlane' in tokens[0]:
|
||||
self.registers[tokens[1]].append(self.registers[tokens[2]][int(tokens[3])][-1])
|
||||
self.registers[tokens[2]][int(tokens[3])] = self.registers[tokens[2]][int(tokens[3])][:-1]
|
||||
elif 'v_writelane' in tokens[0]:
|
||||
self.registers[tokens[1]][int(tokens[3])].append(self.registers[tokens[2]][-1])
|
||||
if "v_readlane" in tokens[0]:
|
||||
self.registers[tokens[1]].append(
|
||||
self.registers[tokens[2]][int(tokens[3])][-1]
|
||||
)
|
||||
self.registers[tokens[2]][int(tokens[3])] = self.registers[tokens[2]][
|
||||
int(tokens[3])
|
||||
][:-1]
|
||||
elif "v_writelane" in tokens[0]:
|
||||
self.registers[tokens[1]][int(tokens[3])].append(
|
||||
self.registers[tokens[2]][-1]
|
||||
)
|
||||
self.registers[tokens[2]] = self.registers[tokens[2]][-STACK_SIZE_LIMIT:]
|
||||
except Exception as e:
|
||||
pass
|
||||
@@ -179,7 +190,8 @@ class PCTranslator:
|
||||
|
||||
# Matches tokens in reverse order
|
||||
def try_match_swapped(insts, code, i, line):
|
||||
return insts[i+1][1] == code[line][1] and insts[i][1] == code[line+1][1]
|
||||
return insts[i + 1][1] == code[line][1] and insts[i][1] == code[line + 1][1]
|
||||
|
||||
|
||||
FORK_NAMES = 1
|
||||
# A successful parsed instruction
|
||||
@@ -197,7 +209,7 @@ class Fork:
|
||||
self.data = None
|
||||
self.name = FORK_NAMES
|
||||
FORK_NAMES += 1
|
||||
#print('Created new fork: ', self.name)
|
||||
# print('Created new fork: ', self.name)
|
||||
|
||||
# Try to match sequence "insts" with the branch "fork", starting at position "i"
|
||||
def move_down_fork(fork, insts, i): #(fork : Fork, insts : list, i : int):
|
||||
@@ -217,6 +229,7 @@ def move_down_fork(fork, insts, i): #(fork : Fork, insts : list, i : int):
|
||||
|
||||
return True, i
|
||||
|
||||
|
||||
FORK_TREE = Fork()
|
||||
|
||||
# Check if there exists a previous wave with the same sequence of instructions executed
|
||||
@@ -227,7 +240,7 @@ def fromDict(insts):
|
||||
while i < N:
|
||||
tillEnd, final_pos = move_down_fork(cur_fork, insts, i)
|
||||
if tillEnd:
|
||||
#print('Reached end')
|
||||
# print('Reached end')
|
||||
return True, cur_fork
|
||||
|
||||
i += final_pos
|
||||
@@ -250,7 +263,7 @@ def fromDict(insts):
|
||||
last_inst.forks.append(cur_fork)
|
||||
return False, cur_fork
|
||||
|
||||
print('Warning: Reached end of loop!')
|
||||
print("Warning: Reached end of loop!")
|
||||
return False, cur_fork
|
||||
|
||||
|
||||
@@ -279,8 +292,8 @@ def stitch(insts, raw_code, jumps, gfxv, bIsAuto):
|
||||
|
||||
|
||||
SMEM_INST = [] # scalar memory
|
||||
VLMEM_INST = [] # vector memory load
|
||||
VSMEM_INST = [] # vector memory store
|
||||
VLMEM_INST = [] # vector memory load
|
||||
VSMEM_INST = [] # vector memory store
|
||||
FLAT_INST = []
|
||||
NUM_SMEM = 0
|
||||
NUM_VLMEM = 0
|
||||
@@ -302,20 +315,20 @@ def stitch(insts, raw_code, jumps, gfxv, bIsAuto):
|
||||
line = len(code)
|
||||
print('Begin at:', line, c)
|
||||
c = list(c)
|
||||
c[0] = c[0].split(';')[0].split('//')[0].strip()
|
||||
c[0] = c[0].split(";")[0].split("//")[0].strip()
|
||||
|
||||
if c[1] != 100:
|
||||
code.append(c)
|
||||
elif ':' in c[0]:
|
||||
labels[c[0].split(':')[0]] = len(code)
|
||||
jump_map.append(len(code)-1)
|
||||
elif ":" in c[0]:
|
||||
labels[c[0].split(":")[0]] = len(code)
|
||||
jump_map.append(len(code) - 1)
|
||||
|
||||
reverse_map = []
|
||||
for k, v in enumerate(jump_map):
|
||||
if v >= len(reverse_map):
|
||||
reverse_map.append(k)
|
||||
|
||||
jumps = {jump_map[j]+1: j for j in jumps}
|
||||
jumps = {jump_map[j] + 1: j for j in jumps}
|
||||
|
||||
# Checks if we have guaranteed ordering in memory operations
|
||||
smem_ordering = 0
|
||||
@@ -340,7 +353,7 @@ def stitch(insts, raw_code, jumps, gfxv, bIsAuto):
|
||||
as_line = code[line]
|
||||
|
||||
matched = True
|
||||
next = line+1
|
||||
next = line + 1
|
||||
|
||||
if not bIsAuto:
|
||||
if '_mov_' in as_line[0]:
|
||||
@@ -375,25 +388,25 @@ def stitch(insts, raw_code, jumps, gfxv, bIsAuto):
|
||||
pcsequence.append(insts[i][2])
|
||||
elif inst[1] == as_line[1]:
|
||||
if line in jumps:
|
||||
loopCount[jumps[line]-1] += 1
|
||||
loopCount[jumps[line] - 1] += 1
|
||||
num_inflight = NUM_FLAT + NUM_SMEM + NUM_VLMEM + NUM_VSMEM
|
||||
|
||||
if inst[1] == SMEM or inst[1] == LDS:
|
||||
smem_ordering = 1 if inst[1] == SMEM else smem_ordering
|
||||
SMEM_INST.append([reverse_map[line], num_inflight])
|
||||
SMEM_INST.append([reverse_map[line], num_inflight])
|
||||
NUM_SMEM += 1
|
||||
elif inst[1] == VMEM or (inst[1] == FLAT and 'global_' in as_line[0]):
|
||||
elif inst[1] == VMEM or (inst[1] == FLAT and "global_" in as_line[0]):
|
||||
inc_ordering = False
|
||||
if 'flat_' in as_line[0]:
|
||||
if "flat_" in as_line[0]:
|
||||
inc_ordering = True
|
||||
|
||||
if not bGFX9 and 'store' in as_line[0]:
|
||||
VSMEM_INST.append([reverse_map[line], num_inflight])
|
||||
if not bGFX9 and "store" in as_line[0]:
|
||||
VSMEM_INST.append([reverse_map[line], num_inflight])
|
||||
NUM_VSMEM += 1
|
||||
if inc_ordering:
|
||||
vsmem_ordering = 1
|
||||
else:
|
||||
VLMEM_INST.append([reverse_map[line], num_inflight])
|
||||
VLMEM_INST.append([reverse_map[line], num_inflight])
|
||||
NUM_VLMEM += 1
|
||||
if inc_ordering:
|
||||
vlmem_ordering = 1
|
||||
@@ -401,44 +414,48 @@ def stitch(insts, raw_code, jumps, gfxv, bIsAuto):
|
||||
smem_ordering = 1
|
||||
vlmem_ordering = 1
|
||||
vsmem_ordering = 1
|
||||
FLAT_INST.append([reverse_map[line], num_inflight])
|
||||
FLAT_INST.append([reverse_map[line], num_inflight])
|
||||
NUM_FLAT += 1
|
||||
elif inst[1] == IMMED and 's_waitcnt' in as_line[0]:
|
||||
if 'lgkmcnt' in as_line[0]:
|
||||
wait_N = int(as_line[0].split('lgkmcnt(')[1].split(')')[0])
|
||||
elif inst[1] == IMMED and "s_waitcnt" in as_line[0]:
|
||||
if "lgkmcnt" in as_line[0]:
|
||||
wait_N = int(as_line[0].split("lgkmcnt(")[1].split(")")[0])
|
||||
flight_count.append([as_line[5], num_inflight, wait_N])
|
||||
if wait_N == 0:
|
||||
smem_ordering = 0
|
||||
if smem_ordering == 0:
|
||||
offset = len(SMEM_INST)-wait_N
|
||||
mem_unroll.append( [reverse_map[line], SMEM_INST[:offset]+FLAT_INST] )
|
||||
offset = len(SMEM_INST) - wait_N
|
||||
mem_unroll.append(
|
||||
[reverse_map[line], SMEM_INST[:offset] + FLAT_INST]
|
||||
)
|
||||
SMEM_INST = SMEM_INST[offset:]
|
||||
NUM_SMEM = len(SMEM_INST)
|
||||
FLAT_INST = []
|
||||
NUM_FLAT = 0
|
||||
else:
|
||||
NUM_SMEM = min(max(wait_N-NUM_FLAT, 0), NUM_SMEM)
|
||||
NUM_FLAT = min(max(wait_N-NUM_SMEM, 0), NUM_FLAT)
|
||||
NUM_SMEM = min(max(wait_N - NUM_FLAT, 0), NUM_SMEM)
|
||||
NUM_FLAT = min(max(wait_N - NUM_SMEM, 0), NUM_FLAT)
|
||||
num_inflight = NUM_FLAT + NUM_SMEM + NUM_VLMEM + NUM_VSMEM
|
||||
|
||||
if 'vmcnt' in as_line[0]:
|
||||
wait_N = int(as_line[0].split('vmcnt(')[1].split(')')[0])
|
||||
if "vmcnt" in as_line[0]:
|
||||
wait_N = int(as_line[0].split("vmcnt(")[1].split(")")[0])
|
||||
flight_count.append([as_line[5], num_inflight, wait_N])
|
||||
if wait_N == 0:
|
||||
vlmem_ordering = 0
|
||||
if vlmem_ordering == 0:
|
||||
offset = len(VLMEM_INST)-wait_N
|
||||
mem_unroll.append( [reverse_map[line], VLMEM_INST[:offset]+FLAT_INST] )
|
||||
offset = len(VLMEM_INST) - wait_N
|
||||
mem_unroll.append(
|
||||
[reverse_map[line], VLMEM_INST[:offset] + FLAT_INST]
|
||||
)
|
||||
VLMEM_INST = VLMEM_INST[offset:]
|
||||
NUM_VLMEM = len(VLMEM_INST)
|
||||
FLAT_INST = []
|
||||
NUM_FLAT = 0
|
||||
else:
|
||||
NUM_VLMEM = min(max(wait_N-NUM_FLAT, 0), NUM_VLMEM)
|
||||
NUM_FLAT = min(max(wait_N-NUM_VLMEM, 0), NUM_FLAT)
|
||||
NUM_VLMEM = min(max(wait_N - NUM_FLAT, 0), NUM_VLMEM)
|
||||
NUM_FLAT = min(max(wait_N - NUM_VLMEM, 0), NUM_FLAT)
|
||||
num_inflight = NUM_FLAT + NUM_SMEM + NUM_VLMEM + NUM_VSMEM
|
||||
|
||||
if 'vscnt' in as_line[0] or (bGFX9 and 'vmcnt' in as_line[0]):
|
||||
if "vscnt" in as_line[0] or (bGFX9 and "vmcnt" in as_line[0]):
|
||||
try:
|
||||
wait_N = int(as_line[0].split('vscnt(')[1].split(')')[0])
|
||||
except:
|
||||
@@ -450,35 +467,37 @@ def stitch(insts, raw_code, jumps, gfxv, bIsAuto):
|
||||
if wait_N == 0:
|
||||
vsmem_ordering = 0
|
||||
if vsmem_ordering == 0:
|
||||
offset = len(VSMEM_INST)-wait_N
|
||||
mem_unroll.append( [reverse_map[line], VSMEM_INST[:offset]+FLAT_INST] )
|
||||
offset = len(VSMEM_INST) - wait_N
|
||||
mem_unroll.append(
|
||||
[reverse_map[line], VSMEM_INST[:offset] + FLAT_INST]
|
||||
)
|
||||
VSMEM_INST = VSMEM_INST[offset:]
|
||||
NUM_VSMEM = len(VSMEM_INST)
|
||||
FLAT_INST = []
|
||||
NUM_FLAT = 0
|
||||
else:
|
||||
NUM_VSMEM = min(max(wait_N-NUM_FLAT, 0), NUM_VSMEM)
|
||||
NUM_FLAT = min(max(wait_N-NUM_VSMEM, 0), NUM_FLAT)
|
||||
NUM_VSMEM = min(max(wait_N - NUM_FLAT, 0), NUM_VSMEM)
|
||||
NUM_FLAT = min(max(wait_N - NUM_VSMEM, 0), NUM_FLAT)
|
||||
num_inflight = NUM_FLAT + NUM_SMEM + NUM_VLMEM + NUM_VSMEM
|
||||
|
||||
elif inst[1] == JUMP and as_line[1] == BRANCH:
|
||||
next = jump_map[as_line[2]]
|
||||
if next is None or next == 0:
|
||||
print('Jump to unknown location!', as_line)
|
||||
print("Jump to unknown location!", as_line)
|
||||
break
|
||||
elif inst[1] == NEXT and as_line[1] == BRANCH:
|
||||
next = line + 1
|
||||
else:
|
||||
matched = False
|
||||
next = line + 1
|
||||
if i+1 < N and line+1 < len(code):
|
||||
if i + 1 < N and line + 1 < len(code):
|
||||
if try_match_swapped(insts, code, i, line):
|
||||
temp = insts[i]
|
||||
insts[i] = insts[i+1]
|
||||
insts[i+1] = temp
|
||||
insts[i] = insts[i + 1]
|
||||
insts[i + 1] = temp
|
||||
next = line
|
||||
elif 's_waitcnt ' in as_line[0] or '_load_' in as_line[0]:
|
||||
if skipped_immed > 0 and 's_waitcnt ' in as_line[0]:
|
||||
elif "s_waitcnt " in as_line[0] or "_load_" in as_line[0]:
|
||||
if skipped_immed > 0 and "s_waitcnt " in as_line[0]:
|
||||
matched = True
|
||||
skipped_immed -= 1
|
||||
elif 'scratch_' not in as_line[0]:
|
||||
@@ -508,8 +527,10 @@ def stitch(insts, raw_code, jumps, gfxv, bIsAuto):
|
||||
pass
|
||||
else:
|
||||
while line < len(code):
|
||||
if 's_endpgm' in code[line]:
|
||||
mem_unroll.append( [reverse_map[line], SMEM_INST+VLMEM_INST+VSMEM_INST+FLAT_INST] )
|
||||
if "s_endpgm" in code[line]:
|
||||
mem_unroll.append(
|
||||
[reverse_map[line], SMEM_INST + VLMEM_INST + VSMEM_INST + FLAT_INST]
|
||||
)
|
||||
break
|
||||
line += 1
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
|
||||
if sys.version_info[0] < 3:
|
||||
raise Exception("Must be using Python 3")
|
||||
|
||||
@@ -23,6 +24,7 @@ from copy import deepcopy
|
||||
|
||||
JSON_GLOBAL_DICTIONARY = {}
|
||||
|
||||
|
||||
def get_ip():
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.settimeout(0)
|
||||
@@ -31,51 +33,64 @@ def get_ip():
|
||||
IPAddr = socket.gethostbyname(hostname)
|
||||
s.connect(({IPAddr}, 1))
|
||||
except Exception:
|
||||
IPAddr = '127.0.0.1'
|
||||
IPAddr = "127.0.0.1"
|
||||
finally:
|
||||
return IPAddr
|
||||
|
||||
|
||||
IPAddr = get_ip()
|
||||
PORT, WebSocketPort = 8000, 18000
|
||||
SP = '\u00A0'
|
||||
SP = "\u00A0"
|
||||
|
||||
|
||||
def get_top_n(code):
|
||||
TOP_N = 10
|
||||
top_n = sorted(deepcopy(code), key=lambda x: x[-1], reverse=True)[:TOP_N]
|
||||
return [(line_num, hitc, 0, run_time) for _, _, _, _, line_num, _, hitc, run_time in top_n]
|
||||
return [
|
||||
(line_num, hitc, 0, run_time) for _, _, _, _, line_num, _, hitc, run_time in top_n
|
||||
]
|
||||
|
||||
|
||||
def wave_info(df, id):
|
||||
dic = {
|
||||
'Issue': df['issued_ins'][id],
|
||||
'Valu': df['valu_ins'][id], 'Valu_stall': df['valu_stalls'][id],
|
||||
'Salu': df['salu_ins'][id], 'Salu_stall': df['salu_stalls'][id],
|
||||
'Vmem': df['vmem_ins'][id], 'Vmem_stall': df['vmem_stalls'][id],
|
||||
'Smem': df['smem_ins'][id], 'Smem_stall': df['smem_stalls'][id],
|
||||
'Flat': df['flat_ins'][id], 'Flat_stall': df['flat_stalls'][id],
|
||||
'Lds': df['lds_ins'][id], 'Lds_stall': df['lds_stalls'][id],
|
||||
'Br': df['br_ins'][id], 'Br_stall': df['br_stalls'][id],
|
||||
"Issue": df["issued_ins"][id],
|
||||
"Valu": df["valu_ins"][id],
|
||||
"Valu_stall": df["valu_stalls"][id],
|
||||
"Salu": df["salu_ins"][id],
|
||||
"Salu_stall": df["salu_stalls"][id],
|
||||
"Vmem": df["vmem_ins"][id],
|
||||
"Vmem_stall": df["vmem_stalls"][id],
|
||||
"Smem": df["smem_ins"][id],
|
||||
"Smem_stall": df["smem_stalls"][id],
|
||||
"Flat": df["flat_ins"][id],
|
||||
"Flat_stall": df["flat_stalls"][id],
|
||||
"Lds": df["lds_ins"][id],
|
||||
"Lds_stall": df["lds_stalls"][id],
|
||||
"Br": df["br_ins"][id],
|
||||
"Br_stall": df["br_stalls"][id],
|
||||
}
|
||||
dic['Issue_stall'] = int(np.sum([dic[key] for key in dic.keys() if '_STALL' in key]))
|
||||
dic["Issue_stall"] = int(np.sum([dic[key] for key in dic.keys() if "_STALL" in key]))
|
||||
return dic
|
||||
|
||||
|
||||
def extract_data(df, se_number):
|
||||
if len(df['id']) == 0 or len(df['instructions']) == 0 or len(df['timeline']) == 0:
|
||||
if len(df["id"]) == 0 or len(df["instructions"]) == 0 or len(df["timeline"]) == 0:
|
||||
return None
|
||||
|
||||
wave_filenames = []
|
||||
flight_count = []
|
||||
wave_slot_count = [{df['wave_slot'][wave_id]: 0 for wave_id in df['id']} for k in range(4)]
|
||||
|
||||
print('Number of waves:', len(df['id']))
|
||||
wave_slot_count = [
|
||||
{df["wave_slot"][wave_id]: 0 for wave_id in df["id"]} for k in range(4)
|
||||
]
|
||||
|
||||
print("Number of waves:", len(df["id"]))
|
||||
allwaves_maxline = 0
|
||||
|
||||
for wave_id in df['id']:
|
||||
stitched, loopCount, mem_unroll, count, maxline, num_insts = df['instructions'][wave_id]
|
||||
timeline = df['timeline'][wave_id]
|
||||
for wave_id in df["id"]:
|
||||
stitched, loopCount, mem_unroll, count, maxline, num_insts = df["instructions"][
|
||||
wave_id
|
||||
]
|
||||
timeline = df["timeline"][wave_id]
|
||||
|
||||
if len(stitched) == 0 or len(timeline) == 0 or len(stitched) != num_insts:
|
||||
continue
|
||||
@@ -84,18 +99,18 @@ def extract_data(df, se_number):
|
||||
flight_count.append(count)
|
||||
|
||||
wave_entry = {
|
||||
"id": int(df['id'][wave_id]),
|
||||
"simd": int(df['simd'][wave_id]),
|
||||
"slot": int(df['wave_slot'][wave_id]),
|
||||
"begin": int(df['begin_time'][wave_id]),
|
||||
"end": int(df['end_time'][wave_id]),
|
||||
"id": int(df["id"][wave_id]),
|
||||
"simd": int(df["simd"][wave_id]),
|
||||
"slot": int(df["wave_slot"][wave_id]),
|
||||
"begin": int(df["begin_time"][wave_id]),
|
||||
"end": int(df["end_time"][wave_id]),
|
||||
"info": wave_info(df, wave_id),
|
||||
"instructions": stitched,
|
||||
"timeline": timeline,
|
||||
"waitcnt": mem_unroll
|
||||
"waitcnt": mem_unroll,
|
||||
}
|
||||
data_obj = {
|
||||
"name": 'SE'.format(se_number),
|
||||
"name": "SE".format(se_number),
|
||||
"duration": sum(dur for (_, dur) in timeline),
|
||||
"wave": wave_entry,
|
||||
"loop_count": loopCount,
|
||||
@@ -103,26 +118,36 @@ def extract_data(df, se_number):
|
||||
"num_stitched": len(stitched),
|
||||
"num_insts": num_insts,
|
||||
"websocket_port": WebSocketPort,
|
||||
"generation_time": time.ctime()
|
||||
"generation_time": time.ctime(),
|
||||
}
|
||||
|
||||
simd_id = df['simd'][wave_id]
|
||||
slot_id = df['wave_slot'][wave_id]
|
||||
simd_id = df["simd"][wave_id]
|
||||
slot_id = df["wave_slot"][wave_id]
|
||||
slot_count = wave_slot_count[simd_id][slot_id]
|
||||
wave_slot_count[simd_id][slot_id] += 1
|
||||
|
||||
OUT = 'se'+str(se_number)+'_sm'+str(simd_id)+'_sl'+str(slot_id)+'_wv'+str(slot_count)+'.json'
|
||||
OUT = (
|
||||
"se"
|
||||
+ str(se_number)
|
||||
+ "_sm"
|
||||
+ str(simd_id)
|
||||
+ "_sl"
|
||||
+ str(slot_id)
|
||||
+ "_wv"
|
||||
+ str(slot_count)
|
||||
+ ".json"
|
||||
)
|
||||
JSON_GLOBAL_DICTIONARY[OUT] = Readable(data_obj)
|
||||
wave_filenames.append((OUT, df['begin_time'][wave_id], df['end_time'][wave_id]))
|
||||
wave_filenames.append((OUT, df["begin_time"][wave_id], df["end_time"][wave_id]))
|
||||
|
||||
data_obj = {
|
||||
"name": 'SE'.format(se_number),
|
||||
"name": "SE".format(se_number),
|
||||
"websocket_port": WebSocketPort,
|
||||
"generation_time": time.ctime()
|
||||
"generation_time": time.ctime(),
|
||||
}
|
||||
se_filename = None
|
||||
if len(wave_filenames) > 0:
|
||||
se_filename = 'se'+str(se_number)+'_info.json'
|
||||
se_filename = "se" + str(se_number) + "_info.json"
|
||||
JSON_GLOBAL_DICTIONARY[se_filename] = Readable(data_obj)
|
||||
|
||||
return flight_count, wave_filenames, se_filename, allwaves_maxline
|
||||
@@ -139,36 +164,43 @@ class NoCacheHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
|
||||
self.send_header("Expires", "0")
|
||||
|
||||
def do_GET(self):
|
||||
if '.png?' in self.path and self.path.split('/')[-1] not in JSON_GLOBAL_DICTIONARY.keys():
|
||||
selections = [int(s)!=0 for s in self.path.split('.png?')[-1]]
|
||||
counters_json, imagebytes = GeneratePIC(self.drawinfo, selections[1:], selections[0])
|
||||
JSON_GLOBAL_DICTIONARY['graph_options.json'] = counters_json
|
||||
JSON_GLOBAL_DICTIONARY[self.path.split('/')[-1]] = imagebytes[self.path.split('/')[-1].split('?')[0]]
|
||||
if (
|
||||
".png?" in self.path
|
||||
and self.path.split("/")[-1] not in JSON_GLOBAL_DICTIONARY.keys()
|
||||
):
|
||||
selections = [int(s) != 0 for s in self.path.split(".png?")[-1]]
|
||||
counters_json, imagebytes = GeneratePIC(
|
||||
self.drawinfo, selections[1:], selections[0]
|
||||
)
|
||||
JSON_GLOBAL_DICTIONARY["graph_options.json"] = counters_json
|
||||
JSON_GLOBAL_DICTIONARY[self.path.split("/")[-1]] = imagebytes[
|
||||
self.path.split("/")[-1].split("?")[0]
|
||||
]
|
||||
|
||||
if '.json' in self.path or '.png' in self.path:
|
||||
if ".json" in self.path or ".png" in self.path:
|
||||
try:
|
||||
response_file = JSON_GLOBAL_DICTIONARY[self.path.split('/')[-1]]
|
||||
response_file = JSON_GLOBAL_DICTIONARY[self.path.split("/")[-1]]
|
||||
except:
|
||||
print('Invalid json request:', self.path)
|
||||
print("Invalid json request:", self.path)
|
||||
print(JSON_GLOBAL_DICTIONARY.keys())
|
||||
self.send_error(HTTPStatus.NOT_FOUND, "File not found")
|
||||
return
|
||||
self.send_response(HTTPStatus.OK)
|
||||
self.send_header("Content-Length", str(len(response_file)))
|
||||
if '.b' in self.path:
|
||||
self.send_header("Content-type", 'application/octet-stream')
|
||||
if ".b" in self.path:
|
||||
self.send_header("Content-type", "application/octet-stream")
|
||||
response_file = BytesIO(response_file)
|
||||
elif 'timeline.png' in self.path:
|
||||
self.send_header("Content-type", 'image/png')
|
||||
elif "timeline.png" in self.path:
|
||||
self.send_header("Content-type", "image/png")
|
||||
else:
|
||||
self.send_header("Content-type", 'application/json')
|
||||
self.send_header("Content-type", "application/json")
|
||||
self.send_header("Last-Modified", self.date_time_string(time.time()))
|
||||
self.end_headers()
|
||||
self.copyfile(response_file, self.wfile)
|
||||
elif self.path in ['/', '/styles.css', '/index.html', '/logo.svg']:
|
||||
elif self.path in ["/", "/styles.css", "/index.html", "/logo.svg"]:
|
||||
http.server.SimpleHTTPRequestHandler.do_GET(self)
|
||||
else:
|
||||
print('Invalid request:', self.path)
|
||||
print("Invalid request:", self.path)
|
||||
self.send_error(HTTPStatus.NOT_FOUND, "File not found")
|
||||
|
||||
|
||||
@@ -181,8 +213,8 @@ class RocTCPServer(socketserver.TCPServer):
|
||||
def run_server(drawinfo):
|
||||
Handler = NoCacheHTTPRequestHandler
|
||||
Handler.drawinfo = drawinfo
|
||||
os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)),'ui/'))
|
||||
#os.chdir('ui/')
|
||||
os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)), "ui/"))
|
||||
# os.chdir('ui/')
|
||||
try:
|
||||
with RocTCPServer((IPAddr, PORT), Handler) as httpd:
|
||||
httpd.serve_forever()
|
||||
@@ -191,25 +223,32 @@ def run_server(drawinfo):
|
||||
|
||||
|
||||
def fix_space(line):
|
||||
line = line.replace(' ', SP)
|
||||
line = line.replace('\t', SP*4)
|
||||
line = line.replace(" ", SP)
|
||||
line = line.replace("\t", SP * 4)
|
||||
return line
|
||||
|
||||
|
||||
def WebSocketserver(websocket, path):
|
||||
data = websocket.recv()
|
||||
cpp, ln, _ = data.split(':')
|
||||
cpp, ln, _ = data.split(":")
|
||||
ln = int(ln)
|
||||
HL, EMP = 'highlight', ''
|
||||
HL, EMP = "highlight", ""
|
||||
content = None
|
||||
print("loading...")
|
||||
try:
|
||||
f = open(cpp, 'r', errors='replace')
|
||||
content = ''.join('<li class=\"line_'+str(i)+
|
||||
str(HL if i==ln else EMP)+'">'+str(i).ljust(5)+fix_space(l)+'</li>'
|
||||
for i, l in enumerate(f.readlines(), 1))
|
||||
f = open(cpp, "r", errors="replace")
|
||||
content = "".join(
|
||||
'<li class="line_'
|
||||
+ str(i)
|
||||
+ str(HL if i == ln else EMP)
|
||||
+ '">'
|
||||
+ str(i).ljust(5)
|
||||
+ fix_space(l)
|
||||
+ "</li>"
|
||||
for i, l in enumerate(f.readlines(), 1)
|
||||
)
|
||||
except FileNotFoundError:
|
||||
content = cpp + ' not found!'
|
||||
content = cpp + " not found!"
|
||||
websocket.send(content)
|
||||
|
||||
|
||||
@@ -223,12 +262,14 @@ def run_websocket():
|
||||
|
||||
|
||||
def assign_ports(ports):
|
||||
ps = [int(port) for port in ports.split(',')]
|
||||
ps = [int(port) for port in ports.split(",")]
|
||||
if ps[0] <= 5000 or ps[1] <= 5000:
|
||||
print('Need to have port values > 5000')
|
||||
print("Need to have port values > 5000")
|
||||
sys.exit(1)
|
||||
elif ps[0] == ps[1]:
|
||||
print('Can not use the same port for both web server and websocket server: '+ps[0])
|
||||
print(
|
||||
"Can not use the same port for both web server and websocket server: " + ps[0]
|
||||
)
|
||||
sys.exit(1)
|
||||
global IPAddr, PORT, WebSocketPort
|
||||
PORT, WebSocketPort = ps[0], ps[1]
|
||||
@@ -236,35 +277,54 @@ def assign_ports(ports):
|
||||
|
||||
def call_picture_callback(return_dict, drawinfo):
|
||||
response, imagebytes = GeneratePIC(drawinfo)
|
||||
return_dict['graph_options.json'] = response
|
||||
return_dict["graph_options.json"] = response
|
||||
for k, v in imagebytes.items():
|
||||
return_dict[k] = v
|
||||
|
||||
for n, m in enumerate(drawinfo['TIMELINES']):
|
||||
return_dict['wstates'+str(n)+'.json'] = Readable({"data": [int(n) for n in list(np.asarray(m))]})
|
||||
for n, e in enumerate(drawinfo['EVENTS']):
|
||||
return_dict['se'+str(n)+'_perfcounter.json'] = Readable({"data": [v.toTuple() for v in e]})
|
||||
for n, m in enumerate(drawinfo["TIMELINES"]):
|
||||
return_dict["wstates" + str(n) + ".json"] = Readable(
|
||||
{"data": [int(n) for n in list(np.asarray(m))]}
|
||||
)
|
||||
for n, e in enumerate(drawinfo["EVENTS"]):
|
||||
return_dict["se" + str(n) + "_perfcounter.json"] = Readable(
|
||||
{"data": [v.toTuple() for v in e]}
|
||||
)
|
||||
|
||||
|
||||
def view_trace(args, code, dbnames, att_filenames, bReturnLoc, OCCUPANCY, bDumpOnly, se_time_begin, gfxv, drawinfo, MPI_COMM, mpi_root):
|
||||
def view_trace(
|
||||
args,
|
||||
code,
|
||||
dbnames,
|
||||
att_filenames,
|
||||
bReturnLoc,
|
||||
OCCUPANCY,
|
||||
bDumpOnly,
|
||||
se_time_begin,
|
||||
gfxv,
|
||||
drawinfo,
|
||||
MPI_COMM,
|
||||
mpi_root,
|
||||
):
|
||||
global JSON_GLOBAL_DICTIONARY
|
||||
pic_thread = None
|
||||
if mpi_root:
|
||||
manager = Manager()
|
||||
return_dict = manager.dict()
|
||||
JSON_GLOBAL_DICTIONARY['occupancy.json'] = Readable({str(k): OCCUPANCY[k] for k in range(len(OCCUPANCY))})
|
||||
JSON_GLOBAL_DICTIONARY["occupancy.json"] = Readable(
|
||||
{str(k): OCCUPANCY[k] for k in range(len(OCCUPANCY))}
|
||||
)
|
||||
pic_thread = Process(target=call_picture_callback, args=(return_dict, drawinfo))
|
||||
pic_thread.start()
|
||||
|
||||
att_filenames = [Path(f).name for f in att_filenames]
|
||||
se_numbers = [int(a.split('_se')[1].split('.att')[0]) for a in att_filenames]
|
||||
se_numbers = [int(a.split("_se")[1].split(".att")[0]) for a in att_filenames]
|
||||
flight_count = []
|
||||
simd_wave_filenames = {}
|
||||
se_filenames = []
|
||||
|
||||
allse_maxline = 0
|
||||
for se_number, dbname in zip(se_numbers, dbnames):
|
||||
if len(dbname['id']) == 0:
|
||||
if len(dbname["id"]) == 0:
|
||||
continue
|
||||
|
||||
count, wv_filenames, se_filename, maxline = extract_data(dbname, se_number)
|
||||
@@ -282,12 +342,15 @@ def view_trace(args, code, dbnames, att_filenames, bReturnLoc, OCCUPANCY, bDumpO
|
||||
JSON_GLOBAL_DICTIONARY['code.json'] = Readable({"code": code_sel, "top_n": get_top_n(code_sel)})
|
||||
|
||||
for key in simd_wave_filenames.keys():
|
||||
wv_array = [[
|
||||
int(s[0].split('_sm')[1].split('_sl')[0]),
|
||||
int(s[0].split('_sl')[1].split('_wv')[0]),
|
||||
int(s[0].split('_wv')[1].split('.')[0]),
|
||||
s
|
||||
] for s in simd_wave_filenames[key]]
|
||||
wv_array = [
|
||||
[
|
||||
int(s[0].split("_sm")[1].split("_sl")[0]),
|
||||
int(s[0].split("_sl")[1].split("_wv")[0]),
|
||||
int(s[0].split("_wv")[1].split(".")[0]),
|
||||
s,
|
||||
]
|
||||
for s in simd_wave_filenames[key]
|
||||
]
|
||||
|
||||
wv_dict = {}
|
||||
for wv in wv_array:
|
||||
@@ -309,13 +372,19 @@ def view_trace(args, code, dbnames, att_filenames, bReturnLoc, OCCUPANCY, bDumpO
|
||||
simd_wave_filenames = MPI_COMM.gather(simd_wave_filenames, root=0)
|
||||
if mpi_root:
|
||||
se_filenames = [e for elem in se_filenames for e in elem]
|
||||
simd_wave_filenames = {k:v for smf in simd_wave_filenames for k,v in smf.items()}
|
||||
simd_wave_filenames = {
|
||||
k: v for smf in simd_wave_filenames for k, v in smf.items()
|
||||
}
|
||||
|
||||
if mpi_root:
|
||||
JSON_GLOBAL_DICTIONARY['filenames.json'] = Readable({"wave_filenames": simd_wave_filenames,
|
||||
"se_filenames": se_filenames,
|
||||
"global_begin_time": int(se_time_begin),
|
||||
"gfxv": gfxv})
|
||||
JSON_GLOBAL_DICTIONARY["filenames.json"] = Readable(
|
||||
{
|
||||
"wave_filenames": simd_wave_filenames,
|
||||
"se_filenames": se_filenames,
|
||||
"global_begin_time": int(se_time_begin),
|
||||
"gfxv": gfxv,
|
||||
}
|
||||
)
|
||||
|
||||
if pic_thread is not None:
|
||||
pic_thread.join()
|
||||
@@ -330,14 +399,19 @@ def view_trace(args, code, dbnames, att_filenames, bReturnLoc, OCCUPANCY, bDumpO
|
||||
JSON_GLOBAL_DICTIONARY = MPI_COMM.gather(JSON_GLOBAL_DICTIONARY, root=0)
|
||||
if not mpi_root:
|
||||
quit()
|
||||
JSON_GLOBAL_DICTIONARY = {k:v for smf in JSON_GLOBAL_DICTIONARY for k,v in smf.items()}
|
||||
JSON_GLOBAL_DICTIONARY = {
|
||||
k: v for smf in JSON_GLOBAL_DICTIONARY for k, v in smf.items()
|
||||
}
|
||||
|
||||
JSON_GLOBAL_DICTIONARY['live.json'] = Readable({'live': 1})
|
||||
JSON_GLOBAL_DICTIONARY["live.json"] = Readable({"live": 1})
|
||||
if args.ports:
|
||||
assign_ports(args.ports)
|
||||
print('serving at ports: {0},{1}'.format(PORT, WebSocketPort))
|
||||
print("serving at ports: {0},{1}".format(PORT, WebSocketPort))
|
||||
try:
|
||||
PROCS = [Process(target=run_server, args=[drawinfo]), Process(target=run_websocket)]
|
||||
PROCS = [
|
||||
Process(target=run_server, args=[drawinfo]),
|
||||
Process(target=run_websocket),
|
||||
]
|
||||
for p in PROCS:
|
||||
p.start()
|
||||
for p in PROCS:
|
||||
@@ -345,10 +419,14 @@ def view_trace(args, code, dbnames, att_filenames, bReturnLoc, OCCUPANCY, bDumpO
|
||||
except KeyboardInterrupt:
|
||||
print("Exitting.")
|
||||
else:
|
||||
os.makedirs('ui/', exist_ok=True)
|
||||
os.makedirs("ui/", exist_ok=True)
|
||||
if mpi_root:
|
||||
JSON_GLOBAL_DICTIONARY['live.json'] = Readable({'live': 0})
|
||||
os.system('cp ' + os.path.join(os.path.abspath(os.path.dirname(__file__)),'ui') + '/* ui/' )
|
||||
JSON_GLOBAL_DICTIONARY["live.json"] = Readable({"live": 0})
|
||||
os.system(
|
||||
"cp "
|
||||
+ os.path.join(os.path.abspath(os.path.dirname(__file__)), "ui")
|
||||
+ "/* ui/"
|
||||
)
|
||||
for k, v in JSON_GLOBAL_DICTIONARY.items():
|
||||
with open(os.path.join('ui',k), 'w' if '.json' in k else 'wb') as f:
|
||||
with open(os.path.join("ui", k), "w" if ".json" in k else "wb") as f:
|
||||
f.write(v.read())
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
|
||||
if sys.version_info[0] < 3:
|
||||
raise Exception("Must be using Python 3")
|
||||
|
||||
@@ -9,6 +10,7 @@ import socket
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
class NoCacheHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
|
||||
def end_headers(self):
|
||||
self.send_my_headers()
|
||||
@@ -20,25 +22,28 @@ class NoCacheHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
|
||||
self.send_header("Expires", "0")
|
||||
|
||||
def do_GET(self):
|
||||
if '.png?' in self.path:
|
||||
self.path = self.path.split('.png?')[0]+'.png'
|
||||
if ".png?" in self.path:
|
||||
self.path = self.path.split(".png?")[0] + ".png"
|
||||
|
||||
http.server.SimpleHTTPRequestHandler.do_GET(self)
|
||||
|
||||
|
||||
class RocTCPServer(socketserver.TCPServer):
|
||||
def server_bind(self):
|
||||
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
self.socket.bind(self.server_address)
|
||||
|
||||
|
||||
def run_server():
|
||||
Handler = NoCacheHTTPRequestHandler
|
||||
os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)),'.'))
|
||||
os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)), "."))
|
||||
try:
|
||||
with RocTCPServer((IPAddr, PORT), Handler) as httpd:
|
||||
httpd.serve_forever()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
|
||||
def get_ip():
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
s.settimeout(0)
|
||||
@@ -47,16 +52,17 @@ def get_ip():
|
||||
IPAddr = socket.gethostbyname(hostname)
|
||||
s.connect(({IPAddr}, 1))
|
||||
except Exception:
|
||||
IPAddr = '127.0.0.1'
|
||||
IPAddr = "127.0.0.1"
|
||||
finally:
|
||||
return IPAddr
|
||||
|
||||
|
||||
IPAddr = get_ip()
|
||||
PORT = 8000
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
PORT = int(sys.argv[1])
|
||||
print('serving at port: {0}'.format(PORT))
|
||||
print("serving at port: {0}".format(PORT))
|
||||
|
||||
try:
|
||||
run_server()
|
||||
|
||||
@@ -42,11 +42,9 @@ set(METADATA_STREAM_FILE_DIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/plugin/ct
|
||||
target_compile_definitions(
|
||||
ctf_plugin
|
||||
PUBLIC AMD_INTERNAL_BUILD
|
||||
PRIVATE
|
||||
HIP_PROF_HIP_API_STRING=1
|
||||
__HIP_PLATFORM_AMD__=1
|
||||
CTF_PLUGIN_METADATA_FILE_PATH="${CMAKE_INSTALL_PREFIX}/${METADATA_STREAM_FILE_DIR}/metadata"
|
||||
)
|
||||
PRIVATE HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_AMD__=1
|
||||
CTF_PLUGIN_METADATA_FILE_PATH="${METADATA_STREAM_FILE_DIR}/metadata"
|
||||
CTF_PLUGIN_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}")
|
||||
target_include_directories(
|
||||
ctf_plugin PRIVATE "${PROJECT_SOURCE_DIR}" "${CMAKE_BINARY_DIR}/src/api"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}")
|
||||
|
||||
@@ -18,10 +18,18 @@
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE. */
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <cassert>
|
||||
#include <stdexcept>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <link.h>
|
||||
#include <chrono>
|
||||
#include <regex>
|
||||
#include <unistd.h>
|
||||
#include <experimental/filesystem>
|
||||
#include <type_traits>
|
||||
|
||||
#include "rocprofiler.h"
|
||||
#include "rocprofiler_plugin.h"
|
||||
@@ -49,17 +57,53 @@ ROCPROFILER_EXPORT int rocprofiler_plugin_initialize(const uint32_t rocprofiler_
|
||||
return -1;
|
||||
}
|
||||
|
||||
const char* output_dir = []() -> const char* {
|
||||
auto output_dir = []() -> std::string {
|
||||
if (const char* output_dir_internal = getenv("OUTPUT_PATH"); output_dir_internal != nullptr) {
|
||||
return output_dir_internal;
|
||||
}
|
||||
return "./";
|
||||
}();
|
||||
|
||||
auto output_file = []() -> std::string {
|
||||
auto _v = getenv("OUTPUT_FILE");
|
||||
return (_v) ? _v : "trace-{PID}";
|
||||
}();
|
||||
|
||||
auto _replace = [&output_dir, &output_file](const char* _key, auto _value) {
|
||||
using value_type = std::remove_cv_t<std::remove_reference_t<std::decay_t<decltype(_value)>>>;
|
||||
auto _value_str = std::to_string(_value);
|
||||
|
||||
const auto _re = std::regex{_key, std::regex_constants::icase};
|
||||
output_dir = std::regex_replace(output_dir, _re, _value_str);
|
||||
output_file = std::regex_replace(output_file, _re, _value_str);
|
||||
};
|
||||
|
||||
_replace("\\{PID\\}", getpid());
|
||||
_replace("\\$ENV\\{PID\\}", getpid());
|
||||
_replace("\\{PPID\\}", getppid());
|
||||
_replace("\\$ENV\\{PPID\\}", getppid());
|
||||
|
||||
// Create the plugin instance.
|
||||
auto* this_plugin_handle = dlopen("libctf_plugin.so", RTLD_LAZY | RTLD_NOLOAD);
|
||||
auto* librocprofiler_handle = dlopen("librocprofiler64.so", RTLD_LAZY | RTLD_NOLOAD);
|
||||
auto metadata_path = std::string{CTF_PLUGIN_METADATA_FILE_PATH};
|
||||
struct link_map* _link_map = nullptr;
|
||||
if (this_plugin_handle && dlinfo(this_plugin_handle, RTLD_DI_LINKMAP, &_link_map) == 0) {
|
||||
metadata_path = fs::path{_link_map->l_name}.parent_path() / fs::path{"../.."} /
|
||||
CTF_PLUGIN_METADATA_FILE_PATH;
|
||||
} else if (librocprofiler_handle &&
|
||||
dlinfo(librocprofiler_handle, RTLD_DI_LINKMAP, &_link_map) == 0) {
|
||||
metadata_path =
|
||||
fs::path{_link_map->l_name}.parent_path() / ".." / CTF_PLUGIN_METADATA_FILE_PATH;
|
||||
}
|
||||
|
||||
if (!fs::exists(metadata_path)) {
|
||||
metadata_path = fs::path{CTF_PLUGIN_INSTALL_PREFIX} / CTF_PLUGIN_METADATA_FILE_PATH;
|
||||
}
|
||||
|
||||
try {
|
||||
the_plugin = new rocm_ctf::Plugin{256 * 1024, fs::path{output_dir} / "trace",
|
||||
CTF_PLUGIN_METADATA_FILE_PATH};
|
||||
the_plugin = new rocm_ctf::Plugin{256 * 1024, fs::path{output_dir} / output_file,
|
||||
fs::absolute(metadata_path)};
|
||||
} catch (const std::exception& exc) {
|
||||
std::cerr << "rocprofiler_plugin_initialize(): " << exc.what() << std::endl;
|
||||
return -1;
|
||||
|
||||
@@ -33,12 +33,12 @@ class _NumericFt:
|
||||
# Returns the C++ expression to cast the expression `expr` to the C
|
||||
# type of this field type.
|
||||
def cast(self, expr):
|
||||
return f'static_cast<{self.c_type}>({expr})'
|
||||
return f"static_cast<{self.c_type}>({expr})"
|
||||
|
||||
|
||||
# Integer field type (abstract).
|
||||
class _IntFt(_NumericFt):
|
||||
def __init__(self, size, pref_disp_base='dec'):
|
||||
def __init__(self, size, pref_disp_base="dec"):
|
||||
self._size = size
|
||||
self._pref_disp_base = pref_disp_base
|
||||
|
||||
@@ -56,8 +56,8 @@ class _IntFt(_NumericFt):
|
||||
@property
|
||||
def barectf_yaml(self):
|
||||
return {
|
||||
'size': self._size,
|
||||
'preferred-display-base': self._pref_disp_base,
|
||||
"size": self._size,
|
||||
"preferred-display-base": self._pref_disp_base,
|
||||
}
|
||||
|
||||
|
||||
@@ -67,13 +67,13 @@ class _SIntFt(_IntFt):
|
||||
@property
|
||||
def barectf_yaml(self):
|
||||
ret = super().barectf_yaml
|
||||
ret['class'] = 'sint'
|
||||
ret["class"] = "sint"
|
||||
return ret
|
||||
|
||||
# Equivalent C type
|
||||
@property
|
||||
def c_type(self):
|
||||
return f'std::int{self._size}_t'
|
||||
return f"std::int{self._size}_t"
|
||||
|
||||
|
||||
# Unsigned integer field type.
|
||||
@@ -82,24 +82,24 @@ class _UIntFt(_IntFt):
|
||||
@property
|
||||
def barectf_yaml(self):
|
||||
ret = super().barectf_yaml
|
||||
ret['class'] = 'uint'
|
||||
ret["class"] = "uint"
|
||||
return ret
|
||||
|
||||
# Equivalent C type.
|
||||
@property
|
||||
def c_type(self):
|
||||
return f'std::uint{self._size}_t'
|
||||
return f"std::uint{self._size}_t"
|
||||
|
||||
|
||||
# Pointer field type.
|
||||
class _PointerFt(_UIntFt):
|
||||
def __init__(self):
|
||||
super().__init__(64, 'hex')
|
||||
super().__init__(64, "hex")
|
||||
|
||||
# Returns the C++ expression to cast the expression `expr` to the C
|
||||
# type of this field type.
|
||||
def cast(self, expr):
|
||||
return f'static_cast<{self.c_type}>(reinterpret_cast<std::uintptr_t>({expr}))'
|
||||
return f"static_cast<{self.c_type}>(reinterpret_cast<std::uintptr_t>({expr}))"
|
||||
|
||||
|
||||
# Enumeration field type (abstract).
|
||||
@@ -122,7 +122,7 @@ class _EnumFt(_IntFt):
|
||||
for name, val in self._mappings.items():
|
||||
mappings[name] = [val]
|
||||
|
||||
ret['mappings'] = mappings
|
||||
ret["mappings"] = mappings
|
||||
return ret
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ class _UEnumFt(_EnumFt, _UIntFt):
|
||||
@property
|
||||
def barectf_yaml(self):
|
||||
ret = super().barectf_yaml
|
||||
ret['class'] = 'uenum'
|
||||
ret["class"] = "uenum"
|
||||
return ret
|
||||
|
||||
|
||||
@@ -142,7 +142,7 @@ class _SEnumFt(_EnumFt, _UIntFt):
|
||||
@property
|
||||
def barectf_yaml(self):
|
||||
ret = super().barectf_yaml
|
||||
ret['class'] = 'senum'
|
||||
ret["class"] = "senum"
|
||||
return ret
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ class _OptStrFt:
|
||||
@property
|
||||
def barectf_yaml(self):
|
||||
return {
|
||||
'class': 'str',
|
||||
"class": "str",
|
||||
}
|
||||
|
||||
|
||||
@@ -175,18 +175,18 @@ class _FloatFt(_NumericFt):
|
||||
@property
|
||||
def barectf_yaml(self):
|
||||
return {
|
||||
'class': 'real',
|
||||
'size': self._size,
|
||||
"class": "real",
|
||||
"size": self._size,
|
||||
}
|
||||
|
||||
# Equivalent C type.
|
||||
@property
|
||||
def c_type(self):
|
||||
if self._size == 32:
|
||||
return 'float'
|
||||
return "float"
|
||||
else:
|
||||
assert self._size == 64
|
||||
return 'double'
|
||||
return "double"
|
||||
|
||||
|
||||
# Event record type.
|
||||
@@ -210,16 +210,16 @@ class _Ert:
|
||||
class _BeginErt(_Ert):
|
||||
# Name of event record type depending on the API prefix.
|
||||
def name(self, api_prefix):
|
||||
suffix = '_begin' if api_prefix == 'hsa' else 'Begin'
|
||||
return f'{self._api_func_name}{suffix}'
|
||||
suffix = "_begin" if api_prefix == "hsa" else "Begin"
|
||||
return f"{self._api_func_name}{suffix}"
|
||||
|
||||
|
||||
# End event record type.
|
||||
class _EndErt(_Ert):
|
||||
# Name of event record type depending on the API prefix.
|
||||
def name(self, api_prefix):
|
||||
suffix = '_end' if api_prefix == 'hsa' else 'End'
|
||||
return f'{self._api_func_name}{suffix}'
|
||||
suffix = "_end" if api_prefix == "hsa" else "End"
|
||||
return f"{self._api_func_name}{suffix}"
|
||||
|
||||
|
||||
# Event record type member.
|
||||
@@ -251,20 +251,20 @@ class _ErtMember:
|
||||
# This is an unconditional assertion.
|
||||
def _make_sure(cond, error_msg):
|
||||
if not cond:
|
||||
print(f'Error: {error_msg}', file=sys.stderr)
|
||||
print(f"Error: {error_msg}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def _enumerator_effective_val(enum_val):
|
||||
# Try the value, but this value may be a string (an
|
||||
# enumerator/definition).
|
||||
val = enum_val.get('value')
|
||||
val = enum_val.get("value")
|
||||
|
||||
if type(val) is int:
|
||||
return val
|
||||
|
||||
# Try the raw value.
|
||||
val = enum_val.get('raw_value')
|
||||
val = enum_val.get("raw_value")
|
||||
|
||||
if val is not None:
|
||||
if type(val) is int:
|
||||
@@ -277,58 +277,61 @@ def _enumerator_effective_val(enum_val):
|
||||
except:
|
||||
pass
|
||||
|
||||
_make_sure(False,
|
||||
f'Cannot get the integral value of enumerator `{enum_val["name"]}`')
|
||||
_make_sure(False, f'Cannot get the integral value of enumerator `{enum_val["name"]}`')
|
||||
|
||||
|
||||
# Returns the equivalent field type of the C type `c_type`.
|
||||
def _number_ft_from_c_type(cpp_header, c_type):
|
||||
# Check for known enumeration.
|
||||
m = re.match(r'(?:enum\s+)?(\w+)', c_type)
|
||||
m = re.match(r"(?:enum\s+)?(\w+)", c_type)
|
||||
|
||||
if m:
|
||||
size = 32
|
||||
|
||||
for enum_info in cpp_header.enums:
|
||||
if m.group(1) == enum_info.get('name'):
|
||||
if m.group(1) == enum_info.get("name"):
|
||||
# Fill enumeration field type mappings.
|
||||
mappings = {
|
||||
str(v['name']): _enumerator_effective_val(v)
|
||||
for v in enum_info['values']
|
||||
str(v["name"]): _enumerator_effective_val(v)
|
||||
for v in enum_info["values"]
|
||||
}
|
||||
|
||||
if len(mappings) == 0:
|
||||
return _SIntFt(64)
|
||||
|
||||
if max(mappings.values()) >= 2**31 or min(mappings.values()) < -2**31:
|
||||
if max(mappings.values()) >= 2**31 or min(mappings.values()) < -(
|
||||
2**31
|
||||
):
|
||||
size = 64
|
||||
|
||||
_make_sure(len(mappings) > 0, f'Enumeration `{enum_info["name"]}` is empty')
|
||||
_make_sure(
|
||||
len(mappings) > 0, f'Enumeration `{enum_info["name"]}` is empty'
|
||||
)
|
||||
|
||||
# Create corresponding enumeration field type.
|
||||
return _SEnumFt(size, mappings)
|
||||
|
||||
# Find corresponding basic field type.
|
||||
is_unsigned = 'unsigned' in c_type
|
||||
is_unsigned = "unsigned" in c_type
|
||||
|
||||
if 'long' in c_type:
|
||||
if "long" in c_type:
|
||||
if is_unsigned:
|
||||
return _UIntFt(64)
|
||||
else:
|
||||
return _SIntFt(64)
|
||||
elif 'short' in c_type:
|
||||
elif "short" in c_type:
|
||||
if is_unsigned:
|
||||
return _UIntFt(16)
|
||||
else:
|
||||
return _SIntFt(16)
|
||||
elif 'char' in c_type:
|
||||
elif "char" in c_type:
|
||||
if is_unsigned:
|
||||
return _UIntFt(8)
|
||||
else:
|
||||
return _SIntFt(8)
|
||||
elif 'float' in c_type:
|
||||
elif "float" in c_type:
|
||||
return _FloatFt(32)
|
||||
elif 'double' in c_type:
|
||||
elif "double" in c_type:
|
||||
return _FloatFt(64)
|
||||
else:
|
||||
# Assume `int` (often an unresolved C enumeration).
|
||||
@@ -340,23 +343,23 @@ def _number_ft_from_c_type(cpp_header, c_type):
|
||||
|
||||
# Returns whether or not a property has a pointer type.
|
||||
def _prop_is_pointer(prop, c_type):
|
||||
if prop['pointer'] or prop['function_pointer']:
|
||||
if prop["pointer"] or prop["function_pointer"]:
|
||||
return True
|
||||
|
||||
if prop['array'] and 'array_size' in prop:
|
||||
if prop["array"] and "array_size" in prop:
|
||||
return True
|
||||
|
||||
if prop['unresolved']:
|
||||
if prop["unresolved"]:
|
||||
# HSA API function pointers.
|
||||
if prop['name'] in ('callback', 'handler'):
|
||||
if prop["name"] in ("callback", "handler"):
|
||||
return True
|
||||
|
||||
# HIP API function pointers.
|
||||
if c_type.endswith('Fn_t'):
|
||||
if c_type.endswith("Fn_t"):
|
||||
return True
|
||||
|
||||
# Check the C type itself.
|
||||
if '*' in c_type or '*' in prop.get('raw_type', ''):
|
||||
if "*" in c_type or "*" in prop.get("raw_type", ""):
|
||||
return True
|
||||
|
||||
return False
|
||||
@@ -369,24 +372,24 @@ def _get_ert_members_for_struct(cpp_header, struct, access, member_names):
|
||||
members = []
|
||||
member_names = member_names.copy()
|
||||
member_names.append(None)
|
||||
props = struct['properties']['public']
|
||||
props = struct["properties"]["public"]
|
||||
|
||||
for index, prop in enumerate(props):
|
||||
# Property name.
|
||||
name = prop['name']
|
||||
name = prop["name"]
|
||||
|
||||
# Member names, access, and C type.
|
||||
member_names[-1] = str(name)
|
||||
this_access = f'{access}.{name}'
|
||||
c_type = prop['type']
|
||||
aliases = prop['aliases']
|
||||
this_access = f"{access}.{name}"
|
||||
c_type = prop["type"]
|
||||
aliases = prop["aliases"]
|
||||
|
||||
# Skip no type.
|
||||
if c_type == '':
|
||||
if c_type == "":
|
||||
continue
|
||||
|
||||
# Skip unnamed or union.
|
||||
if name == '' or 'union' in name or re.match(r'\bunion\b', c_type):
|
||||
if name == "" or "union" in name or re.match(r"\bunion\b", c_type):
|
||||
continue
|
||||
|
||||
# Check for known C type alias.
|
||||
@@ -399,8 +402,7 @@ def _get_ert_members_for_struct(cpp_header, struct, access, member_names):
|
||||
c_type = c_type_alias
|
||||
|
||||
# Check for C string.
|
||||
if re.match(r'^((const\s+char)|(char\s+const)|char)\s*\*$',
|
||||
c_type.strip()):
|
||||
if re.match(r"^((const\s+char)|(char\s+const)|char)\s*\*$", c_type.strip()):
|
||||
members.append(_ErtMember(this_access, member_names, _OptStrFt()))
|
||||
continue
|
||||
|
||||
@@ -417,13 +419,17 @@ def _get_ert_members_for_struct(cpp_header, struct, access, member_names):
|
||||
sub_struct = cpp_header.classes.get(aliases[0])
|
||||
|
||||
if sub_struct is not None:
|
||||
members += _get_ert_members_for_struct(cpp_header, sub_struct,
|
||||
this_access, member_names)
|
||||
members += _get_ert_members_for_struct(
|
||||
cpp_header, sub_struct, this_access, member_names
|
||||
)
|
||||
continue
|
||||
|
||||
# Use a basic field type.
|
||||
members.append(_ErtMember(this_access, member_names,
|
||||
_number_ft_from_c_type(cpp_header, c_type)))
|
||||
members.append(
|
||||
_ErtMember(
|
||||
this_access, member_names, _number_ft_from_c_type(cpp_header, c_type)
|
||||
)
|
||||
)
|
||||
|
||||
return members
|
||||
|
||||
@@ -439,40 +445,48 @@ def _erts_from_cb_data_struct(api_prefix, cpp_header, retval_info, struct):
|
||||
if retval_info is not None:
|
||||
args_nested_cls_index = 1
|
||||
retval_members = {}
|
||||
nested_classes = struct['nested_classes']
|
||||
_make_sure(len(nested_classes) >= 1,
|
||||
f"Return value union doesn't exist in `{struct['name']}`")
|
||||
nested_classes = struct["nested_classes"]
|
||||
_make_sure(
|
||||
len(nested_classes) >= 1,
|
||||
f"Return value union doesn't exist in `{struct['name']}`",
|
||||
)
|
||||
retval_union = nested_classes[0]
|
||||
|
||||
for prop in retval_union['properties']['public']:
|
||||
name = str(prop['name'])
|
||||
member = _ErtMember(f'GetApiData().{name}', ['retval'],
|
||||
_number_ft_from_c_type(cpp_header, prop['type']))
|
||||
retval_members[prop['name']] = member
|
||||
for prop in retval_union["properties"]["public"]:
|
||||
name = str(prop["name"])
|
||||
member = _ErtMember(
|
||||
f"GetApiData().{name}",
|
||||
["retval"],
|
||||
_number_ft_from_c_type(cpp_header, prop["type"]),
|
||||
)
|
||||
retval_members[prop["name"]] = member
|
||||
|
||||
# Make sure we have everything we need.
|
||||
for api_func_name, retval_name in retval_info.items():
|
||||
if retval_name is not None:
|
||||
_make_sure(retval_name in retval_members,
|
||||
f"Return value union member `{retval_name}` doesn't exist (function {api_func_name}())")
|
||||
_make_sure(
|
||||
retval_name in retval_members,
|
||||
f"Return value union member `{retval_name}` doesn't exist (function {api_func_name}())",
|
||||
)
|
||||
|
||||
# Create beginning/end event record type objects.
|
||||
begin_erts = []
|
||||
end_erts = []
|
||||
nested_classes = struct['nested_classes'][args_nested_cls_index]['nested_classes']
|
||||
props = struct['nested_classes'][args_nested_cls_index]['properties']['public']
|
||||
_make_sure(len(nested_classes) == len(props),
|
||||
f'Mismatch between nested structure and member count in `{struct["name"]}`')
|
||||
nested_classes = struct["nested_classes"][args_nested_cls_index]["nested_classes"]
|
||||
props = struct["nested_classes"][args_nested_cls_index]["properties"]["public"]
|
||||
_make_sure(
|
||||
len(nested_classes) == len(props),
|
||||
f'Mismatch between nested structure and member count in `{struct["name"]}`',
|
||||
)
|
||||
|
||||
for index, prop in enumerate(props):
|
||||
# API function name is the name of the member.
|
||||
api_func_name = str(prop['name'])
|
||||
api_func_name = str(prop["name"])
|
||||
|
||||
# Get the parameters.
|
||||
members = _get_ert_members_for_struct(cpp_header,
|
||||
nested_classes[index],
|
||||
f'GetApiData().args.{api_func_name}',
|
||||
[])
|
||||
members = _get_ert_members_for_struct(
|
||||
cpp_header, nested_classes[index], f"GetApiData().args.{api_func_name}", []
|
||||
)
|
||||
|
||||
# Append new beginning event record type object.
|
||||
begin_erts.append(_BeginErt(api_func_name, members))
|
||||
@@ -499,7 +513,7 @@ def _erts_from_cb_data_struct(api_prefix, cpp_header, retval_info, struct):
|
||||
# This only applies to the HSA API: for other APIs, this function
|
||||
# returns `None`.
|
||||
def _get_retval_info(path):
|
||||
if 'hsa' not in os.path.basename(path):
|
||||
if "hsa" not in os.path.basename(path):
|
||||
return
|
||||
|
||||
retval_info = {}
|
||||
@@ -508,7 +522,7 @@ def _get_retval_info(path):
|
||||
with open(path) as f:
|
||||
for line in f:
|
||||
if 'out << ")' in line and cur_api_func_name is not None:
|
||||
m = re.search(r'api_data.(\w+_retval)', line)
|
||||
m = re.search(r"api_data.(\w+_retval)", line)
|
||||
retval_info[cur_api_func_name] = m.group(1) if m else None
|
||||
else:
|
||||
m = re.search(r'out << "(hsa_\w+)\(";', line)
|
||||
@@ -525,7 +539,7 @@ def _yaml_dst_from_erts(api_prefix, erts):
|
||||
# Base.
|
||||
yaml_erts = {}
|
||||
yaml_dst = {
|
||||
'event-record-types': yaml_erts,
|
||||
"event-record-types": yaml_erts,
|
||||
}
|
||||
|
||||
# Create one event record type per API function.
|
||||
@@ -533,9 +547,9 @@ def _yaml_dst_from_erts(api_prefix, erts):
|
||||
# Base.
|
||||
yaml_members = []
|
||||
yaml_ert = {
|
||||
'payload-field-type': {
|
||||
'class': 'struct',
|
||||
'members': yaml_members,
|
||||
"payload-field-type": {
|
||||
"class": "struct",
|
||||
"members": yaml_members,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -543,11 +557,14 @@ def _yaml_dst_from_erts(api_prefix, erts):
|
||||
for member in ert.members:
|
||||
# barectf doesn't support nested CTF structures, so join
|
||||
# individual member names with `__` to flatten.
|
||||
yaml_members.append({
|
||||
'_' + '__'.join(member.member_names): {
|
||||
'field-type': member.ft.barectf_yaml,
|
||||
},
|
||||
})
|
||||
yaml_members.append(
|
||||
{
|
||||
"_"
|
||||
+ "__".join(member.member_names): {
|
||||
"field-type": member.ft.barectf_yaml,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
# Add event record type.
|
||||
yaml_erts[ert.name(api_prefix)] = yaml_ert
|
||||
@@ -560,23 +577,23 @@ def _yaml_dst_from_erts(api_prefix, erts):
|
||||
# tracing function depending on the API function operation ID.
|
||||
def _cpp_switch_statement_from_erts(api_prefix, erts):
|
||||
lines = []
|
||||
lines.append('switch (GetOp()) {')
|
||||
lines.append("switch (GetOp()) {")
|
||||
|
||||
for ert in erts:
|
||||
lines.append(f' case {api_prefix.upper()}_API_ID_{ert.api_func_name}:')
|
||||
lines.append(f' barectf_{api_prefix}_api_trace_{ert.name(api_prefix)}(')
|
||||
lines.append(f' &barectf_ctx,')
|
||||
lines.append(f' GetThreadId(),')
|
||||
lines.append(f' GetQueueId(),')
|
||||
lines.append(f' GetAgentId(),')
|
||||
lines.append(f' GetCorrelationId(),')
|
||||
lines.append(f" case {api_prefix.upper()}_API_ID_{ert.api_func_name}:")
|
||||
lines.append(f" barectf_{api_prefix}_api_trace_{ert.name(api_prefix)}(")
|
||||
lines.append(f" &barectf_ctx,")
|
||||
lines.append(f" GetThreadId(),")
|
||||
lines.append(f" GetQueueId(),")
|
||||
lines.append(f" GetAgentId(),")
|
||||
lines.append(f" GetCorrelationId(),")
|
||||
|
||||
if api_prefix == 'hip':
|
||||
lines.append(f' GetKernelName().c_str(),')
|
||||
if api_prefix == "hip":
|
||||
lines.append(f" GetKernelName().c_str(),")
|
||||
|
||||
if len(ert.members) == 0:
|
||||
# Remove last comma.
|
||||
lines[-1] = lines[-1].replace(',', '')
|
||||
lines[-1] = lines[-1].replace(",", "")
|
||||
|
||||
for index, member in enumerate(ert.members):
|
||||
if type(member.ft) is _OptStrFt:
|
||||
@@ -584,17 +601,17 @@ def _cpp_switch_statement_from_erts(api_prefix, erts):
|
||||
# an empty string.
|
||||
lines.append(f' {member.access} ? {member.access} : ""')
|
||||
elif type(member.ft) is _StrFt:
|
||||
lines.append(f' {member.access}')
|
||||
lines.append(f" {member.access}")
|
||||
else:
|
||||
lines.append(f' {member.ft.cast(member.access)}')
|
||||
lines.append(f" {member.ft.cast(member.access)}")
|
||||
|
||||
if index + 1 < len(ert.members):
|
||||
lines[-1] += ','
|
||||
lines[-1] += ","
|
||||
|
||||
lines.append(' );')
|
||||
lines.append(' break;')
|
||||
lines.append(" );")
|
||||
lines.append(" break;")
|
||||
|
||||
lines.append('}')
|
||||
lines.append("}")
|
||||
return lines
|
||||
|
||||
|
||||
@@ -612,29 +629,28 @@ def _process_file(api_prefix, path):
|
||||
|
||||
# Find callback data structure.
|
||||
for struct_name, struct in cpp_header.classes.items():
|
||||
if re.match(r'^' + api_prefix + r'_api_data\w+$', struct_name):
|
||||
if re.match(r"^" + api_prefix + r"_api_data\w+$", struct_name):
|
||||
# Process callback data structure.
|
||||
begin_erts, end_erts = _erts_from_cb_data_struct(api_prefix,
|
||||
cpp_header,
|
||||
retval_info,
|
||||
struct)
|
||||
begin_erts, end_erts = _erts_from_cb_data_struct(
|
||||
api_prefix, cpp_header, retval_info, struct
|
||||
)
|
||||
|
||||
# Write barectf YAML file.
|
||||
with open(f'{api_prefix}_erts.yaml', 'w') as f:
|
||||
with open(f"{api_prefix}_erts.yaml", "w") as f:
|
||||
f.write(_yaml_dst_from_erts(api_prefix, begin_erts + end_erts))
|
||||
|
||||
# Write C++ code (beginning event record).
|
||||
with open(f'{api_prefix}_begin.cpp.i', 'w') as f:
|
||||
f.write('\n'.join(_cpp_switch_statement_from_erts(api_prefix,
|
||||
begin_erts)))
|
||||
with open(f"{api_prefix}_begin.cpp.i", "w") as f:
|
||||
f.write(
|
||||
"\n".join(_cpp_switch_statement_from_erts(api_prefix, begin_erts))
|
||||
)
|
||||
|
||||
# Write C++ code (end event record).
|
||||
with open(f'{api_prefix}_end.cpp.i', 'w') as f:
|
||||
f.write('\n'.join(_cpp_switch_statement_from_erts(api_prefix,
|
||||
end_erts)))
|
||||
with open(f"{api_prefix}_end.cpp.i", "w") as f:
|
||||
f.write("\n".join(_cpp_switch_statement_from_erts(api_prefix, end_erts)))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
# Disable `CppHeaderParser` printing to standard output.
|
||||
CppHeaderParser.CppHeaderParser.print_warnings = 0
|
||||
CppHeaderParser.CppHeaderParser.print_errors = 0
|
||||
|
||||
@@ -24,10 +24,14 @@ import sys
|
||||
import yaml
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
with open('env.yaml', 'w') as f:
|
||||
f.write(yaml.dump({
|
||||
'environment': {
|
||||
'rocprofiler_version': sys.argv[1],
|
||||
}
|
||||
}))
|
||||
if __name__ == "__main__":
|
||||
with open("env.yaml", "w") as f:
|
||||
f.write(
|
||||
yaml.dump(
|
||||
{
|
||||
"environment": {
|
||||
"rocprofiler_version": sys.argv[1],
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
file(GLOB ROCPROFILER_UTIL_SRC_FILES ${PROJECT_SOURCE_DIR}/src/utils/helper.cpp)
|
||||
|
||||
add_library(perfetto_plugin ${LIBRARY_TYPE} ${ROCPROFILER_UTIL_SRC_FILES} perfetto.cpp
|
||||
perfetto_sdk/sdk/perfetto.cc)
|
||||
add_subdirectory(perfetto_sdk)
|
||||
|
||||
add_library(perfetto_plugin ${LIBRARY_TYPE} ${ROCPROFILER_UTIL_SRC_FILES} perfetto.cpp)
|
||||
|
||||
set_target_properties(
|
||||
perfetto_plugin
|
||||
@@ -13,16 +14,14 @@ set_target_properties(
|
||||
target_compile_definitions(perfetto_plugin PRIVATE HIP_PROF_HIP_API_STRING=1
|
||||
__HIP_PLATFORM_AMD__=1)
|
||||
|
||||
target_include_directories(
|
||||
perfetto_plugin PRIVATE ${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_SOURCE_DIR}/plugin/perfetto/perfetto_sdk/sdk)
|
||||
target_include_directories(perfetto_plugin PRIVATE ${PROJECT_SOURCE_DIR})
|
||||
|
||||
target_link_options(
|
||||
perfetto_plugin PRIVATE -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/../exportmap
|
||||
-Wl,--no-undefined)
|
||||
|
||||
target_link_libraries(perfetto_plugin PRIVATE rocprofiler-v2 Threads::Threads stdc++fs
|
||||
amd_comgr)
|
||||
target_link_libraries(perfetto_plugin PRIVATE rocprofiler-v2 rocprofiler::perfetto-sdk
|
||||
Threads::Threads stdc++fs amd_comgr)
|
||||
|
||||
install(TARGETS perfetto_plugin
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME} COMPONENT plugins)
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
set(CMAKE_CXX_CLANG_TIDY)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
add_library(rocprofiler-perfetto-sdk STATIC sdk/perfetto.h sdk/perfetto.cc)
|
||||
add_library(rocprofiler::perfetto-sdk ALIAS rocprofiler-perfetto-sdk)
|
||||
|
||||
target_include_directories(rocprofiler-perfetto-sdk
|
||||
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/sdk>)
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
[tool.black]
|
||||
line-length = 90
|
||||
target-version = ['py36', 'py37', 'py38', 'py39', 'py310']
|
||||
include = '\.py$'
|
||||
exclude = '''
|
||||
(
|
||||
/(
|
||||
\.eggs
|
||||
| \.git
|
||||
| \.github
|
||||
| \.tox
|
||||
| \.venv
|
||||
| \.misc
|
||||
| \.vscode
|
||||
| \.cache
|
||||
| \.pytest_cache
|
||||
| dist
|
||||
| external
|
||||
| build
|
||||
| build-release
|
||||
| build-rocprofiler
|
||||
)/
|
||||
)
|
||||
'''
|
||||
@@ -1,13 +1,10 @@
|
||||
barectf==3.1.1
|
||||
bcrypt==3.2.0
|
||||
CppHeaderParser==2.7.4
|
||||
lxml==4.9.2
|
||||
matplotlib==3.7.1
|
||||
pandas==2.0.2
|
||||
plotly==5.15.0
|
||||
ply==3.11
|
||||
protobuf==3.20.3
|
||||
pycparser==2.21
|
||||
pyparsing==3.0.9
|
||||
websocket-client==1.5.2
|
||||
websockets==11.0.3
|
||||
barectf
|
||||
bcrypt
|
||||
CppHeaderParser
|
||||
lxml
|
||||
matplotlib
|
||||
pandas
|
||||
protobuf
|
||||
pycparser
|
||||
pyparsing
|
||||
websockets
|
||||
@@ -23,6 +23,9 @@ set(CMAKE_EXECUTABLE_RPATH_LINK_HIP_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_F
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${ROCM_PATH}/lib/cmake/hip")
|
||||
set(CMAKE_HIP_ARCHITECTURES OFF)
|
||||
if(DEFINED ROCM_PATH)
|
||||
set(HIP_ROOT_DIR "${ROCM_PATH}/bin")
|
||||
endif()
|
||||
find_package(HIP REQUIRED MODULE)
|
||||
|
||||
find_package(
|
||||
@@ -36,7 +39,7 @@ find_package(LibElf REQUIRED)
|
||||
find_package(LibDw REQUIRED)
|
||||
|
||||
# Add a custom targets to build and run all the tests
|
||||
add_custom_target(samples)
|
||||
add_custom_target(samples ALL)
|
||||
add_dependencies(samples rocprofiler-v2)
|
||||
add_custom_target(
|
||||
run-samples
|
||||
@@ -46,6 +49,32 @@ add_custom_target(
|
||||
file(GLOB ROCPROFILER_UTIL_SRC_FILES ${PROJECT_SOURCE_DIR}/src/utils/helper.cpp)
|
||||
# ########################################################################################
|
||||
|
||||
function(rocprofiler_sample_add_test _TARGET _ARGS)
|
||||
if(TARGET ${_TARGET})
|
||||
if(NOT TEST ${_TARGET})
|
||||
add_test(
|
||||
NAME ${_TARGET}
|
||||
COMMAND $<TARGET_FILE:${_TARGET}> ${_ARGS}
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
|
||||
endif()
|
||||
set_tests_properties(
|
||||
${_TARGET}
|
||||
PROPERTIES
|
||||
LABELS
|
||||
"samples"
|
||||
ENVIRONMENT
|
||||
"ROCPROFILER_METRICS_PATH=${PROJECT_BINARY_DIR}/libexec/rocprofiler/counters/derived_counters.xml;${ROCPROFILER_MEMCHECK_PRELOAD_ENV}"
|
||||
RUN_SERIAL
|
||||
TRUE
|
||||
${ARGN})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(rocprofiler_sample_add_executable _TARGET)
|
||||
hip_add_executable(${_TARGET} ${ARGN})
|
||||
rocprofiler_sample_add_test(${_TARGET} "")
|
||||
endfunction()
|
||||
|
||||
# ########################################################################################
|
||||
# ########################################################################################
|
||||
# Samples Build & Run Script
|
||||
@@ -59,7 +88,7 @@ file(GLOB ROCPROFILER_UTIL_SRC_FILES ${PROJECT_SOURCE_DIR}/src/utils/helper.cpp)
|
||||
# Build Kernel No Replay Sample
|
||||
set_source_files_properties(profiler/kernel_profiling_no_replay_sample.cpp
|
||||
PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(
|
||||
rocprofiler_sample_add_executable(
|
||||
profiler_kernel_no_replay profiler/kernel_profiling_no_replay_sample.cpp
|
||||
${ROCPROFILER_UTIL_SRC_FILES})
|
||||
target_include_directories(
|
||||
@@ -75,8 +104,9 @@ install(TARGETS profiler_kernel_no_replay
|
||||
# Build Device Profiling Sample
|
||||
set_source_files_properties(profiler/device_profiling_sample.cpp
|
||||
PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(profiler_device_profiling profiler/device_profiling_sample.cpp
|
||||
${ROCPROFILER_UTIL_SRC_FILES})
|
||||
rocprofiler_sample_add_executable(
|
||||
profiler_device_profiling profiler/device_profiling_sample.cpp
|
||||
${ROCPROFILER_UTIL_SRC_FILES})
|
||||
target_include_directories(
|
||||
profiler_device_profiling PRIVATE ${PROJECT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/common)
|
||||
@@ -86,12 +116,14 @@ add_dependencies(samples profiler_device_profiling)
|
||||
install(TARGETS profiler_device_profiling
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/samples
|
||||
COMPONENT samples)
|
||||
set_tests_properties(profiler_device_profiling PROPERTIES DISABLED TRUE)
|
||||
|
||||
# Build Counters Sampling example
|
||||
set_source_files_properties(counters_sampler/pcie_counters_example.cpp
|
||||
PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(pcie_counters_sampler counters_sampler/pcie_counters_example.cpp
|
||||
${ROCPROFILER_UTIL_SRC_FILES})
|
||||
rocprofiler_sample_add_executable(
|
||||
pcie_counters_sampler counters_sampler/pcie_counters_example.cpp
|
||||
${ROCPROFILER_UTIL_SRC_FILES})
|
||||
target_include_directories(
|
||||
pcie_counters_sampler PRIVATE ${PROJECT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/common)
|
||||
@@ -105,7 +137,7 @@ install(TARGETS pcie_counters_sampler
|
||||
# Build XGMI Counters Sampling example
|
||||
set_source_files_properties(counters_sampler/xgmi_counters_sampler_example.cpp
|
||||
PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(
|
||||
rocprofiler_sample_add_executable(
|
||||
xgmi_counters_sampler counters_sampler/xgmi_counters_sampler_example.cpp
|
||||
${ROCPROFILER_UTIL_SRC_FILES})
|
||||
target_include_directories(
|
||||
@@ -117,6 +149,7 @@ add_dependencies(samples xgmi_counters_sampler)
|
||||
install(TARGETS xgmi_counters_sampler
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/samples
|
||||
COMPONENT samples)
|
||||
set_tests_properties(xgmi_counters_sampler PROPERTIES DISABLED TRUE)
|
||||
|
||||
# ########################################################################################
|
||||
|
||||
@@ -126,7 +159,8 @@ install(TARGETS xgmi_counters_sampler
|
||||
|
||||
# Build HIP/HSA Trace Sample
|
||||
set_source_files_properties(tracer/sample.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(tracer_hip_hsa tracer/sample.cpp ${ROCPROFILER_UTIL_SRC_FILES})
|
||||
rocprofiler_sample_add_executable(tracer_hip_hsa tracer/sample.cpp
|
||||
${ROCPROFILER_UTIL_SRC_FILES})
|
||||
target_include_directories(tracer_hip_hsa PRIVATE ${PROJECT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/common)
|
||||
target_link_libraries(tracer_hip_hsa PRIVATE rocprofiler-v2 amd_comgr)
|
||||
@@ -139,8 +173,8 @@ install(TARGETS tracer_hip_hsa
|
||||
# Build HIP/HSA Trace with async output api trace data Sample
|
||||
set_source_files_properties(tracer/sample_async.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT
|
||||
1)
|
||||
hip_add_executable(tracer_hip_hsa_async tracer/sample_async.cpp
|
||||
${ROCPROFILER_UTIL_SRC_FILES})
|
||||
rocprofiler_sample_add_executable(tracer_hip_hsa_async tracer/sample_async.cpp
|
||||
${ROCPROFILER_UTIL_SRC_FILES})
|
||||
target_include_directories(
|
||||
tracer_hip_hsa_async PRIVATE ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/common)
|
||||
target_link_libraries(tracer_hip_hsa_async PRIVATE rocprofiler-v2 amd_comgr)
|
||||
@@ -162,6 +196,7 @@ hip_add_executable(
|
||||
pc_sampling_code_printing ${PC_SAMPLING_CODE_PRINTING_FILES} HIPCC_OPTIONS -std=c++17
|
||||
# Include debugging symbols and source for the contextual disassembly
|
||||
-gdwarf-4)
|
||||
rocprofiler_sample_add_test(pc_sampling_code_printing "-d;0;-n;100000000;10;43532")
|
||||
|
||||
check_c_source_compiles(
|
||||
"
|
||||
|
||||
@@ -24,7 +24,7 @@ int main(int argc, char** argv) {
|
||||
int gpu_agent = 0;
|
||||
int cpu_agent = 0;
|
||||
CHECK_ROCPROFILER(rocprofiler_device_profiling_session_create(
|
||||
&counters[0], counters.size(), &dp_session_id, gpu_agent, cpu_agent));
|
||||
&counters[0], counters.size(), &dp_session_id, cpu_agent, gpu_agent));
|
||||
|
||||
printf("session start \n");
|
||||
// start GPU device profiling
|
||||
|
||||
@@ -27,118 +27,164 @@ import CppHeaderParser
|
||||
import argparse
|
||||
import string
|
||||
|
||||
LICENSE = \
|
||||
'/*\n' + \
|
||||
'Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved.\n' + \
|
||||
'\n' + \
|
||||
'Permission is hereby granted, free of charge, to any person obtaining a copy\n' + \
|
||||
'of this software and associated documentation files (the "Software"), to deal\n' + \
|
||||
'in the Software without restriction, including without limitation the rights\n' + \
|
||||
'to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n' + \
|
||||
'copies of the Software, and to permit persons to whom the Software is\n' + \
|
||||
'furnished to do so, subject to the following conditions:\n' + \
|
||||
'\n' + \
|
||||
'The above copyright notice and this permission notice shall be included in\n' + \
|
||||
'all copies or substantial portions of the Software.\n' + \
|
||||
'\n' + \
|
||||
'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n' + \
|
||||
'IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n' + \
|
||||
'FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n' + \
|
||||
'AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n' + \
|
||||
'LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n' + \
|
||||
'OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n' + \
|
||||
'THE SOFTWARE.\n' + \
|
||||
'*/\n'
|
||||
LICENSE = (
|
||||
"/*\n"
|
||||
+ "Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved.\n"
|
||||
+ "\n"
|
||||
+ "Permission is hereby granted, free of charge, to any person obtaining a copy\n"
|
||||
+ 'of this software and associated documentation files (the "Software"), to deal\n'
|
||||
+ "in the Software without restriction, including without limitation the rights\n"
|
||||
+ "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n"
|
||||
+ "copies of the Software, and to permit persons to whom the Software is\n"
|
||||
+ "furnished to do so, subject to the following conditions:\n"
|
||||
+ "\n"
|
||||
+ "The above copyright notice and this permission notice shall be included in\n"
|
||||
+ "all copies or substantial portions of the Software.\n"
|
||||
+ "\n"
|
||||
+ 'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n'
|
||||
+ "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n"
|
||||
+ "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n"
|
||||
+ "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n"
|
||||
+ "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n"
|
||||
+ "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n"
|
||||
+ "THE SOFTWARE.\n"
|
||||
+ "*/\n"
|
||||
)
|
||||
|
||||
|
||||
header_basic = \
|
||||
'namespace detail {\n' + \
|
||||
'template <typename T>\n' + \
|
||||
' inline static std::ostream& operator<<(std::ostream& out, const T& v) {\n' + \
|
||||
' using std::operator<<;\n' + \
|
||||
' static bool recursion = false;\n' + \
|
||||
' if (recursion == false) { recursion = true; out << v; recursion = false; }\n' + \
|
||||
' return out;\n }\n' + \
|
||||
'\n' + \
|
||||
' inline static std::ostream &operator<<(std::ostream &out, const unsigned char &v) {\n' + \
|
||||
' out << (unsigned int)v;\n' + \
|
||||
' return out;\n }\n' + \
|
||||
'\n' + \
|
||||
' inline static std::ostream &operator<<(std::ostream &out, const char &v) {\n' + \
|
||||
' out << (unsigned char)v;\n' + \
|
||||
' return out;\n }\n'
|
||||
header_basic = (
|
||||
"namespace detail {\n"
|
||||
+ "template <typename T>\n"
|
||||
+ " inline static std::ostream& operator<<(std::ostream& out, const T& v) {\n"
|
||||
+ " using std::operator<<;\n"
|
||||
+ " static bool recursion = false;\n"
|
||||
+ " if (recursion == false) { recursion = true; out << v; recursion = false; }\n"
|
||||
+ " return out;\n }\n"
|
||||
+ "\n"
|
||||
+ " inline static std::ostream &operator<<(std::ostream &out, const unsigned char &v) {\n"
|
||||
+ " out << (unsigned int)v;\n"
|
||||
+ " return out;\n }\n"
|
||||
+ "\n"
|
||||
+ " inline static std::ostream &operator<<(std::ostream &out, const char &v) {\n"
|
||||
+ " out << (unsigned char)v;\n"
|
||||
+ " return out;\n }\n"
|
||||
)
|
||||
|
||||
structs_analyzed = {}
|
||||
global_ops = ''
|
||||
global_str = ''
|
||||
global_ops = ""
|
||||
global_str = ""
|
||||
output_filename_h = None
|
||||
apiname = ""
|
||||
|
||||
|
||||
# process_struct traverses recursively all structs to extract all fields
|
||||
def process_struct(file_handle, cppHeader_struct, cppHeader, parent_hier_name, apiname):
|
||||
# file_handle: handle for output file {api_name}_ostream_ops.h to be generated
|
||||
# cppHeader_struct: cppHeader struct being processed
|
||||
# cppHeader: cppHeader object created by CppHeaderParser.CppHeader(...)
|
||||
# parent_hier_name: parent hierarchical name used for nested structs/enums
|
||||
# apiname: for example hip.
|
||||
# file_handle: handle for output file {api_name}_ostream_ops.h to be generated
|
||||
# cppHeader_struct: cppHeader struct being processed
|
||||
# cppHeader: cppHeader object created by CppHeaderParser.CppHeader(...)
|
||||
# parent_hier_name: parent hierarchical name used for nested structs/enums
|
||||
# apiname: for example hip.
|
||||
global global_str
|
||||
|
||||
if cppHeader_struct == 'max_align_t': #function pointers not working in cppheaderparser
|
||||
if (
|
||||
cppHeader_struct == "max_align_t"
|
||||
): # function pointers not working in cppheaderparser
|
||||
return
|
||||
if cppHeader_struct not in cppHeader.classes:
|
||||
return
|
||||
if cppHeader_struct in structs_analyzed:
|
||||
return
|
||||
structs_analyzed[cppHeader_struct] = 1
|
||||
for l in reversed(range(len(cppHeader.classes[cppHeader_struct]["properties"]["public"]))):
|
||||
key = 'name'
|
||||
for l in reversed(
|
||||
range(len(cppHeader.classes[cppHeader_struct]["properties"]["public"]))
|
||||
):
|
||||
key = "name"
|
||||
name = ""
|
||||
if key in cppHeader.classes[cppHeader_struct]["properties"]["public"][l]:
|
||||
if parent_hier_name != '':
|
||||
name = parent_hier_name + '.' + cppHeader.classes[cppHeader_struct]["properties"]["public"][l][key]
|
||||
else:
|
||||
name = cppHeader.classes[cppHeader_struct]["properties"]["public"][l][key]
|
||||
if name == '':
|
||||
continue
|
||||
key2 = 'type'
|
||||
if parent_hier_name != "":
|
||||
name = (
|
||||
parent_hier_name
|
||||
+ "."
|
||||
+ cppHeader.classes[cppHeader_struct]["properties"]["public"][l][key]
|
||||
)
|
||||
else:
|
||||
name = cppHeader.classes[cppHeader_struct]["properties"]["public"][l][key]
|
||||
if name == "":
|
||||
continue
|
||||
key2 = "type"
|
||||
mtype = ""
|
||||
if key2 in cppHeader.classes[cppHeader_struct]["properties"]["public"][l]:
|
||||
mtype = cppHeader.classes[cppHeader_struct]["properties"]["public"][l][key2]
|
||||
if mtype == '':
|
||||
continue
|
||||
key3 = 'array_size'
|
||||
if mtype == "":
|
||||
continue
|
||||
key3 = "array_size"
|
||||
array_size = ""
|
||||
if key3 in cppHeader.classes[cppHeader_struct]["properties"]["public"][l]:
|
||||
array_size = cppHeader.classes[cppHeader_struct]["properties"]["public"][l][key3]
|
||||
key4 = 'property_of_class'
|
||||
array_size = cppHeader.classes[cppHeader_struct]["properties"]["public"][l][
|
||||
key3
|
||||
]
|
||||
key4 = "property_of_class"
|
||||
prop = ""
|
||||
if key4 in cppHeader.classes[cppHeader_struct]["properties"]["public"][l]:
|
||||
if key4 in cppHeader.classes[cppHeader_struct]["properties"]["public"][l]:
|
||||
prop = cppHeader.classes[cppHeader_struct]["properties"]["public"][l][key4]
|
||||
|
||||
str = ''
|
||||
str = ""
|
||||
if "union" not in mtype:
|
||||
indent = ""
|
||||
str += " if (std::string(\"" + cppHeader_struct + "::" + name + "\").find(" + apiname.upper() + "_structs_regex" + ") != std::string::npos) {\n"
|
||||
str += (
|
||||
' if (std::string("'
|
||||
+ cppHeader_struct
|
||||
+ "::"
|
||||
+ name
|
||||
+ '").find('
|
||||
+ apiname.upper()
|
||||
+ "_structs_regex"
|
||||
+ ") != std::string::npos) {\n"
|
||||
)
|
||||
indent = " "
|
||||
str += indent + " roctracer::" + apiname.lower() + "_support::detail::operator<<(out, \"" + name + "=\");\n"
|
||||
str += indent + " roctracer::" + apiname.lower() + "_support::detail::operator<<(out, v." + name + ");\n"
|
||||
str += indent + " roctracer::" + apiname.lower() + "_support::detail::operator<<(out, \", \");\n"
|
||||
str += (
|
||||
indent
|
||||
+ " roctracer::"
|
||||
+ apiname.lower()
|
||||
+ '_support::detail::operator<<(out, "'
|
||||
+ name
|
||||
+ '=");\n'
|
||||
)
|
||||
str += (
|
||||
indent
|
||||
+ " roctracer::"
|
||||
+ apiname.lower()
|
||||
+ "_support::detail::operator<<(out, v."
|
||||
+ name
|
||||
+ ");\n"
|
||||
)
|
||||
str += (
|
||||
indent
|
||||
+ " roctracer::"
|
||||
+ apiname.lower()
|
||||
+ '_support::detail::operator<<(out, ", ");\n'
|
||||
)
|
||||
str += " }\n"
|
||||
if "void" not in mtype:
|
||||
global_str += str
|
||||
else:
|
||||
if prop != '':
|
||||
next_cppHeader_struct = prop + "::"
|
||||
process_struct(file_handle, next_cppHeader_struct, cppHeader, name, apiname)
|
||||
next_cppHeader_struct = prop + "::" + mtype + " "
|
||||
process_struct(file_handle, next_cppHeader_struct, cppHeader, name, apiname)
|
||||
if prop != "":
|
||||
next_cppHeader_struct = prop + "::"
|
||||
process_struct(
|
||||
file_handle, next_cppHeader_struct, cppHeader, name, apiname
|
||||
)
|
||||
next_cppHeader_struct = prop + "::" + mtype + " "
|
||||
process_struct(
|
||||
file_handle, next_cppHeader_struct, cppHeader, name, apiname
|
||||
)
|
||||
next_cppHeader_struct = cppHeader_struct + "::"
|
||||
process_struct(file_handle, next_cppHeader_struct, cppHeader, name, apiname)
|
||||
|
||||
|
||||
# Parses API header file and generates ostream ops files ostream_ops.h
|
||||
def gen_cppheader(infilepath, outfilepath, rank):
|
||||
# infilepath: API Header file to be parsed
|
||||
# outfilepath: Output file where ostream operators are written
|
||||
# infilepath: API Header file to be parsed
|
||||
# outfilepath: Output file where ostream operators are written
|
||||
global global_ops
|
||||
global output_filename_h
|
||||
global apiname
|
||||
@@ -149,94 +195,142 @@ def gen_cppheader(infilepath, outfilepath, rank):
|
||||
print(e)
|
||||
sys.exit(1)
|
||||
if rank == 0 or rank == 2:
|
||||
mpath = os.path.dirname(outfilepath)
|
||||
if mpath == "":
|
||||
mpath = os.getcwd()
|
||||
apiname = outfilepath.replace(mpath + "/","")
|
||||
output_filename_h = open(outfilepath,"w+")
|
||||
apiname = apiname.replace("_ostream_ops.h","")
|
||||
apiname = apiname.upper()
|
||||
output_filename_h.write("// automatically generated\n")
|
||||
output_filename_h.write(LICENSE + '\n')
|
||||
header_s = \
|
||||
'#ifndef INC_' + apiname + '_OSTREAM_OPS_H_\n' + \
|
||||
'#define INC_' + apiname + '_OSTREAM_OPS_H_\n' + \
|
||||
'\n' + \
|
||||
'#include "src/core/session/tracer/src/roctracer.h"\n' + \
|
||||
'\n' + \
|
||||
'#ifdef __cplusplus\n' + \
|
||||
'#include <iostream>\n' + \
|
||||
'#include <string>\n'
|
||||
mpath = os.path.dirname(outfilepath)
|
||||
if mpath == "":
|
||||
mpath = os.getcwd()
|
||||
apiname = outfilepath.replace(mpath + "/", "")
|
||||
output_filename_h = open(outfilepath, "w+")
|
||||
apiname = apiname.replace("_ostream_ops.h", "")
|
||||
apiname = apiname.upper()
|
||||
output_filename_h.write("// automatically generated\n")
|
||||
output_filename_h.write(LICENSE + "\n")
|
||||
header_s = (
|
||||
"#ifndef INC_"
|
||||
+ apiname
|
||||
+ "_OSTREAM_OPS_H_\n"
|
||||
+ "#define INC_"
|
||||
+ apiname
|
||||
+ "_OSTREAM_OPS_H_\n"
|
||||
+ "\n"
|
||||
+ '#include "src/core/session/tracer/src/roctracer.h"\n'
|
||||
+ "\n"
|
||||
+ "#ifdef __cplusplus\n"
|
||||
+ "#include <iostream>\n"
|
||||
+ "#include <string>\n"
|
||||
)
|
||||
|
||||
output_filename_h.write(header_s)
|
||||
output_filename_h.write('\n')
|
||||
output_filename_h.write('namespace roctracer {\n')
|
||||
output_filename_h.write('namespace ' + apiname.lower() + '_support {\n')
|
||||
output_filename_h.write('static int ' + apiname.upper() + '_depth_max = 1;\n')
|
||||
output_filename_h.write('static int ' + apiname.upper() + '_depth_max_cnt = 0;\n')
|
||||
output_filename_h.write('static std::string ' + apiname.upper() + '_structs_regex = \"\";\n')
|
||||
output_filename_h.write('// begin ostream ops for '+ apiname + ' \n')
|
||||
output_filename_h.write("// basic ostream ops\n")
|
||||
output_filename_h.write(header_basic)
|
||||
output_filename_h.write("// End of basic ostream ops\n\n")
|
||||
output_filename_h.write(header_s)
|
||||
output_filename_h.write("\n")
|
||||
output_filename_h.write("namespace roctracer {\n")
|
||||
output_filename_h.write("namespace " + apiname.lower() + "_support {\n")
|
||||
output_filename_h.write("static int " + apiname.upper() + "_depth_max = 1;\n")
|
||||
output_filename_h.write("static int " + apiname.upper() + "_depth_max_cnt = 0;\n")
|
||||
output_filename_h.write(
|
||||
"static std::string " + apiname.upper() + '_structs_regex = "";\n'
|
||||
)
|
||||
output_filename_h.write("// begin ostream ops for " + apiname + " \n")
|
||||
output_filename_h.write("// basic ostream ops\n")
|
||||
output_filename_h.write(header_basic)
|
||||
output_filename_h.write("// End of basic ostream ops\n\n")
|
||||
|
||||
for c in cppHeader.classes:
|
||||
if c[-2] == ':' and c[-1] == ':': continue #ostream operator cannot be overloaded for anonymous struct therefore it is skipped
|
||||
if c[-2] == ":" and c[-1] == ":":
|
||||
continue # ostream operator cannot be overloaded for anonymous struct therefore it is skipped
|
||||
if "union" in c:
|
||||
continue
|
||||
if c in structs_analyzed:
|
||||
continue
|
||||
if c == 'max_align_t' or c == '__fsid_t': # Skipping as it is defined in multiple domains
|
||||
continue
|
||||
if (
|
||||
c == "max_align_t" or c == "__fsid_t"
|
||||
): # Skipping as it is defined in multiple domains
|
||||
continue
|
||||
if len(cppHeader.classes[c]["properties"]["public"]) != 0:
|
||||
output_filename_h.write("inline static std::ostream& operator<<(std::ostream& out, const " + c + "& v)\n")
|
||||
output_filename_h.write("{\n")
|
||||
output_filename_h.write(" std::operator<<(out, '{');\n")
|
||||
output_filename_h.write(" " + apiname.upper() + "_depth_max_cnt++;\n")
|
||||
output_filename_h.write(" if (" + apiname.upper() + "_depth_max == -1 || " + apiname.upper() + "_depth_max_cnt <= " + apiname.upper() + "_depth_max" + ") {\n" )
|
||||
process_struct(output_filename_h, c, cppHeader, "", apiname)
|
||||
global_str = "\n".join(global_str.split("\n")[0:-3])
|
||||
if global_str != '': global_str += "\n }\n"
|
||||
output_filename_h.write(global_str)
|
||||
output_filename_h.write(" };\n")
|
||||
output_filename_h.write(" " + apiname.upper() + "_depth_max_cnt--;\n")
|
||||
output_filename_h.write(" std::operator<<(out, '}');\n")
|
||||
output_filename_h.write(" return out;\n")
|
||||
output_filename_h.write("}\n")
|
||||
global_str = ''
|
||||
global_ops += "inline static std::ostream& operator<<(std::ostream& out, const " + c + "& v)\n" + "{\n" + " roctracer::" + apiname.lower() + "_support::detail::operator<<(out, v);\n" + " return out;\n" + "}\n\n"
|
||||
output_filename_h.write(
|
||||
"inline static std::ostream& operator<<(std::ostream& out, const "
|
||||
+ c
|
||||
+ "& v)\n"
|
||||
)
|
||||
output_filename_h.write("{\n")
|
||||
output_filename_h.write(" std::operator<<(out, '{');\n")
|
||||
output_filename_h.write(" " + apiname.upper() + "_depth_max_cnt++;\n")
|
||||
output_filename_h.write(
|
||||
" if ("
|
||||
+ apiname.upper()
|
||||
+ "_depth_max == -1 || "
|
||||
+ apiname.upper()
|
||||
+ "_depth_max_cnt <= "
|
||||
+ apiname.upper()
|
||||
+ "_depth_max"
|
||||
+ ") {\n"
|
||||
)
|
||||
process_struct(output_filename_h, c, cppHeader, "", apiname)
|
||||
global_str = "\n".join(global_str.split("\n")[0:-3])
|
||||
if global_str != "":
|
||||
global_str += "\n }\n"
|
||||
output_filename_h.write(global_str)
|
||||
output_filename_h.write(" };\n")
|
||||
output_filename_h.write(" " + apiname.upper() + "_depth_max_cnt--;\n")
|
||||
output_filename_h.write(" std::operator<<(out, '}');\n")
|
||||
output_filename_h.write(" return out;\n")
|
||||
output_filename_h.write("}\n")
|
||||
global_str = ""
|
||||
global_ops += (
|
||||
"inline static std::ostream& operator<<(std::ostream& out, const "
|
||||
+ c
|
||||
+ "& v)\n"
|
||||
+ "{\n"
|
||||
+ " roctracer::"
|
||||
+ apiname.lower()
|
||||
+ "_support::detail::operator<<(out, v);\n"
|
||||
+ " return out;\n"
|
||||
+ "}\n\n"
|
||||
)
|
||||
|
||||
if rank == 1 or rank == 2:
|
||||
footer = '// end ostream ops for '+ apiname + ' \n'
|
||||
footer += '};};};\n\n'
|
||||
output_filename_h.write(footer)
|
||||
output_filename_h.write(global_ops)
|
||||
footer = '#endif //__cplusplus\n' + \
|
||||
'#endif // INC_' + apiname + '_OSTREAM_OPS_H_\n' + \
|
||||
' \n'
|
||||
output_filename_h.write(footer)
|
||||
output_filename_h.write('#include <hip/amd_detail/hip_prof_str.h>')
|
||||
output_filename_h.close()
|
||||
print('File ' + outfilepath + ' generated')
|
||||
footer = "// end ostream ops for " + apiname + " \n"
|
||||
footer += "};};};\n\n"
|
||||
output_filename_h.write(footer)
|
||||
output_filename_h.write(global_ops)
|
||||
footer = (
|
||||
"#endif //__cplusplus\n"
|
||||
+ "#endif // INC_"
|
||||
+ apiname
|
||||
+ "_OSTREAM_OPS_H_\n"
|
||||
+ " \n"
|
||||
)
|
||||
output_filename_h.write(footer)
|
||||
output_filename_h.write("#include <hip/amd_detail/hip_prof_str.h>")
|
||||
output_filename_h.close()
|
||||
print("File " + outfilepath + " generated")
|
||||
|
||||
return
|
||||
|
||||
parser = argparse.ArgumentParser(description='genOstreamOps.py: generates ostream operators for all typedefs in provided input file.')
|
||||
requiredNamed = parser.add_argument_group('Required arguments')
|
||||
requiredNamed.add_argument('-in', metavar='fileList', help='Comma separated list of header files to be parsed', required=True)
|
||||
requiredNamed.add_argument('-out', metavar='file', help='Output file with ostream operators', required=True)
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="genOstreamOps.py: generates ostream operators for all typedefs in provided input file."
|
||||
)
|
||||
requiredNamed = parser.add_argument_group("Required arguments")
|
||||
requiredNamed.add_argument(
|
||||
"-in",
|
||||
metavar="fileList",
|
||||
help="Comma separated list of header files to be parsed",
|
||||
required=True,
|
||||
)
|
||||
requiredNamed.add_argument(
|
||||
"-out", metavar="file", help="Output file with ostream operators", required=True
|
||||
)
|
||||
|
||||
args = vars(parser.parse_args())
|
||||
|
||||
if __name__ == '__main__':
|
||||
flist = args['in'].split(',')
|
||||
if len(flist) == 1:
|
||||
gen_cppheader(flist[0], args['out'],2)
|
||||
else:
|
||||
for i in range(len(flist)):
|
||||
if i == 0:
|
||||
gen_cppheader(flist[i], args['out'],0)
|
||||
elif i == len(flist)-1:
|
||||
gen_cppheader(flist[i], args['out'],1)
|
||||
else:
|
||||
gen_cppheader(flist[i], args['out'],-1)
|
||||
if __name__ == "__main__":
|
||||
flist = args["in"].split(",")
|
||||
if len(flist) == 1:
|
||||
gen_cppheader(flist[0], args["out"], 2)
|
||||
else:
|
||||
for i in range(len(flist)):
|
||||
if i == 0:
|
||||
gen_cppheader(flist[i], args["out"], 0)
|
||||
elif i == len(flist) - 1:
|
||||
gen_cppheader(flist[i], args["out"], 1)
|
||||
else:
|
||||
gen_cppheader(flist[i], args["out"], -1)
|
||||
|
||||
+570
-460
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
Diff 로드
@@ -0,0 +1,8 @@
|
||||
#
|
||||
# LeakSanitizer suppressions file for rocprofiler project.
|
||||
#
|
||||
|
||||
leak:amd_comgr
|
||||
leak:hsa-runtime
|
||||
leak:amdhip
|
||||
leak:python
|
||||
+454
@@ -0,0 +1,454 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
import glob
|
||||
import socket
|
||||
import shutil
|
||||
import argparse
|
||||
import multiprocessing
|
||||
|
||||
# this constant is used to define CTEST_PROJECT_NAME
|
||||
# and default value for CTEST_SUBMIT_URL
|
||||
_PROJECT_NAME = "rocprofiler"
|
||||
_BASE_URL = "10.194.116.31/cdash"
|
||||
|
||||
|
||||
def which(cmd, require):
|
||||
v = shutil.which(cmd)
|
||||
if require and v is None:
|
||||
raise RuntimeError(f"{cmd} not found")
|
||||
return v if v is not None else ""
|
||||
|
||||
|
||||
def generate_custom(args, cmake_args, ctest_args):
|
||||
if not os.path.exists(args.binary_dir):
|
||||
os.makedirs(args.binary_dir)
|
||||
|
||||
if args.memcheck is not None:
|
||||
if args.coverage:
|
||||
raise ValueError(
|
||||
f"Enabling --memcheck={args.memcheck} and --coverage not supported"
|
||||
)
|
||||
cmake_args += [f"-DROCPROFILER_MEMCHECK={args.memcheck}"]
|
||||
|
||||
NAME = args.name
|
||||
SITE = args.site
|
||||
BUILD_JOBS = args.build_jobs
|
||||
SUBMIT_URL = args.submit_url
|
||||
SOURCE_DIR = os.path.realpath(args.source_dir)
|
||||
BINARY_DIR = os.path.realpath(args.binary_dir)
|
||||
CMAKE_ARGS = " ".join(cmake_args)
|
||||
CTEST_ARGS = " ".join(ctest_args)
|
||||
|
||||
GIT_CMD = which("git", require=True)
|
||||
GCOV_CMD = which("gcov", require=False)
|
||||
CMAKE_CMD = which("cmake", require=True)
|
||||
# CTEST_CMD = which("ctest", require=True)
|
||||
|
||||
NAME = re.sub(r"(.*)-([0-9]+)/merge", "PR_\\2_\\1", NAME)
|
||||
|
||||
DEFAULT_CMAKE_ARGS = " ".join(
|
||||
[f"-DROCPROFILER_BUILD_{x}=ON" for x in ["CI", "TESTS", "SAMPLES"]]
|
||||
)
|
||||
|
||||
GPU_TARGETS = ";".join(args.gpu_targets)
|
||||
MEMCHECK_TYPE = "" if args.memcheck is None else args.memcheck
|
||||
|
||||
MEMCHECK_SANITIZER_OPTIONS = ""
|
||||
MEMCHECK_SUPPRESSION_FILE = ""
|
||||
|
||||
if MEMCHECK_TYPE == "AddressSanitizer":
|
||||
MEMCHECK_SANITIZER_OPTIONS = "detect_leaks=0 use_sigaltstack=0"
|
||||
MEMCHECK_SUPPRESSION_FILE = f"{SOURCE_DIR}/script/address-sanitizer-suppr.txt"
|
||||
elif MEMCHECK_TYPE == "LeakSanitizer":
|
||||
MEMCHECK_SUPPRESSION_FILE = f"{SOURCE_DIR}/script/leak-sanitizer-suppr.txt"
|
||||
elif MEMCHECK_TYPE == "ThreadSanitizer":
|
||||
external_symbolizer_path = ""
|
||||
for version in range(8, 20):
|
||||
_symbolizer = shutil.which(f"llvm-symbolizer-{version}")
|
||||
if _symbolizer:
|
||||
external_symbolizer_path = f"external_symbolizer_path={_symbolizer}"
|
||||
os.environ["TSAN_OPTIONS"] = " ".join(
|
||||
[
|
||||
"history_size=5",
|
||||
"second_deadlock_stack=1",
|
||||
f"suppressions={SOURCE_DIR}/script/thread-sanitizer-suppr.txt",
|
||||
external_symbolizer_path,
|
||||
os.environ.get("TSAN_OPTIONS", ""),
|
||||
]
|
||||
)
|
||||
|
||||
return f"""
|
||||
set(CTEST_PROJECT_NAME "{_PROJECT_NAME}")
|
||||
set(CTEST_NIGHTLY_START_TIME "05:00:00 UTC")
|
||||
|
||||
set(CTEST_DROP_METHOD "http")
|
||||
set(CTEST_DROP_SITE_CDASH TRUE)
|
||||
set(CTEST_SUBMIT_URL "http://{SUBMIT_URL}")
|
||||
|
||||
set(CTEST_UPDATE_TYPE git)
|
||||
set(CTEST_UPDATE_VERSION_ONLY TRUE)
|
||||
set(CTEST_GIT_COMMAND {GIT_CMD})
|
||||
set(CTEST_GIT_INIT_SUBMODULES FALSE)
|
||||
|
||||
set(CTEST_OUTPUT_ON_FAILURE TRUE)
|
||||
set(CTEST_USE_LAUNCHERS TRUE)
|
||||
set(CMAKE_CTEST_ARGUMENTS --output-on-failure {CTEST_ARGS})
|
||||
|
||||
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS "100")
|
||||
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS "100")
|
||||
set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE "51200")
|
||||
set(CTEST_CUSTOM_COVERAGE_EXCLUDE "/usr/.*;/opt/.*;.*external/.*;.*samples/.*;.*test/.*;.*tests-v2/.*;.*perfetto/perfetto_sdk/.*;.*ctf/barectf.*")
|
||||
|
||||
set(CTEST_MEMORYCHECK_TYPE "{MEMCHECK_TYPE}")
|
||||
set(CTEST_MEMORYCHECK_SUPPRESSIONS_FILE "{MEMCHECK_SUPPRESSION_FILE}")
|
||||
set(CTEST_MEMORYCHECK_SANITIZER_OPTIONS "{MEMCHECK_SANITIZER_OPTIONS}")
|
||||
|
||||
set(CTEST_SITE "{SITE}")
|
||||
set(CTEST_BUILD_NAME "{NAME}")
|
||||
|
||||
set(CTEST_SOURCE_DIRECTORY {SOURCE_DIR})
|
||||
set(CTEST_BINARY_DIRECTORY {BINARY_DIR})
|
||||
|
||||
set(CTEST_CONFIGURE_COMMAND "{CMAKE_CMD} -B {BINARY_DIR} {SOURCE_DIR} {DEFAULT_CMAKE_ARGS} -DGPU_TARGETS={GPU_TARGETS} {CMAKE_ARGS}")
|
||||
set(CTEST_BUILD_COMMAND "{CMAKE_CMD} --build {BINARY_DIR} --target all --parallel {BUILD_JOBS}")
|
||||
set(CTEST_COVERAGE_COMMAND {GCOV_CMD})
|
||||
"""
|
||||
|
||||
|
||||
def generate_dashboard_script(args):
|
||||
CODECOV = 1 if args.coverage else 0
|
||||
DASHBOARD_MODE = args.mode
|
||||
SOURCE_DIR = os.path.realpath(args.source_dir)
|
||||
BINARY_DIR = os.path.realpath(args.binary_dir)
|
||||
MEMCHECK = 1 if args.memcheck is not None else 0
|
||||
SUBMIT = 0 if args.disable_cdash else 1
|
||||
ARGN = "${ARGN}"
|
||||
|
||||
if args.memcheck == "ThreadSanitizer":
|
||||
MEMCHECK = 0
|
||||
|
||||
_script = f"""
|
||||
macro(dashboard_submit)
|
||||
if("{SUBMIT}" GREATER 0)
|
||||
ctest_submit({ARGN})
|
||||
endif()
|
||||
endmacro()
|
||||
"""
|
||||
|
||||
_script += """
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/CTestCustom.cmake")
|
||||
|
||||
macro(handle_error _message _ret)
|
||||
if(NOT ${${_ret}} EQUAL 0)
|
||||
dashboard_submit(PARTS Done RETURN_VALUE _submit_ret)
|
||||
message(FATAL_ERROR "${_message} failed: ${${_ret}}")
|
||||
endif()
|
||||
endmacro()
|
||||
"""
|
||||
|
||||
_script += f"""
|
||||
ctest_start({DASHBOARD_MODE})
|
||||
ctest_update(SOURCE "{SOURCE_DIR}" RETURN_VALUE _update_ret
|
||||
CAPTURE_CMAKE_ERROR _update_err)
|
||||
ctest_configure(BUILD "{BINARY_DIR}" RETURN_VALUE _configure_ret)
|
||||
dashboard_submit(PARTS Start Update Configure RETURN_VALUE _submit_ret)
|
||||
|
||||
if(NOT _update_err EQUAL 0)
|
||||
message(WARNING "ctest_update failed")
|
||||
endif()
|
||||
|
||||
handle_error("Configure" _configure_ret)
|
||||
|
||||
ctest_build(BUILD "{BINARY_DIR}" RETURN_VALUE _build_ret)
|
||||
dashboard_submit(PARTS Build RETURN_VALUE _submit_ret)
|
||||
|
||||
handle_error("Build" _build_ret)
|
||||
|
||||
if("{MEMCHECK}" GREATER 0)
|
||||
ctest_memcheck(BUILD "{BINARY_DIR}" RETURN_VALUE _test_ret)
|
||||
dashboard_submit(PARTS Test RETURN_VALUE _submit_ret)
|
||||
else()
|
||||
ctest_test(BUILD "{BINARY_DIR}" RETURN_VALUE _test_ret)
|
||||
dashboard_submit(PARTS Test RETURN_VALUE _submit_ret)
|
||||
endif()
|
||||
|
||||
if("{CODECOV}" GREATER 0)
|
||||
ctest_coverage(
|
||||
BUILD "{BINARY_DIR}"
|
||||
RETURN_VALUE _coverage_ret
|
||||
CAPTURE_CMAKE_ERROR _coverage_err)
|
||||
dashboard_submit(PARTS Coverage RETURN_VALUE _submit_ret)
|
||||
endif()
|
||||
|
||||
handle_error("Testing" _test_ret)
|
||||
|
||||
dashboard_submit(PARTS Done RETURN_VALUE _submit_ret)
|
||||
"""
|
||||
return _script
|
||||
|
||||
|
||||
def parse_cdash_args(args):
|
||||
BUILD_JOBS = multiprocessing.cpu_count()
|
||||
DASHBOARD_MODE = "Continuous"
|
||||
DASHBOARD_STAGES = [
|
||||
"Start",
|
||||
"Update",
|
||||
"Configure",
|
||||
"Build",
|
||||
"Test",
|
||||
"MemCheck",
|
||||
"Coverage",
|
||||
"Submit",
|
||||
]
|
||||
SOURCE_DIR = os.getcwd()
|
||||
BINARY_DIR = os.path.join(SOURCE_DIR, "build")
|
||||
SITE = socket.gethostname()
|
||||
SUBMIT_URL = f"{_BASE_URL}/submit.php?project={_PROJECT_NAME}"
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
parser.add_argument(
|
||||
"-n", "--name", help="Job name", default=None, type=str, required=True
|
||||
)
|
||||
parser.add_argument("-s", "--site", help="Site name", default=SITE, type=str)
|
||||
parser.add_argument(
|
||||
"-q", "--quiet", help="Disable printing logs", action="store_true"
|
||||
)
|
||||
parser.add_argument(
|
||||
"-c", "--coverage", help="Enable code coverage", action="store_true"
|
||||
)
|
||||
parser.add_argument(
|
||||
"-j",
|
||||
"--build-jobs",
|
||||
help="Number of build tasks",
|
||||
default=BUILD_JOBS,
|
||||
type=int,
|
||||
)
|
||||
parser.add_argument(
|
||||
"-B",
|
||||
"--binary-dir",
|
||||
help="Build directory",
|
||||
default=BINARY_DIR,
|
||||
type=str,
|
||||
)
|
||||
parser.add_argument(
|
||||
"-S",
|
||||
"--source-dir",
|
||||
help="Source directory",
|
||||
default=SOURCE_DIR,
|
||||
type=str,
|
||||
)
|
||||
parser.add_argument(
|
||||
"-F",
|
||||
"--clean",
|
||||
help="Remove existing build directory",
|
||||
action="store_true",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-M",
|
||||
"--mode",
|
||||
help="Dashboard mode",
|
||||
default=DASHBOARD_MODE,
|
||||
choices=("Continuous", "Nightly", "Experimental"),
|
||||
type=str,
|
||||
)
|
||||
parser.add_argument(
|
||||
"-T",
|
||||
"--stages",
|
||||
help="Dashboard stages",
|
||||
nargs="+",
|
||||
default=DASHBOARD_STAGES,
|
||||
choices=DASHBOARD_STAGES,
|
||||
type=str,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--submit-url",
|
||||
help="CDash submission site",
|
||||
default=SUBMIT_URL,
|
||||
type=str,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--repeat-until-pass",
|
||||
help="<N> for --repeat until-pass:<N>",
|
||||
default=None,
|
||||
type=int,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--repeat-until-fail",
|
||||
help="<N> for --repeat until-fail:<N>",
|
||||
default=None,
|
||||
type=int,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--repeat-after-timeout",
|
||||
help="<N> for --repeat after-timeout:<N>",
|
||||
default=None,
|
||||
type=int,
|
||||
)
|
||||
parser.add_argument(
|
||||
"--disable-cdash",
|
||||
help="Disable submitting results to CDash dashboard",
|
||||
action="store_true",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--gpu-targets",
|
||||
help="GPU build architectures",
|
||||
default="gfx900 gfx906 gfx908 gfx90a gfx1030 gfx1100".split(),
|
||||
type=str,
|
||||
nargs="+",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--memcheck",
|
||||
help="Run dynamic analysis tool",
|
||||
default=None,
|
||||
type=str,
|
||||
choices=(
|
||||
"ThreadSanitizer",
|
||||
"AddressSanitizer",
|
||||
"LeakSanitizer",
|
||||
"MemorySanitizer",
|
||||
"UndefinedBehaviorSanitizer",
|
||||
),
|
||||
)
|
||||
parser.add_argument(
|
||||
"--linter",
|
||||
help="Enable linting tool",
|
||||
default=None,
|
||||
type=str,
|
||||
choices=("clang-tidy",),
|
||||
)
|
||||
|
||||
return parser.parse_args(args)
|
||||
|
||||
|
||||
def parse_args(args=None):
|
||||
if args is None:
|
||||
args = sys.argv[1:]
|
||||
|
||||
index = 0
|
||||
input_args = []
|
||||
ctest_args = []
|
||||
cmake_args = []
|
||||
data = [input_args, cmake_args, ctest_args]
|
||||
cmd = os.path.basename(sys.argv[0])
|
||||
|
||||
for itr in args:
|
||||
if itr == "--":
|
||||
index += 1
|
||||
if index > 2:
|
||||
raise RuntimeError(
|
||||
f"Usage: {cmd} <options> -- <cmake-args> -- <ctest-args>"
|
||||
)
|
||||
else:
|
||||
data[index].append(itr)
|
||||
|
||||
cdash_args = parse_cdash_args(input_args)
|
||||
|
||||
if cdash_args.coverage:
|
||||
cmake_args += ["-DROCPROFILER_BUILD_CODECOV=ON"]
|
||||
|
||||
if cdash_args.linter == "clang-tidy":
|
||||
cmake_args += ["-DROCPROFILER_ENABLE_CLANG_TIDY=ON"]
|
||||
|
||||
def get_repeat_val(_param):
|
||||
_value = getattr(cdash_args, f"repeat_{_param}".replace("-", "_"))
|
||||
return [f"{_param}:{_value}"] if _value is not None and _value > 1 else []
|
||||
|
||||
repeat_args = (
|
||||
get_repeat_val("until-pass")
|
||||
+ get_repeat_val("until-fail")
|
||||
+ get_repeat_val("after-timeout")
|
||||
)
|
||||
ctest_args += ["--repeat"] + repeat_args if len(repeat_args) > 0 else []
|
||||
|
||||
return [cdash_args, cmake_args, ctest_args]
|
||||
|
||||
|
||||
def run(*args, **kwargs):
|
||||
import subprocess
|
||||
|
||||
return subprocess.run(*args, **kwargs)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
args, cmake_args, ctest_args = parse_args()
|
||||
|
||||
if args.clean and os.path.exists(args.binary_dir):
|
||||
if args.source_dir == args.binary_dir:
|
||||
raise RuntimeError(
|
||||
f"cannot clean binary directory == source directory ({args.source_dir})"
|
||||
)
|
||||
|
||||
shutil.rmtree(args.binary_dir)
|
||||
|
||||
if not os.path.exists(args.binary_dir):
|
||||
os.makedirs(args.binary_dir)
|
||||
|
||||
from textwrap import dedent
|
||||
|
||||
_config = dedent(generate_custom(args, cmake_args, ctest_args))
|
||||
_script = dedent(generate_dashboard_script(args))
|
||||
|
||||
if not args.quiet:
|
||||
sys.stderr.write(f"##### CTestCustom.cmake #####\n\n{_config}\n\n")
|
||||
sys.stderr.write(f"##### dashboard.cmake #####\n\n{_script}\n\n")
|
||||
|
||||
with open(os.path.join(args.binary_dir, "CTestCustom.cmake"), "w") as f:
|
||||
f.write(f"{_config}\n")
|
||||
|
||||
with open(os.path.join(args.binary_dir, "dashboard.cmake"), "w") as f:
|
||||
f.write(f"{_script}\n")
|
||||
|
||||
CTEST_CMD = which("ctest", require=True)
|
||||
|
||||
dashboard_args = ["-D"]
|
||||
for itr in args.stages:
|
||||
dashboard_args.append(f"{args.mode}{itr}")
|
||||
|
||||
try:
|
||||
if not args.quiet and len(ctest_args) == 0:
|
||||
ctest_args = ["--output-on-failure", "-V"]
|
||||
|
||||
run(
|
||||
[CTEST_CMD]
|
||||
+ dashboard_args
|
||||
+ [
|
||||
"-S",
|
||||
os.path.join(args.binary_dir, "dashboard.cmake"),
|
||||
]
|
||||
+ ctest_args,
|
||||
check=True,
|
||||
)
|
||||
finally:
|
||||
if "-VV" not in ctest_args and not args.quiet:
|
||||
for file in glob.glob(
|
||||
os.path.join(args.binary_dir, "Testing/Temporary/**"),
|
||||
recursive=True,
|
||||
):
|
||||
if not os.path.isfile(file):
|
||||
continue
|
||||
if (
|
||||
re.match(
|
||||
r"Last(Start|Update|Configure|Build|Test).*\.log$",
|
||||
os.path.basename(file),
|
||||
)
|
||||
is None
|
||||
):
|
||||
continue
|
||||
|
||||
print(f"\n\n\n###### Reading {file}... ######\n\n\n")
|
||||
with open(file, "r") as inpf:
|
||||
fdata = inpf.read()
|
||||
if "LastTest" not in file and "Coverage" not in file:
|
||||
print(fdata)
|
||||
oname = os.path.basename(file)
|
||||
if oname.endswith(".log"):
|
||||
oname += ".log"
|
||||
with open(os.path.join(args.binary_dir, oname), "w") as outf:
|
||||
print(f"\n\n###### Writing {oname}... ######\n\n")
|
||||
outf.write(fdata)
|
||||
@@ -0,0 +1,9 @@
|
||||
#
|
||||
# ThreadSanitizer suppressions file for rocprofiler project.
|
||||
#
|
||||
|
||||
# leaked thread
|
||||
thread:libhsa-runtime64.so
|
||||
|
||||
# unlock of an unlocked mutex (or by a wrong thread)
|
||||
mutex:librocm_smi64.so
|
||||
@@ -20,5 +20,9 @@
|
||||
# THE SOFTWARE.
|
||||
################################################################################
|
||||
|
||||
if(ROCPROFILER_BUILD_CODECOV)
|
||||
set(CMAKE_BUILD_TYPE "Coverage")
|
||||
endif()
|
||||
|
||||
add_subdirectory(api)
|
||||
add_subdirectory(tools)
|
||||
|
||||
@@ -242,8 +242,9 @@ target_include_directories(
|
||||
${ROCPROFILER_TARGET}
|
||||
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/rocprofiler>
|
||||
PRIVATE ${LIB_DIR} ${ROOT_DIR} ${PROJECT_SOURCE_DIR}/include/rocprofiler)
|
||||
target_link_libraries(${ROCPROFILER_TARGET} PRIVATE ${AQLPROFILE_LIB}
|
||||
hsa-runtime64::hsa-runtime64 c stdc++)
|
||||
target_link_libraries(
|
||||
${ROCPROFILER_TARGET} PRIVATE ${AQLPROFILE_LIB} hsa-runtime64::hsa-runtime64 c stdc++
|
||||
dl rocprofiler::build-flags rocprofiler::memcheck)
|
||||
|
||||
get_target_property(ROCPROFILER_LIBRARY_V1_NAME ${ROCPROFILER_TARGET} NAME)
|
||||
get_target_property(ROCPROFILER_LIBRARY_V1_VERSION ${ROCPROFILER_TARGET} VERSION)
|
||||
@@ -313,47 +314,26 @@ target_include_directories(
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
||||
PRIVATE ${LIB_DIR} ${ROOT_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_SOURCE_DIR}/tools)
|
||||
if(ASAN)
|
||||
target_compile_options(rocprofiler-v2 PRIVATE -fsanitize=address)
|
||||
target_link_options(
|
||||
rocprofiler-v2 PRIVATE -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exportmap
|
||||
-Wl,--no-undefined,-fsanitize=address)
|
||||
target_link_libraries(
|
||||
rocprofiler-v2
|
||||
PRIVATE ${AQLPROFILE_LIB}
|
||||
hsa-runtime64::hsa-runtime64
|
||||
Threads::Threads
|
||||
atomic
|
||||
numa
|
||||
asan
|
||||
dl
|
||||
c
|
||||
stdc++
|
||||
stdc++fs
|
||||
amd_comgr
|
||||
dw
|
||||
elf
|
||||
${PCIACCESS_LIBRARIES})
|
||||
else()
|
||||
target_link_options(
|
||||
rocprofiler-v2 PRIVATE -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exportmap
|
||||
-Wl,--no-undefined)
|
||||
target_link_libraries(
|
||||
rocprofiler-v2
|
||||
PRIVATE ${AQLPROFILE_LIB}
|
||||
hsa-runtime64::hsa-runtime64
|
||||
Threads::Threads
|
||||
atomic
|
||||
numa
|
||||
dl
|
||||
c
|
||||
stdc++
|
||||
stdc++fs
|
||||
amd_comgr
|
||||
dw
|
||||
elf
|
||||
${PCIACCESS_LIBRARIES})
|
||||
endif()
|
||||
target_link_libraries(rocprofiler-v2 PRIVATE rocprofiler::build-flags)
|
||||
target_link_options(
|
||||
rocprofiler-v2 PRIVATE -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exportmap
|
||||
-Wl,--no-undefined)
|
||||
target_link_libraries(
|
||||
rocprofiler-v2
|
||||
PRIVATE ${AQLPROFILE_LIB}
|
||||
hsa-runtime64::hsa-runtime64
|
||||
Threads::Threads
|
||||
atomic
|
||||
numa
|
||||
dl
|
||||
c
|
||||
stdc++
|
||||
stdc++fs
|
||||
amd_comgr
|
||||
dw
|
||||
elf
|
||||
${PCIACCESS_LIBRARIES}
|
||||
rocprofiler::memcheck)
|
||||
|
||||
get_target_property(ROCPROFILER_LIBRARY_V2_NAME rocprofiler-v2 OUTPUT_NAME)
|
||||
get_target_property(ROCPROFILER_LIBRARY_V2_VERSION rocprofiler-v2 VERSION)
|
||||
@@ -372,7 +352,12 @@ add_custom_command(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E create_symlink
|
||||
lib${ROCPROFILER_LIBRARY_V2_NAME}.so.${ROCPROFILER_LIBRARY_V2_SOVERSION}
|
||||
${CMAKE_BINARY_DIR}/lib/lib${ROCPROFILER_LIBRARY_V2_NAME}v2.so)
|
||||
${CMAKE_BINARY_DIR}/lib/lib${ROCPROFILER_LIBRARY_V2_NAME}v2.so
|
||||
# Temporarily up till Jenkins side is fixed
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E create_symlink
|
||||
lib/lib${ROCPROFILER_LIBRARY_V1_NAME}.so
|
||||
${CMAKE_BINARY_DIR}/lib${ROCPROFILER_LIBRARY_V1_NAME}.so)
|
||||
# Add custom target to trigger the create_symlink command
|
||||
add_custom_target(create_rocprofiler_lib DEPENDS rocprofiler-v2 ${ROCPROFILER_TARGET})
|
||||
|
||||
|
||||
@@ -6,228 +6,334 @@ import xml.etree.ElementTree as ET
|
||||
from lxml import etree
|
||||
import sys
|
||||
|
||||
CPP_OUT='basic_counter.cpp'
|
||||
CPP_OUT = "basic_counter.cpp"
|
||||
|
||||
if (__name__ == "__main__"):
|
||||
cpp_content = ''
|
||||
cpp_content += '/* Copyright (c) 2022 Advanced Micro Devices, Inc.\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += ' Permission is hereby granted, free of charge, to any person obtaining a copy\n'
|
||||
cpp_content += ' of this software and associated documentation files (the \"Software\"), to deal\n'
|
||||
cpp_content += ' in the Software without restriction, including without limitation the rights\n'
|
||||
cpp_content += ' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n'
|
||||
cpp_content += ' copies of the Software, and to permit persons to whom the Software is\n'
|
||||
cpp_content += ' furnished to do so, subject to the following conditions:\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += ' The above copyright notice and this permission notice shall be included in\n'
|
||||
cpp_content += ' all copies or substantial portions of the Software.\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += ' THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n'
|
||||
cpp_content += ' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n'
|
||||
cpp_content += ' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n'
|
||||
cpp_content += ' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n'
|
||||
cpp_content += ' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n'
|
||||
cpp_content += ' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n'
|
||||
cpp_content += ' THE SOFTWARE. */\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += '#include <cassert>\n'
|
||||
cpp_content += '#include "src/utils/helper.h"\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += '#include \"src/core/counters/basic/basic_counter.h\"\n'
|
||||
cpp_content += '#include \"src/core/hardware/hsa_info.h\"\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += '#define ASSERTM(exp, msg) assert(((void)msg, exp))\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += '#pragma GCC diagnostic push\n'
|
||||
cpp_content += '#pragma GCC diagnostic ignored \"-Wmaybe-uninitialized\"\n'
|
||||
cpp_content += 'namespace Counter {\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'BasicCounter::BasicCounter(uint64_t event_id, std::string block_id,\n'
|
||||
cpp_content += ' std::string name, std::string description,\n'
|
||||
cpp_content += ' std::string gpu_name)\n'
|
||||
cpp_content += ' : Counter(name, description, gpu_name),\n'
|
||||
cpp_content += ' event_id_(event_id),\n'
|
||||
cpp_content += ' block_id_(block_id) {\n'
|
||||
cpp_content += ' AddCounterToCounterMap();\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'BasicCounter::~BasicCounter() {}\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'uint64_t BasicCounter::GetBasicCounterID() {\n'
|
||||
cpp_content += ' return GetCounterID();\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'uint64_t BasicCounter::GetEventId() { return event_id_; }\n'
|
||||
cpp_content += 'std::string BasicCounter::GetBlockId() { return block_id_; }\n'
|
||||
cpp_content += 'std::string BasicCounter::GetName() { return Counter::GetName(); }\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'bool BasicCounter::GetValue(uint64_t* value, int64_t instance_id = -1) {\n'
|
||||
cpp_content += ' Agent::CounterHardwareInfo* agent_info =\n'
|
||||
cpp_content += ' reinterpret_cast<Agent::CounterHardwareInfo*>(counter_hw_info);\n'
|
||||
cpp_content += ' if ((agent_info->getNumInstances() > 1 && instance_id == -1) ||\n'
|
||||
cpp_content += ' instance_id < -1 || instance_id >= agent_info->getNumInstances())\n'
|
||||
cpp_content += ' return false;\n'
|
||||
cpp_content += ' if (instance_id == -1) *value = instances_values_[0];\n'
|
||||
cpp_content += ' *value = instances_values_[instance_id];\n'
|
||||
cpp_content += ' return true;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'uint64_t BasicCounter::GetValue(int64_t instance_id) {\n'
|
||||
cpp_content += ' Agent::CounterHardwareInfo* agent_info =\n'
|
||||
cpp_content += ' reinterpret_cast<Agent::CounterHardwareInfo*>(counter_hw_info);\n'
|
||||
cpp_content += ' if ((agent_info->getNumInstances() > 1 && instance_id == -1) ||\n'
|
||||
cpp_content += ' instance_id < -1 || instance_id >= agent_info->getNumInstances())\n'
|
||||
cpp_content += ' throw(std::string(\"Error: Wrong number of instances (\") +\n'
|
||||
cpp_content += ' std::to_string(agent_info->getNumInstances()) +\n'
|
||||
cpp_content += ' \") OR Instance ID is less than 0 \");\n'
|
||||
cpp_content += ' if (instance_id == -1) return instances_values_[0];\n'
|
||||
cpp_content += ' return instances_values_[instance_id];\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'uint64_t BasicCounter::avr(int64_t instances_count) {\n'
|
||||
cpp_content += ' Agent::CounterHardwareInfo* agent_info =\n'
|
||||
cpp_content += ' reinterpret_cast<Agent::CounterHardwareInfo*>(counter_hw_info);\n'
|
||||
cpp_content += ' if (agent_info->getNumInstances() > instances_count)\n'
|
||||
cpp_content += ' throw(std::string(\"Error: Number of instances (\") +\n'
|
||||
cpp_content += ' std::to_string(agent_info->getNumInstances()) +\n'
|
||||
cpp_content += ' \") is greater than the given instance count(\" +\n'
|
||||
cpp_content += ' std::to_string(instances_count) + \")\");\n'
|
||||
cpp_content += ' uint64_t result = 0;\n'
|
||||
cpp_content += ' int64_t instance_id;\n'
|
||||
cpp_content += ' for (instance_id = 0; instance_id < instances_count; instance_id++) {\n'
|
||||
cpp_content += ' uint64_t value;\n'
|
||||
cpp_content += ' if (GetValue(&value, instance_id)) result += value;\n'
|
||||
cpp_content += ' }\n'
|
||||
cpp_content += ' return result / instances_count;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t BasicCounter::max(int64_t instances_count) {\n'
|
||||
cpp_content += ' uint64_t result = 0;\n'
|
||||
cpp_content += ' int64_t instance_id;\n'
|
||||
cpp_content += ' for (instance_id = 0; instance_id < instances_count; instance_id++) {\n'
|
||||
cpp_content += ' uint64_t value;\n'
|
||||
cpp_content += ' if (GetValue(&value, instance_id) && result < value) result = value;\n'
|
||||
cpp_content += ' }\n'
|
||||
cpp_content += ' return result;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t BasicCounter::min(int64_t instances_count) {\n'
|
||||
cpp_content += ' int64_t instance_id;\n'
|
||||
cpp_content += ' uint64_t result = 0;\n'
|
||||
cpp_content += ' for (instance_id = 0; instance_id < instances_count; instance_id++) {\n'
|
||||
cpp_content += ' uint64_t value;\n'
|
||||
cpp_content += ' if (GetValue(&value, instance_id) && result > value) result = value;\n'
|
||||
cpp_content += ' }\n'
|
||||
cpp_content += ' return result;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t BasicCounter::sum(int64_t instances_count) {\n'
|
||||
cpp_content += ' int64_t instance_id;\n'
|
||||
cpp_content += ' uint64_t result = 0;\n'
|
||||
cpp_content += ' for (instance_id = 0; instance_id < instances_count; instance_id++) {\n'
|
||||
cpp_content += ' uint64_t value;\n'
|
||||
cpp_content += ' if (GetValue(&value, instance_id)) result += value;\n'
|
||||
cpp_content += ' }\n'
|
||||
cpp_content += ' return result;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'uint64_t operator+(BasicCounter counter, const uint64_t number) {\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter.GetValue(&value), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' return number + value;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t operator-(BasicCounter counter, const uint64_t number) {\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter.GetValue(&value), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' return number - value;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t operator*(BasicCounter counter, const uint64_t number) {\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter.GetValue(&value), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' return number * value;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t operator/(BasicCounter counter, const uint64_t number) {\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter.GetValue(&value), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' return number / value;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t operator^(BasicCounter counter, const uint64_t number) {\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter.GetValue(&value), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' return number ^ value;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'uint64_t operator+(BasicCounter counter1, BasicCounter counter2) {\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value1 = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter1.GetValue(&value1), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value2 = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter2.GetValue(&value2), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' return value1 + value2;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t operator-(BasicCounter counter1, BasicCounter counter2) {\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value1 = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter1.GetValue(&value1), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value2 = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter2.GetValue(&value2), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' return value1 - value2;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t operator*(BasicCounter counter1, BasicCounter counter2) {\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value1 = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter1.GetValue(&value1), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value2 = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter2.GetValue(&value2), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' return value1 * value2;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t operator/(BasicCounter counter1, BasicCounter counter2) {\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value1 = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter1.GetValue( & value1), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value2 = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter2.GetValue( & value2), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' return value1 / value2;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += 'uint64_t operator^(BasicCounter counter1, BasicCounter counter2) {\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value1 = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter1.GetValue(&value1), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' [[maybe_unused]] uint64_t value2 = 0;\n'
|
||||
cpp_content += ' ASSERTM(counter2.GetValue(&value2), \"Error: Counter has no value!\");\n'
|
||||
cpp_content += ' return value1 ^ value2;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'static std::map<uint64_t, BasicCounter> basic_counters;\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'BasicCounter* GetGeneratedBasicCounter(uint64_t id) {\n'
|
||||
cpp_content += ' return &basic_counters.at(id);\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += 'void ClearBasicCounters() {\n'
|
||||
cpp_content += ' basic_counters.clear();\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += '/**\n'
|
||||
cpp_content += ' * @brief Basic Counters\n'
|
||||
cpp_content += ' *\n'
|
||||
cpp_content += ' * @{\n'
|
||||
cpp_content += ' */\n'
|
||||
cpp_content += 'uint64_t GetBasicCounter(const char* name, const char* gpu_name) {\n'
|
||||
cpp_content += ' std::string gpu;\n'
|
||||
parser=etree.XMLParser(recover=True, encoding='utf-8')
|
||||
xml_file=ET.parse(sys.argv[1] + '/gfx_metrics.xml', parser=parser)
|
||||
root=xml_file.getroot()
|
||||
for gpu in root:
|
||||
cpp_content += "\n\t/**\n\t * @brief Basic " + gpu.tag + " counters\n\t *\n\t * @{\n\t */\n"
|
||||
cpp_content += "\tgpu = \"" + gpu.tag + "\";\n\n"
|
||||
cpp_content += "\tif (strncmp(gpu_name, gpu.c_str(), gpu.length())==0) {\n"
|
||||
for child in gpu:
|
||||
cpp_content += "\t/**\n\t * Basic Counter: " + child.attrib['name'] + "\n\t *\n\t * " + child.attrib['descr'] + "\n\t */\n\tif (strcmp(name, \"" + child.attrib['name'] + "\")==0) {\n\t\tbasic_counters.emplace(" + child.attrib['event'] + ", BasicCounter{" + child.attrib['event'] + ", \"" + child.attrib['block'] + "\", \"" + child.attrib['name'] + "\", \"" + child.attrib['descr'] + "\", \"" + gpu.tag + "\"});\n\t\treturn " + child.attrib['event'] + ";\n\t}\n"
|
||||
cpp_content += "\t}\n\n\t/**\n\t * @}\n\t */\n"
|
||||
cpp_content += ' throw(\"Couldn\'t find the required Counter name for the mentioned GPU!\");\n'
|
||||
cpp_content += ' return 0;\n'
|
||||
cpp_content += '}\n'
|
||||
cpp_content += '/**\n'
|
||||
cpp_content += ' * @}\n'
|
||||
cpp_content += ' */\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += '} // namespace Counter\n'
|
||||
cpp_content += '\n'
|
||||
cpp_content += '#pragma GCC diagnostic pop\n'
|
||||
print ('Generating "' + sys.argv[2] + '"')
|
||||
f = open(sys.argv[2], 'w')
|
||||
f.write(cpp_content[:-1])
|
||||
f.close()
|
||||
if __name__ == "__main__":
|
||||
cpp_content = ""
|
||||
cpp_content += "/* Copyright (c) 2022 Advanced Micro Devices, Inc.\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += (
|
||||
" Permission is hereby granted, free of charge, to any person obtaining a copy\n"
|
||||
)
|
||||
cpp_content += (
|
||||
' of this software and associated documentation files (the "Software"), to deal\n'
|
||||
)
|
||||
cpp_content += (
|
||||
" in the Software without restriction, including without limitation the rights\n"
|
||||
)
|
||||
cpp_content += (
|
||||
" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n"
|
||||
)
|
||||
cpp_content += (
|
||||
" copies of the Software, and to permit persons to whom the Software is\n"
|
||||
)
|
||||
cpp_content += " furnished to do so, subject to the following conditions:\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += (
|
||||
" The above copyright notice and this permission notice shall be included in\n"
|
||||
)
|
||||
cpp_content += " all copies or substantial portions of the Software.\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += (
|
||||
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n'
|
||||
)
|
||||
cpp_content += (
|
||||
" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n"
|
||||
)
|
||||
cpp_content += (
|
||||
" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n"
|
||||
)
|
||||
cpp_content += (
|
||||
" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n"
|
||||
)
|
||||
cpp_content += (
|
||||
" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n"
|
||||
)
|
||||
cpp_content += (
|
||||
" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n"
|
||||
)
|
||||
cpp_content += " THE SOFTWARE. */\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "#include <cassert>\n"
|
||||
cpp_content += '#include "src/utils/helper.h"\n'
|
||||
cpp_content += "\n"
|
||||
cpp_content += '#include "src/core/counters/basic/basic_counter.h"\n'
|
||||
cpp_content += '#include "src/core/hardware/hsa_info.h"\n'
|
||||
cpp_content += "\n"
|
||||
cpp_content += "#define ASSERTM(exp, msg) assert(((void)msg, exp))\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "#pragma GCC diagnostic push\n"
|
||||
cpp_content += '#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"\n'
|
||||
cpp_content += "namespace Counter {\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "BasicCounter::BasicCounter(uint64_t event_id, std::string block_id,\n"
|
||||
cpp_content += (
|
||||
" std::string name, std::string description,\n"
|
||||
)
|
||||
cpp_content += " std::string gpu_name)\n"
|
||||
cpp_content += " : Counter(name, description, gpu_name),\n"
|
||||
cpp_content += " event_id_(event_id),\n"
|
||||
cpp_content += " block_id_(block_id) {\n"
|
||||
cpp_content += " AddCounterToCounterMap();\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "BasicCounter::~BasicCounter() {}\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "uint64_t BasicCounter::GetBasicCounterID() {\n"
|
||||
cpp_content += " return GetCounterID();\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "uint64_t BasicCounter::GetEventId() { return event_id_; }\n"
|
||||
cpp_content += "std::string BasicCounter::GetBlockId() { return block_id_; }\n"
|
||||
cpp_content += "std::string BasicCounter::GetName() { return Counter::GetName(); }\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += (
|
||||
"bool BasicCounter::GetValue(uint64_t* value, int64_t instance_id = -1) {\n"
|
||||
)
|
||||
cpp_content += " Agent::CounterHardwareInfo* agent_info =\n"
|
||||
cpp_content += (
|
||||
" reinterpret_cast<Agent::CounterHardwareInfo*>(counter_hw_info);\n"
|
||||
)
|
||||
cpp_content += " if ((agent_info->getNumInstances() > 1 && instance_id == -1) ||\n"
|
||||
cpp_content += (
|
||||
" instance_id < -1 || instance_id >= agent_info->getNumInstances())\n"
|
||||
)
|
||||
cpp_content += " return false;\n"
|
||||
cpp_content += " if (instance_id == -1) *value = instances_values_[0];\n"
|
||||
cpp_content += " *value = instances_values_[instance_id];\n"
|
||||
cpp_content += " return true;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "uint64_t BasicCounter::GetValue(int64_t instance_id) {\n"
|
||||
cpp_content += " Agent::CounterHardwareInfo* agent_info =\n"
|
||||
cpp_content += (
|
||||
" reinterpret_cast<Agent::CounterHardwareInfo*>(counter_hw_info);\n"
|
||||
)
|
||||
cpp_content += " if ((agent_info->getNumInstances() > 1 && instance_id == -1) ||\n"
|
||||
cpp_content += (
|
||||
" instance_id < -1 || instance_id >= agent_info->getNumInstances())\n"
|
||||
)
|
||||
cpp_content += ' throw(std::string("Error: Wrong number of instances (") +\n'
|
||||
cpp_content += " std::to_string(agent_info->getNumInstances()) +\n"
|
||||
cpp_content += ' ") OR Instance ID is less than 0 ");\n'
|
||||
cpp_content += " if (instance_id == -1) return instances_values_[0];\n"
|
||||
cpp_content += " return instances_values_[instance_id];\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "uint64_t BasicCounter::avr(int64_t instances_count) {\n"
|
||||
cpp_content += " Agent::CounterHardwareInfo* agent_info =\n"
|
||||
cpp_content += (
|
||||
" reinterpret_cast<Agent::CounterHardwareInfo*>(counter_hw_info);\n"
|
||||
)
|
||||
cpp_content += " if (agent_info->getNumInstances() > instances_count)\n"
|
||||
cpp_content += ' throw(std::string("Error: Number of instances (") +\n'
|
||||
cpp_content += " std::to_string(agent_info->getNumInstances()) +\n"
|
||||
cpp_content += ' ") is greater than the given instance count(" +\n'
|
||||
cpp_content += ' std::to_string(instances_count) + ")");\n'
|
||||
cpp_content += " uint64_t result = 0;\n"
|
||||
cpp_content += " int64_t instance_id;\n"
|
||||
cpp_content += (
|
||||
" for (instance_id = 0; instance_id < instances_count; instance_id++) {\n"
|
||||
)
|
||||
cpp_content += " uint64_t value;\n"
|
||||
cpp_content += " if (GetValue(&value, instance_id)) result += value;\n"
|
||||
cpp_content += " }\n"
|
||||
cpp_content += " return result / instances_count;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t BasicCounter::max(int64_t instances_count) {\n"
|
||||
cpp_content += " uint64_t result = 0;\n"
|
||||
cpp_content += " int64_t instance_id;\n"
|
||||
cpp_content += (
|
||||
" for (instance_id = 0; instance_id < instances_count; instance_id++) {\n"
|
||||
)
|
||||
cpp_content += " uint64_t value;\n"
|
||||
cpp_content += (
|
||||
" if (GetValue(&value, instance_id) && result < value) result = value;\n"
|
||||
)
|
||||
cpp_content += " }\n"
|
||||
cpp_content += " return result;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t BasicCounter::min(int64_t instances_count) {\n"
|
||||
cpp_content += " int64_t instance_id;\n"
|
||||
cpp_content += " uint64_t result = 0;\n"
|
||||
cpp_content += (
|
||||
" for (instance_id = 0; instance_id < instances_count; instance_id++) {\n"
|
||||
)
|
||||
cpp_content += " uint64_t value;\n"
|
||||
cpp_content += (
|
||||
" if (GetValue(&value, instance_id) && result > value) result = value;\n"
|
||||
)
|
||||
cpp_content += " }\n"
|
||||
cpp_content += " return result;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t BasicCounter::sum(int64_t instances_count) {\n"
|
||||
cpp_content += " int64_t instance_id;\n"
|
||||
cpp_content += " uint64_t result = 0;\n"
|
||||
cpp_content += (
|
||||
" for (instance_id = 0; instance_id < instances_count; instance_id++) {\n"
|
||||
)
|
||||
cpp_content += " uint64_t value;\n"
|
||||
cpp_content += " if (GetValue(&value, instance_id)) result += value;\n"
|
||||
cpp_content += " }\n"
|
||||
cpp_content += " return result;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "uint64_t operator+(BasicCounter counter, const uint64_t number) {\n"
|
||||
cpp_content += " [[maybe_unused]] uint64_t value = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter.GetValue(&value), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " return number + value;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t operator-(BasicCounter counter, const uint64_t number) {\n"
|
||||
cpp_content += " [[maybe_unused]] uint64_t value = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter.GetValue(&value), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " return number - value;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t operator*(BasicCounter counter, const uint64_t number) {\n"
|
||||
cpp_content += " [[maybe_unused]] uint64_t value = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter.GetValue(&value), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " return number * value;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t operator/(BasicCounter counter, const uint64_t number) {\n"
|
||||
cpp_content += " [[maybe_unused]] uint64_t value = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter.GetValue(&value), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " return number / value;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t operator^(BasicCounter counter, const uint64_t number) {\n"
|
||||
cpp_content += " [[maybe_unused]] uint64_t value = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter.GetValue(&value), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " return number ^ value;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "uint64_t operator+(BasicCounter counter1, BasicCounter counter2) {\n"
|
||||
cpp_content += " [[maybe_unused]] uint64_t value1 = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter1.GetValue(&value1), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " [[maybe_unused]] uint64_t value2 = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter2.GetValue(&value2), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " return value1 + value2;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t operator-(BasicCounter counter1, BasicCounter counter2) {\n"
|
||||
cpp_content += " [[maybe_unused]] uint64_t value1 = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter1.GetValue(&value1), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " [[maybe_unused]] uint64_t value2 = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter2.GetValue(&value2), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " return value1 - value2;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t operator*(BasicCounter counter1, BasicCounter counter2) {\n"
|
||||
cpp_content += " [[maybe_unused]] uint64_t value1 = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter1.GetValue(&value1), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " [[maybe_unused]] uint64_t value2 = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter2.GetValue(&value2), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " return value1 * value2;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t operator/(BasicCounter counter1, BasicCounter counter2) {\n"
|
||||
cpp_content += " [[maybe_unused]] uint64_t value1 = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter1.GetValue( & value1), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " [[maybe_unused]] uint64_t value2 = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter2.GetValue( & value2), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " return value1 / value2;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "uint64_t operator^(BasicCounter counter1, BasicCounter counter2) {\n"
|
||||
cpp_content += " [[maybe_unused]] uint64_t value1 = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter1.GetValue(&value1), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " [[maybe_unused]] uint64_t value2 = 0;\n"
|
||||
cpp_content += (
|
||||
' ASSERTM(counter2.GetValue(&value2), "Error: Counter has no value!");\n'
|
||||
)
|
||||
cpp_content += " return value1 ^ value2;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "static std::map<uint64_t, BasicCounter> basic_counters;\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "BasicCounter* GetGeneratedBasicCounter(uint64_t id) {\n"
|
||||
cpp_content += " return &basic_counters.at(id);\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "void ClearBasicCounters() {\n"
|
||||
cpp_content += " basic_counters.clear();\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "/**\n"
|
||||
cpp_content += " * @brief Basic Counters\n"
|
||||
cpp_content += " *\n"
|
||||
cpp_content += " * @{\n"
|
||||
cpp_content += " */\n"
|
||||
cpp_content += "uint64_t GetBasicCounter(const char* name, const char* gpu_name) {\n"
|
||||
cpp_content += " std::string gpu;\n"
|
||||
parser = etree.XMLParser(recover=True, encoding="utf-8")
|
||||
xml_file = ET.parse(sys.argv[1] + "/gfx_metrics.xml", parser=parser)
|
||||
root = xml_file.getroot()
|
||||
for gpu in root:
|
||||
cpp_content += (
|
||||
"\n\t/**\n\t * @brief Basic " + gpu.tag + " counters\n\t *\n\t * @{\n\t */\n"
|
||||
)
|
||||
cpp_content += '\tgpu = "' + gpu.tag + '";\n\n'
|
||||
cpp_content += "\tif (strncmp(gpu_name, gpu.c_str(), gpu.length())==0) {\n"
|
||||
for child in gpu:
|
||||
cpp_content += (
|
||||
"\t/**\n\t * Basic Counter: "
|
||||
+ child.attrib["name"]
|
||||
+ "\n\t *\n\t * "
|
||||
+ child.attrib["descr"]
|
||||
+ '\n\t */\n\tif (strcmp(name, "'
|
||||
+ child.attrib["name"]
|
||||
+ '")==0) {\n\t\tbasic_counters.emplace('
|
||||
+ child.attrib["event"]
|
||||
+ ", BasicCounter{"
|
||||
+ child.attrib["event"]
|
||||
+ ', "'
|
||||
+ child.attrib["block"]
|
||||
+ '", "'
|
||||
+ child.attrib["name"]
|
||||
+ '", "'
|
||||
+ child.attrib["descr"]
|
||||
+ '", "'
|
||||
+ gpu.tag
|
||||
+ '"});\n\t\treturn '
|
||||
+ child.attrib["event"]
|
||||
+ ";\n\t}\n"
|
||||
)
|
||||
cpp_content += "\t}\n\n\t/**\n\t * @}\n\t */\n"
|
||||
cpp_content += (
|
||||
' throw("Couldn\'t find the required Counter name for the mentioned GPU!");\n'
|
||||
)
|
||||
cpp_content += " return 0;\n"
|
||||
cpp_content += "}\n"
|
||||
cpp_content += "/**\n"
|
||||
cpp_content += " * @}\n"
|
||||
cpp_content += " */\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "} // namespace Counter\n"
|
||||
cpp_content += "\n"
|
||||
cpp_content += "#pragma GCC diagnostic pop\n"
|
||||
print('Generating "' + sys.argv[2] + '"')
|
||||
f = open(sys.argv[2], "w")
|
||||
f.write(cpp_content[:-1])
|
||||
f.close()
|
||||
|
||||
@@ -7,82 +7,125 @@ from lxml import etree
|
||||
import ast
|
||||
import sys
|
||||
|
||||
ops = {'Div': '/', 'Mult': '*', 'Add': '+', 'Sub': '-'}
|
||||
calls = {'avr', 'max', 'min', 'sum'}
|
||||
ops = {"Div": "/", "Mult": "*", "Add": "+", "Sub": "-"}
|
||||
calls = {"avr", "max", "min", "sum"}
|
||||
|
||||
|
||||
def parse_expr(gpu_tag, data):
|
||||
global exprs_counters
|
||||
global exprs_counters_init
|
||||
global expr_print
|
||||
global counter_count
|
||||
global counters_dictionary
|
||||
expr_queue = deque()
|
||||
for line in data.split('\n'):
|
||||
if 'Constant' in line:
|
||||
number = line.split('(')[1].split(')')[0]
|
||||
expr_queue.append('(uint64_t)' + number)
|
||||
if 'Name' in line:
|
||||
name = line.split('\'')[1]
|
||||
if name in calls:
|
||||
expr_queue.append(name)
|
||||
else:
|
||||
if not name in exprs_counters:
|
||||
exprs_counters += "getGeneratedBasicCounter(" + name + "_id), "
|
||||
exprs_counters_init += "\n\t\tuint64_t " + name + "_id = getBasicCounter(\"" + name + "\", \"" + gpu_tag + "\");"
|
||||
counters_dictionary[name] = counter_count
|
||||
counter_count+=1
|
||||
expr_queue.append("counter.getBasicCounterFromDerived(" + str(counters_dictionary[name]) + ")")
|
||||
op = line.split('(')[0]
|
||||
if op in ops:
|
||||
expr_queue.append(ops[op])
|
||||
expr_print += "\n\t\t\t\treturn "
|
||||
i = 0
|
||||
for element in expr_queue:
|
||||
if element in calls:
|
||||
i = 1
|
||||
call = element
|
||||
elif i == 1:
|
||||
expr_print += element + "." + call + "("
|
||||
call = ""
|
||||
i = 2
|
||||
elif i == 2:
|
||||
expr_print += element + ")"
|
||||
i = 0
|
||||
else:
|
||||
expr_print += element
|
||||
if "counter.getBasicCounterFromDerived" == element[0:34]:
|
||||
expr_print += "->getValue()"
|
||||
global exprs_counters
|
||||
global exprs_counters_init
|
||||
global expr_print
|
||||
global counter_count
|
||||
global counters_dictionary
|
||||
expr_queue = deque()
|
||||
for line in data.split("\n"):
|
||||
if "Constant" in line:
|
||||
number = line.split("(")[1].split(")")[0]
|
||||
expr_queue.append("(uint64_t)" + number)
|
||||
if "Name" in line:
|
||||
name = line.split("'")[1]
|
||||
if name in calls:
|
||||
expr_queue.append(name)
|
||||
else:
|
||||
if not name in exprs_counters:
|
||||
exprs_counters += "getGeneratedBasicCounter(" + name + "_id), "
|
||||
exprs_counters_init += (
|
||||
"\n\t\tuint64_t "
|
||||
+ name
|
||||
+ '_id = getBasicCounter("'
|
||||
+ name
|
||||
+ '", "'
|
||||
+ gpu_tag
|
||||
+ '");'
|
||||
)
|
||||
counters_dictionary[name] = counter_count
|
||||
counter_count += 1
|
||||
expr_queue.append(
|
||||
"counter.getBasicCounterFromDerived("
|
||||
+ str(counters_dictionary[name])
|
||||
+ ")"
|
||||
)
|
||||
op = line.split("(")[0]
|
||||
if op in ops:
|
||||
expr_queue.append(ops[op])
|
||||
expr_print += "\n\t\t\t\treturn "
|
||||
i = 0
|
||||
for element in expr_queue:
|
||||
if element in calls:
|
||||
i = 1
|
||||
call = element
|
||||
elif i == 1:
|
||||
expr_print += element + "." + call + "("
|
||||
call = ""
|
||||
i = 2
|
||||
elif i == 2:
|
||||
expr_print += element + ")"
|
||||
i = 0
|
||||
else:
|
||||
expr_print += element
|
||||
if "counter.getBasicCounterFromDerived" == element[0:34]:
|
||||
expr_print += "->getValue()"
|
||||
|
||||
|
||||
if (__name__ == "__main__"):
|
||||
global exprs_counters
|
||||
global exprs_counters_init
|
||||
global expr_print
|
||||
global counter_count
|
||||
parser = etree.XMLParser(recover=True, encoding='utf-8')
|
||||
xml_file = ET.parse(sys.argv[1] + '/metrics.xml', parser=parser)
|
||||
root = xml_file.getroot()
|
||||
print(
|
||||
"uint64_t getDerivedCounter(const char* name, const char* gpu_name) {")
|
||||
for gpu in root:
|
||||
print("\n\t/**\n\t * @brief Derived " + gpu.tag + " counters\n\t *\n\t * @{\n\t */")
|
||||
print("\tif (strcmp(gpu_name, \"" + gpu.tag + "\")==0) {")
|
||||
for child in gpu:
|
||||
exprs_counters = ""
|
||||
exprs_counters_init = ""
|
||||
expr_print = ""
|
||||
counter_count = 0
|
||||
counters_dictionary = {}
|
||||
parse_expr(gpu.tag.split("_")[0], ast.dump(ast.parse(
|
||||
child.attrib['expr'], mode='eval'), annotate_fields=False, include_attributes=False, indent=0))
|
||||
print("\t/**\n\t * Derived Counter: " + child.attrib['name'] + "\n\t *\n\t * " + child.attrib['descr'] + "\n\t */\n\tif (strcmp(name, \"" +
|
||||
child.attrib['name'] + "\")==0) {" + exprs_counters_init + "\n\t\tDerivedCounter counter = DerivedCounter(\"" + child.attrib['name'] +
|
||||
"\", \"" + child.attrib['descr'] + "\", \"" + gpu.tag.split("_")[0] + "\");")
|
||||
exprs_counter_count = 0
|
||||
for expr_counter in exprs_counters[0:-2].split(", "):
|
||||
print("\n\t\tcounter.addBasicCounter(" + str(exprs_counter_count) + ", " + expr_counter + ");")
|
||||
exprs_counter_count += 1
|
||||
# print("\n\t\tcounter.evaluate_metric = [counter]() {" + expr_print + ";\n\t\t\t};")
|
||||
print("\n\t\tderived_counters.emplace(counter.getMetricId(), counter);\n\t\treturn counter.getMetricId();\n\t}")
|
||||
print("\t}\n\n\t/**\n\t * @}\n\t */")
|
||||
print("\n\treturn 0;\n}\n")
|
||||
if __name__ == "__main__":
|
||||
global exprs_counters
|
||||
global exprs_counters_init
|
||||
global expr_print
|
||||
global counter_count
|
||||
parser = etree.XMLParser(recover=True, encoding="utf-8")
|
||||
xml_file = ET.parse(sys.argv[1] + "/metrics.xml", parser=parser)
|
||||
root = xml_file.getroot()
|
||||
print("uint64_t getDerivedCounter(const char* name, const char* gpu_name) {")
|
||||
for gpu in root:
|
||||
print(
|
||||
"\n\t/**\n\t * @brief Derived " + gpu.tag + " counters\n\t *\n\t * @{\n\t */"
|
||||
)
|
||||
print('\tif (strcmp(gpu_name, "' + gpu.tag + '")==0) {')
|
||||
for child in gpu:
|
||||
exprs_counters = ""
|
||||
exprs_counters_init = ""
|
||||
expr_print = ""
|
||||
counter_count = 0
|
||||
counters_dictionary = {}
|
||||
parse_expr(
|
||||
gpu.tag.split("_")[0],
|
||||
ast.dump(
|
||||
ast.parse(child.attrib["expr"], mode="eval"),
|
||||
annotate_fields=False,
|
||||
include_attributes=False,
|
||||
indent=0,
|
||||
),
|
||||
)
|
||||
print(
|
||||
"\t/**\n\t * Derived Counter: "
|
||||
+ child.attrib["name"]
|
||||
+ "\n\t *\n\t * "
|
||||
+ child.attrib["descr"]
|
||||
+ '\n\t */\n\tif (strcmp(name, "'
|
||||
+ child.attrib["name"]
|
||||
+ '")==0) {'
|
||||
+ exprs_counters_init
|
||||
+ '\n\t\tDerivedCounter counter = DerivedCounter("'
|
||||
+ child.attrib["name"]
|
||||
+ '", "'
|
||||
+ child.attrib["descr"]
|
||||
+ '", "'
|
||||
+ gpu.tag.split("_")[0]
|
||||
+ '");'
|
||||
)
|
||||
exprs_counter_count = 0
|
||||
for expr_counter in exprs_counters[0:-2].split(", "):
|
||||
print(
|
||||
"\n\t\tcounter.addBasicCounter("
|
||||
+ str(exprs_counter_count)
|
||||
+ ", "
|
||||
+ expr_counter
|
||||
+ ");"
|
||||
)
|
||||
exprs_counter_count += 1
|
||||
# print("\n\t\tcounter.evaluate_metric = [counter]() {" + expr_print + ";\n\t\t\t};")
|
||||
print(
|
||||
"\n\t\tderived_counters.emplace(counter.getMetricId(), counter);\n\t\treturn counter.getMetricId();\n\t}"
|
||||
)
|
||||
print("\t}\n\n\t/**\n\t * @}\n\t */")
|
||||
print("\n\treturn 0;\n}\n")
|
||||
|
||||
@@ -46,7 +46,7 @@ hsa_status_t pmcCallback(hsa_ven_amd_aqlprofile_info_type_t info_type,
|
||||
if (info_type == HSA_VEN_AMD_AQLPROFILE_INFO_PMC_DATA) {
|
||||
if (IsEventMatch(info_data->pmc_data.event, (*data_it)->event)) {
|
||||
uint32_t xcc_index = floor(passed_data->index / passed_data->single_xcc_buff_size);
|
||||
(*data_it)->xcc_vals[xcc_index] +=
|
||||
(*data_it)->xcc_vals.at(xcc_index) +=
|
||||
info_data->pmc_data.result; // stores event result from each xcc separately
|
||||
(*data_it)->val_double +=
|
||||
info_data->pmc_data.result; // stores accumulated event result from all xccs
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include <unordered_map>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <linux/limits.h>
|
||||
|
||||
#include "core/hardware/hsa_info.h"
|
||||
#include "src/core/session/tracer/src/correlation_id.h"
|
||||
@@ -68,15 +69,16 @@ hsa_status_t hsa_executable_iteration_callback(hsa_executable_t executable, hsa_
|
||||
symbol, HSA_EXECUTABLE_SYMBOL_INFO_NAME_LENGTH, &name_length);
|
||||
// TODO(aelwazir): to be removed if the HSA fixed the issue of corrupted
|
||||
// names overflowing the length given
|
||||
name_length = std::min<size_t>(name_length, PATH_MAX);
|
||||
if (name_length > 1) {
|
||||
if (!(*static_cast<bool*>(args))) {
|
||||
char name[name_length + 1];
|
||||
auto name = std::vector<char>(name_length + 1, '\0');
|
||||
uint64_t kernel_object;
|
||||
hsasupport_singleton.GetCoreApiTable().hsa_executable_symbol_get_info_fn(
|
||||
symbol, HSA_EXECUTABLE_SYMBOL_INFO_NAME, name);
|
||||
symbol, HSA_EXECUTABLE_SYMBOL_INFO_NAME, name.data());
|
||||
hsasupport_singleton.GetCoreApiTable().hsa_executable_symbol_get_info_fn(
|
||||
symbol, HSA_EXECUTABLE_SYMBOL_INFO_KERNEL_OBJECT, &kernel_object);
|
||||
std::string kernel_name = std::string(name).substr(0, name_length);
|
||||
auto kernel_name = std::string{name.data()}.substr(0, name_length);
|
||||
rocprofiler::AddKernelName(kernel_object, kernel_name);
|
||||
} else {
|
||||
uint64_t kernel_object;
|
||||
@@ -751,8 +753,9 @@ void HSASupport_Singleton::SetHSALoaderApi() {
|
||||
|
||||
|
||||
const Agent::DeviceInfo& HSAAgentInfo::GetDeviceInfo() const {
|
||||
if (type_ == HSA_DEVICE_TYPE_GPU)
|
||||
if (type_ == HSA_DEVICE_TYPE_GPU) {
|
||||
return device_info_;
|
||||
}
|
||||
assert("Attempting to read deviceInfo for a CPU agent");
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,8 @@ static hsa_status_t FindGlobalPool(hsa_amd_memory_pool_t pool, void* data, bool
|
||||
if (nullptr == data) {
|
||||
return HSA_STATUS_ERROR_INVALID_ARGUMENT;
|
||||
}
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
err = hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_get_info_fn(
|
||||
pool, HSA_AMD_MEMORY_POOL_INFO_SEGMENT, &segment);
|
||||
ASSERTM(err != HSA_STATUS_ERROR, "hsa_amd_memory_pool_get_info");
|
||||
@@ -115,10 +116,10 @@ hsa_status_t FindKernArgPool(hsa_amd_memory_pool_t pool, void* data) {
|
||||
}
|
||||
|
||||
void InitializePools(hsa_agent_t cpu_agent, rocprofiler::HSAAgentInfo* agent_info) {
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
hsa_status_t status =
|
||||
hsasupport_singleton.GetAmdExtTable().hsa_amd_agent_iterate_memory_pools_fn(
|
||||
cpu_agent, FindStandardPool, &(agent_info->cpu_pool_));
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
hsa_status_t status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agent_iterate_memory_pools_fn(
|
||||
cpu_agent, FindStandardPool, &(agent_info->cpu_pool_));
|
||||
CHECK_HSA_STATUS("Error: Command Buffer Pool is not initialized", status);
|
||||
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agent_iterate_memory_pools_fn(
|
||||
@@ -127,9 +128,10 @@ void InitializePools(hsa_agent_t cpu_agent, rocprofiler::HSAAgentInfo* agent_inf
|
||||
}
|
||||
|
||||
void InitializeGPUPool(hsa_agent_t gpu_agent, rocprofiler::HSAAgentInfo* agent_info) {
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
hsa_status_t status =
|
||||
hsasupport_singleton.GetAmdExtTable().hsa_amd_agent_iterate_memory_pools_fn(gpu_agent, FindStandardPool, &(agent_info->gpu_pool_));
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
hsa_status_t status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agent_iterate_memory_pools_fn(
|
||||
gpu_agent, FindStandardPool, &(agent_info->gpu_pool_));
|
||||
CHECK_HSA_STATUS("hsa_amd_agent_iterate_memory_pools(gpu_pool)", status);
|
||||
}
|
||||
|
||||
@@ -146,7 +148,8 @@ std::map<uint32_t, rocprofiler::MetricsDict*> metricsDict;
|
||||
|
||||
|
||||
void CheckPacketReqiurements() {
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
for (auto& gpu_agent : hsasupport_singleton.gpu_agents) {
|
||||
// get the instance of MetricsDict
|
||||
rocprofiler::HSAAgentInfo& agentInfo = hsasupport_singleton.GetHSAAgentInfo(gpu_agent.handle);
|
||||
@@ -162,8 +165,10 @@ InitializeAqlPackets(hsa_agent_t cpu_agent, hsa_agent_t gpu_agent,
|
||||
std::vector<std::string>& counter_names, rocprofiler_session_id_t session_id,
|
||||
bool is_spm) {
|
||||
hsa_status_t status = HSA_STATUS_SUCCESS;
|
||||
rocprofiler::ROCProfiler_Singleton& rocprofiler_singleton = rocprofiler::ROCProfiler_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
rocprofiler::ROCProfiler_Singleton& rocprofiler_singleton =
|
||||
rocprofiler::ROCProfiler_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
if (!counters_added.load(std::memory_order_acquire)) {
|
||||
for (auto& name : counter_names) {
|
||||
if (rocprofiler_singleton.HasActiveSession()) {
|
||||
@@ -337,7 +342,7 @@ InitializeAqlPackets(hsa_agent_t cpu_agent, hsa_agent_t gpu_agent,
|
||||
<< "Error: Command buffer given size is " << size << std::endl;
|
||||
abort();
|
||||
}
|
||||
status =hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
agentInfo.cpu_pool_, size, 0, reinterpret_cast<void**>(&(profile->command_buffer.ptr)));
|
||||
if (status != HSA_STATUS_SUCCESS) {
|
||||
profile->command_buffer.ptr = malloc(size);
|
||||
@@ -351,7 +356,7 @@ InitializeAqlPackets(hsa_agent_t cpu_agent, hsa_agent_t gpu_agent,
|
||||
}
|
||||
} else {
|
||||
// Both the CPU and GPU can access the memory
|
||||
status =hsasupport_singleton.GetAmdExtTable().hsa_amd_agents_allow_access_fn(
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agents_allow_access_fn(
|
||||
ag_list_count, ag_list, NULL, profile->command_buffer.ptr);
|
||||
CHECK_HSA_STATUS("Error: Allowing access to Command Buffer", status);
|
||||
}
|
||||
@@ -364,8 +369,9 @@ InitializeAqlPackets(hsa_agent_t cpu_agent, hsa_agent_t gpu_agent,
|
||||
<< "Error: Output buffer given size is " << size << std::endl;
|
||||
abort();
|
||||
}
|
||||
status =hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
agentInfo.kernarg_pool_, size, 0, reinterpret_cast<void**>(&profile->output_buffer.ptr));
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
agentInfo.kernarg_pool_, size, 0,
|
||||
reinterpret_cast<void**>(&profile->output_buffer.ptr));
|
||||
if (status != HSA_STATUS_SUCCESS) {
|
||||
profile->output_buffer.ptr = malloc(size);
|
||||
/*numa_alloc_onnode(
|
||||
@@ -378,7 +384,7 @@ InitializeAqlPackets(hsa_agent_t cpu_agent, hsa_agent_t gpu_agent,
|
||||
abort();
|
||||
}
|
||||
} else {
|
||||
status =hsasupport_singleton.GetAmdExtTable().hsa_amd_agents_allow_access_fn(
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agents_allow_access_fn(
|
||||
ag_list_count, ag_list, NULL, profile->output_buffer.ptr);
|
||||
CHECK_HSA_STATUS("Error: GPU Agent can't have output buffer access", status);
|
||||
memset(profile->output_buffer.ptr, 0x0, profile->output_buffer.size);
|
||||
@@ -426,34 +432,33 @@ hsa_ven_amd_aqlprofile_profile_t* InitializeDeviceProfilingAqlPackets(
|
||||
|
||||
// Preparing an Getting the size of the command and output buffers
|
||||
status = hsa_ven_amd_aqlprofile_start(profile, NULL);
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
rocprofiler::HSAAgentInfo& agentInfo = hsasupport_singleton.GetHSAAgentInfo(gpu_agent.handle);
|
||||
size_t ag_list_count = 1;
|
||||
hsa_agent_t ag_list[ag_list_count];
|
||||
ag_list[0] = gpu_agent;
|
||||
|
||||
// Allocating Command Buffer
|
||||
//FixMe: Command buffer and output buffers are allocated repetatively.
|
||||
// FixMe: Command buffer and output buffers are allocated repetatively.
|
||||
status = HSA_STATUS_ERROR;
|
||||
size_t size = profile->command_buffer.size;
|
||||
profile->command_buffer.ptr = nullptr;
|
||||
if (size <= 0) return nullptr;
|
||||
size = (size + MEM_PAGE_MASK) & ~MEM_PAGE_MASK;
|
||||
status =hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
agentInfo.cpu_pool_, size, 0, reinterpret_cast<void**>(&(profile->command_buffer.ptr)));
|
||||
// Both the CPU and GPU can access the memory
|
||||
if (status == HSA_STATUS_SUCCESS) {
|
||||
status =hsasupport_singleton.GetAmdExtTable().hsa_amd_agents_allow_access_fn(
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agents_allow_access_fn(
|
||||
ag_list_count, ag_list, NULL, profile->command_buffer.ptr);
|
||||
CHECK_HSA_STATUS("Error: GPU Agent can't have command buffer access", status);
|
||||
} else {
|
||||
hsa_agent_t near_cpu_node = agentInfo.GetNearCpuAgent();
|
||||
uint32_t near_cpu_node_id = 0;
|
||||
hsasupport_singleton.GetCoreApiTable().hsa_agent_get_info_fn(near_cpu_node,
|
||||
HSA_AGENT_INFO_NODE, &near_cpu_node_id);
|
||||
profile->command_buffer.ptr = numa_alloc_onnode(
|
||||
profile->command_buffer.size,
|
||||
near_cpu_node_id);
|
||||
hsasupport_singleton.GetCoreApiTable().hsa_agent_get_info_fn(near_cpu_node, HSA_AGENT_INFO_NODE,
|
||||
&near_cpu_node_id);
|
||||
profile->command_buffer.ptr = numa_alloc_onnode(profile->command_buffer.size, near_cpu_node_id);
|
||||
if (profile->command_buffer.ptr != nullptr) {
|
||||
status = HSA_STATUS_SUCCESS;
|
||||
} else {
|
||||
@@ -466,12 +471,12 @@ hsa_ven_amd_aqlprofile_profile_t* InitializeDeviceProfilingAqlPackets(
|
||||
size = profile->output_buffer.size;
|
||||
profile->output_buffer.ptr = nullptr;
|
||||
size = (size + MEM_PAGE_MASK) & ~MEM_PAGE_MASK;
|
||||
status =hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
agentInfo.gpu_pool_, size, 0, reinterpret_cast<void**>(&(profile->output_buffer.ptr)));
|
||||
CHECK_HSA_STATUS("Error: Can't Allocate Output Buffer", status);
|
||||
// Both the CPU and GPU can access the kernel arguments
|
||||
if (status == HSA_STATUS_SUCCESS) {
|
||||
status =hsasupport_singleton.GetAmdExtTable().hsa_amd_agents_allow_access_fn(
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agents_allow_access_fn(
|
||||
ag_list_count, ag_list, NULL, profile->output_buffer.ptr);
|
||||
CHECK_HSA_STATUS("Error: Can't allow access on the Output Buffer for the GPU", status);
|
||||
memset(profile->output_buffer.ptr, 0x0, profile->output_buffer.size);
|
||||
@@ -501,8 +506,9 @@ uint8_t* AllocateSysMemory(hsa_agent_t gpu_agent, size_t size, hsa_amd_memory_po
|
||||
hsa_status_t status = HSA_STATUS_ERROR;
|
||||
uint8_t* buffer = NULL;
|
||||
size = (size + MEM_PAGE_MASK) & ~MEM_PAGE_MASK;
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
status =hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
*cpu_pool, size, 0, reinterpret_cast<void**>(&buffer));
|
||||
// Both the CPU and GPU can access the memory
|
||||
if (status == HSA_STATUS_SUCCESS) {
|
||||
@@ -516,16 +522,20 @@ uint8_t* AllocateSysMemory(hsa_agent_t gpu_agent, size_t size, hsa_amd_memory_po
|
||||
// Allocate memory for use by a kernel of specified size
|
||||
uint8_t* AllocateLocalMemory(size_t size, hsa_amd_memory_pool_t* gpu_pool) {
|
||||
hsa_status_t status = HSA_STATUS_ERROR;
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
uint8_t* buffer = NULL;
|
||||
size = (size + MEM_PAGE_MASK) & ~MEM_PAGE_MASK;
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(*gpu_pool, size, 0, reinterpret_cast<void**>(&buffer));
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_allocate_fn(
|
||||
*gpu_pool, size, 0, reinterpret_cast<void**>(&buffer));
|
||||
uint8_t* ptr = (status == HSA_STATUS_SUCCESS) ? buffer : NULL;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
hsa_status_t Allocate(hsa_agent_t gpu_agent, hsa_ven_amd_aqlprofile_profile_t* profile, size_t att_buffer_size) {
|
||||
rocprofiler::HSAAgentInfo& agentInfo = rocprofiler::HSASupport_Singleton::GetInstance().GetHSAAgentInfo(gpu_agent.handle);
|
||||
hsa_status_t Allocate(hsa_agent_t gpu_agent, hsa_ven_amd_aqlprofile_profile_t* profile,
|
||||
size_t att_buffer_size) {
|
||||
rocprofiler::HSAAgentInfo& agentInfo =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance().GetHSAAgentInfo(gpu_agent.handle);
|
||||
profile->command_buffer.ptr =
|
||||
AllocateSysMemory(gpu_agent, profile->command_buffer.size, &agentInfo.cpu_pool_);
|
||||
profile->output_buffer.size = att_buffer_size;
|
||||
@@ -538,11 +548,14 @@ hsa_status_t Allocate(hsa_agent_t gpu_agent, hsa_ven_amd_aqlprofile_profile_t* p
|
||||
|
||||
bool AllocateMemoryPools(hsa_agent_t cpu_agent, hsa_agent_t gpu_agent,
|
||||
hsa_amd_memory_pool_t* cpu_pool, hsa_amd_memory_pool_t* gpu_pool) {
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
hsa_status_t status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agent_iterate_memory_pools_fn(cpu_agent, FindStandardPool, cpu_pool);
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
hsa_status_t status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agent_iterate_memory_pools_fn(
|
||||
cpu_agent, FindStandardPool, cpu_pool);
|
||||
CHECK_HSA_STATUS("hsa_amd_agent_iterate_memory_pools(cpu_pool)", status);
|
||||
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agent_iterate_memory_pools_fn(gpu_agent, FindStandardPool, gpu_pool);
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_agent_iterate_memory_pools_fn(
|
||||
gpu_agent, FindStandardPool, gpu_pool);
|
||||
CHECK_HSA_STATUS("hsa_amd_agent_iterate_memory_pools(gpu_pool)", status);
|
||||
|
||||
return true;
|
||||
|
||||
@@ -114,7 +114,6 @@ std::string GetKernelNameUsingDispatchID(uint64_t given_id) {
|
||||
}
|
||||
|
||||
|
||||
|
||||
struct kernel_descriptor_t {
|
||||
uint8_t reserved0[16];
|
||||
int64_t kernel_code_entry_byte_offset;
|
||||
@@ -126,7 +125,7 @@ struct kernel_descriptor_t {
|
||||
uint8_t reserved2[6];
|
||||
};
|
||||
// AMD Compute Program Resource Register Three.
|
||||
typedef uint32_t amd_compute_pgm_rsrc_three32_t;
|
||||
using amd_compute_pgm_rsrc_three32_t = uint32_t;
|
||||
enum amd_compute_gfx9_pgm_rsrc_three_t {
|
||||
AMD_HSA_BITS_CREATE_ENUM_ENTRIES(AMD_COMPUTE_PGM_RSRC_THREE_ACCUM_OFFSET, 0, 5),
|
||||
AMD_HSA_BITS_CREATE_ENUM_ENTRIES(AMD_COMPUTE_PGM_RSRC_THREE_TG_SPLIT, 16, 1)
|
||||
@@ -158,17 +157,20 @@ enum amd_kernel_code_property_t {
|
||||
|
||||
static const kernel_descriptor_t* GetKernelCode(uint64_t kernel_object) {
|
||||
const kernel_descriptor_t* kernel_code = NULL;
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
hsa_status_t status = hsasupport_singleton.GetHSALoaderApi().hsa_ven_amd_loader_query_host_address(
|
||||
reinterpret_cast<const void*>(kernel_object), reinterpret_cast<const void**>(&kernel_code));
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
hsa_status_t status =
|
||||
hsasupport_singleton.GetHSALoaderApi().hsa_ven_amd_loader_query_host_address(
|
||||
reinterpret_cast<const void*>(kernel_object),
|
||||
reinterpret_cast<const void**>(&kernel_code));
|
||||
if (HSA_STATUS_SUCCESS != status) {
|
||||
kernel_code = reinterpret_cast<kernel_descriptor_t*>(kernel_object);
|
||||
}
|
||||
return kernel_code;
|
||||
}
|
||||
|
||||
static uint32_t arch_vgpr_count(const std::string_view& name, const kernel_descriptor_t& kernel_code) {
|
||||
|
||||
static uint32_t arch_vgpr_count(const std::string_view& name,
|
||||
const kernel_descriptor_t& kernel_code) {
|
||||
std::string info_name(name.data(), name.size());
|
||||
if (strcmp(name.data(), "gfx90a") == 0 || strncmp(name.data(), "gfx94", 5) == 0)
|
||||
return (AMD_HSA_BITS_GET(kernel_code.compute_pgm_rsrc3,
|
||||
@@ -184,8 +186,8 @@ static uint32_t arch_vgpr_count(const std::string_view& name, const kernel_descr
|
||||
? 8
|
||||
: 4);
|
||||
}
|
||||
static uint32_t accum_vgpr_count(const std::string_view& name, const kernel_descriptor_t& kernel_code) {
|
||||
|
||||
static uint32_t accum_vgpr_count(const std::string_view& name,
|
||||
const kernel_descriptor_t& kernel_code) {
|
||||
std::string info_name(name.data(), name.size());
|
||||
if (strcmp(info_name.c_str(), "gfx908") == 0) return arch_vgpr_count(name, kernel_code);
|
||||
if (strcmp(info_name.c_str(), "gfx90a") == 0 || strncmp(info_name.c_str(), "gfx94", 5) == 0)
|
||||
@@ -204,19 +206,19 @@ static uint32_t sgpr_count(const std::string_view& name, const kernel_descriptor
|
||||
// TODO(srnagara): Recheck the extraction of gfxip from gpu name
|
||||
const char* name_data = name.data();
|
||||
const size_t gfxip_label_len = std::min(name.size() - 2, size_t{63});
|
||||
if (gfxip_label_len > 0 && strlen(name_data) >= gfxip_label_len) {
|
||||
char gfxip[gfxip_label_len];
|
||||
if (gfxip_label_len > 0 && strnlen(name_data, gfxip_label_len + 1) >= gfxip_label_len) {
|
||||
char gfxip[gfxip_label_len + 1];
|
||||
memcpy(gfxip, name_data, gfxip_label_len);
|
||||
gfxip[gfxip_label_len] = '\0';
|
||||
// TODO(srnagara): Check if it is hardcoded
|
||||
if (std::atoi(&gfxip[3]) >= 10) return 128;
|
||||
if (std::stoi(&gfxip[3]) >= 10) return 128;
|
||||
return (AMD_HSA_BITS_GET(kernel_code.compute_pgm_rsrc1,
|
||||
AMD_COMPUTE_PGM_RSRC_ONE_GRANULATED_WAVEFRONT_SGPR_COUNT) /
|
||||
2 +
|
||||
1) *
|
||||
16;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
rocprofiler_kernel_properties_t set_kernel_properties(hsa_kernel_dispatch_packet_t packet,
|
||||
@@ -233,9 +235,11 @@ rocprofiler_kernel_properties_t set_kernel_properties(hsa_kernel_dispatch_packet
|
||||
kernel_properties_ptr.workgroup_size = (uint32_t)workgroup_size;
|
||||
kernel_properties_ptr.lds_size = packet.group_segment_size;
|
||||
kernel_properties_ptr.scratch_size = packet.private_segment_size;
|
||||
HSAAgentInfo agent_info = HSASupport_Singleton::GetInstance().GetHSAAgentInfo(agent.handle);
|
||||
kernel_properties_ptr.arch_vgpr_count = arch_vgpr_count(agent_info.GetDeviceInfo().getName(), *kernel_code);
|
||||
kernel_properties_ptr.accum_vgpr_count = accum_vgpr_count(agent_info.GetDeviceInfo().getName(), *kernel_code);
|
||||
HSAAgentInfo agent_info = HSASupport_Singleton::GetInstance().GetHSAAgentInfo(agent.handle);
|
||||
kernel_properties_ptr.arch_vgpr_count =
|
||||
arch_vgpr_count(agent_info.GetDeviceInfo().getName(), *kernel_code);
|
||||
kernel_properties_ptr.accum_vgpr_count =
|
||||
accum_vgpr_count(agent_info.GetDeviceInfo().getName(), *kernel_code);
|
||||
kernel_properties_ptr.sgpr_count = sgpr_count(agent_info.GetDeviceInfo().getName(), *kernel_code);
|
||||
kernel_properties_ptr.wave_size =
|
||||
AMD_HSA_BITS_GET(kernel_code->kernel_code_properties,
|
||||
@@ -249,7 +253,7 @@ rocprofiler_kernel_properties_t set_kernel_properties(hsa_kernel_dispatch_packet
|
||||
|
||||
namespace queue {
|
||||
|
||||
hsa_status_t pmcCallback(hsa_ven_amd_aqlprofile_info_type_t info_type,
|
||||
hsa_status_t pmcCallback(hsa_ven_amd_aqlprofile_info_type_t info_type,
|
||||
hsa_ven_amd_aqlprofile_info_data_t* info_data, void* data) {
|
||||
hsa_status_t status = HSA_STATUS_SUCCESS;
|
||||
pmc_callback_data_t* passed_data = reinterpret_cast<pmc_callback_data_t*>(data);
|
||||
@@ -302,7 +306,8 @@ void AddRecordCounters(rocprofiler_record_profiler_t* record, const pending_sign
|
||||
rocprofiler_record_counter_value_t{value}});
|
||||
}
|
||||
record->counters = counters;
|
||||
rocprofiler::Session* session = rocprofiler::ROCProfiler_Singleton::GetInstance().GetSession(pending->session_id);
|
||||
rocprofiler::Session* session =
|
||||
rocprofiler::ROCProfiler_Singleton::GetInstance().GetSession(pending->session_id);
|
||||
void* initial_handle = const_cast<rocprofiler_record_counter_instance_t*>(record->counters);
|
||||
if (session->FindBuffer(pending->buffer_id)) {
|
||||
Memory::GenericBuffer* buffer = session->GetBuffer(pending->buffer_id);
|
||||
@@ -365,10 +370,11 @@ void AddAttRecord(rocprofiler_record_att_tracer_t* record, hsa_agent_t gpu_agent
|
||||
|
||||
bool AsyncSignalHandler(hsa_signal_value_t signal_value, void* data) {
|
||||
auto queue_info_session = static_cast<queue_info_session_t*>(data);
|
||||
rocprofiler::ROCProfiler_Singleton& rocprofiler_singleton = rocprofiler::ROCProfiler_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
if (!queue_info_session ||
|
||||
!rocprofiler_singleton.GetSession(queue_info_session->session_id) ||
|
||||
rocprofiler::ROCProfiler_Singleton& rocprofiler_singleton =
|
||||
rocprofiler::ROCProfiler_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
if (!queue_info_session || !rocprofiler_singleton.GetSession(queue_info_session->session_id) ||
|
||||
!rocprofiler_singleton.GetSession(queue_info_session->session_id)->GetProfiler())
|
||||
return true;
|
||||
rocprofiler::Session* session = rocprofiler_singleton.GetSession(queue_info_session->session_id);
|
||||
@@ -381,9 +387,10 @@ bool AsyncSignalHandler(hsa_signal_value_t signal_value, void* data) {
|
||||
for (auto it = pending_signals.begin(); it != pending_signals.end();
|
||||
it = pending_signals.erase(it)) {
|
||||
auto& pending = *it;
|
||||
if (hsasupport_singleton.GetCoreApiTable().hsa_signal_load_relaxed_fn(pending->new_signal)) return true;
|
||||
if (hsasupport_singleton.GetCoreApiTable().hsa_signal_load_relaxed_fn(pending->new_signal))
|
||||
return true;
|
||||
hsa_amd_profiling_dispatch_time_t time;
|
||||
hsasupport_singleton.GetAmdExtTable().hsa_amd_profiling_get_dispatch_time_fn(
|
||||
hsasupport_singleton.GetAmdExtTable().hsa_amd_profiling_get_dispatch_time_fn(
|
||||
queue_info_session->agent, pending->original_signal, &time);
|
||||
uint32_t record_count = 1;
|
||||
bool is_individual_xcc_mode = false;
|
||||
@@ -429,7 +436,7 @@ bool AsyncSignalHandler(hsa_signal_value_t signal_value, void* data) {
|
||||
pending->context->metrics_list,
|
||||
time.end - time.start);
|
||||
AddRecordCounters(&record, pending);
|
||||
}else {
|
||||
} else {
|
||||
if (session->FindBuffer(pending->buffer_id)) {
|
||||
Memory::GenericBuffer* buffer = session->GetBuffer(pending->buffer_id);
|
||||
buffer->AddRecord(record);
|
||||
@@ -440,12 +447,12 @@ bool AsyncSignalHandler(hsa_signal_value_t signal_value, void* data) {
|
||||
// TODO(aelwazir): we need a better way of distributing events and free them
|
||||
// if (pending->profile->output_buffer.ptr)
|
||||
// numa_free(pending->profile->output_buffer.ptr, pending->profile->output_buffer.size);
|
||||
hsa_status_t status =hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_free_fn(
|
||||
hsa_status_t status = hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_free_fn(
|
||||
(pending->profile->output_buffer.ptr));
|
||||
CHECK_HSA_STATUS("Error: Couldn't free output buffer memory", status);
|
||||
// if (pending->profile->command_buffer.ptr)
|
||||
// numa_free(pending->profile->command_buffer.ptr, pending->profile->command_buffer.size);
|
||||
status =hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_free_fn(
|
||||
status = hsasupport_singleton.GetAmdExtTable().hsa_amd_memory_pool_free_fn(
|
||||
(pending->profile->command_buffer.ptr));
|
||||
CHECK_HSA_STATUS("Error: Couldn't free command buffer memory", status);
|
||||
delete pending->profile;
|
||||
@@ -455,9 +462,10 @@ bool AsyncSignalHandler(hsa_signal_value_t signal_value, void* data) {
|
||||
delete pending->context;
|
||||
}
|
||||
if (pending->new_signal.handle)
|
||||
hsasupport_singleton.GetCoreApiTable().hsa_signal_destroy_fn(pending->new_signal);
|
||||
hsasupport_singleton.GetCoreApiTable().hsa_signal_destroy_fn(pending->new_signal);
|
||||
if (queue_info_session->interrupt_signal.handle)
|
||||
hsasupport_singleton.GetCoreApiTable().hsa_signal_destroy_fn(queue_info_session->interrupt_signal);
|
||||
hsasupport_singleton.GetCoreApiTable().hsa_signal_destroy_fn(
|
||||
queue_info_session->interrupt_signal);
|
||||
}
|
||||
}
|
||||
delete queue_info_session;
|
||||
@@ -466,12 +474,12 @@ bool AsyncSignalHandler(hsa_signal_value_t signal_value, void* data) {
|
||||
}
|
||||
|
||||
bool AsyncSignalHandlerATT(hsa_signal_value_t /* signal */, void* data) {
|
||||
|
||||
auto queue_info_session = static_cast<queue_info_session_t*>(data);
|
||||
rocprofiler::ROCProfiler_Singleton& rocprofiler_singleton = rocprofiler::ROCProfiler_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
if (!queue_info_session ||
|
||||
!rocprofiler_singleton.GetSession(queue_info_session->session_id) ||
|
||||
rocprofiler::ROCProfiler_Singleton& rocprofiler_singleton =
|
||||
rocprofiler::ROCProfiler_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
if (!queue_info_session || !rocprofiler_singleton.GetSession(queue_info_session->session_id) ||
|
||||
!rocprofiler_singleton.GetSession(queue_info_session->session_id)->GetAttTracer())
|
||||
return true;
|
||||
rocprofiler::Session* session = rocprofiler_singleton.GetSession(queue_info_session->session_id);
|
||||
@@ -487,7 +495,8 @@ bool AsyncSignalHandlerATT(hsa_signal_value_t /* signal */, void* data) {
|
||||
it = pending_signals.erase(it)) {
|
||||
auto& pending = *it;
|
||||
std::lock_guard<std::mutex> lock(session->GetSessionLock());
|
||||
if (hsasupport_singleton.GetCoreApiTable().hsa_signal_load_relaxed_fn(pending.new_signal)) return true;
|
||||
if (hsasupport_singleton.GetCoreApiTable().hsa_signal_load_relaxed_fn(pending.new_signal))
|
||||
return true;
|
||||
rocprofiler_record_att_tracer_t record{};
|
||||
record.kernel_id = rocprofiler_kernel_id_t{pending.kernel_descriptor};
|
||||
record.gpu_id = rocprofiler_agent_id_t{(uint64_t)queue_info_session->gpu_index};
|
||||
@@ -535,7 +544,7 @@ bool AsyncSignalHandlerATT(hsa_signal_value_t /* signal */, void* data) {
|
||||
|
||||
void CreateBarrierPacket(const hsa_signal_t& packet_completion_signal,
|
||||
std::vector<Packet::packet_t>* transformed_packets) {
|
||||
hsa_barrier_and_packet_t barrier{0};
|
||||
hsa_barrier_and_packet_t barrier{};
|
||||
barrier.header = HSA_PACKET_TYPE_BARRIER_AND << HSA_PACKET_HEADER_TYPE;
|
||||
barrier.dep_signal[0] = packet_completion_signal;
|
||||
void* barrier_ptr = &barrier;
|
||||
@@ -549,20 +558,23 @@ void AddVendorSpecificPacket(const Packet::packet_t* packet,
|
||||
}
|
||||
|
||||
void SignalAsyncHandler(const hsa_signal_t& signal, void* data) {
|
||||
hsa_status_t status = HSASupport_Singleton::GetInstance().GetAmdExtTable().hsa_amd_signal_async_handler_fn(
|
||||
signal, HSA_SIGNAL_CONDITION_EQ, 0, AsyncSignalHandler, data);
|
||||
hsa_status_t status =
|
||||
HSASupport_Singleton::GetInstance().GetAmdExtTable().hsa_amd_signal_async_handler_fn(
|
||||
signal, HSA_SIGNAL_CONDITION_EQ, 0, AsyncSignalHandler, data);
|
||||
CHECK_HSA_STATUS("Error: hsa_amd_signal_async_handler failed", status);
|
||||
}
|
||||
|
||||
void signalAsyncHandlerATT(const hsa_signal_t& signal, void* data) {
|
||||
hsa_status_t status = HSASupport_Singleton::GetInstance().GetAmdExtTable().hsa_amd_signal_async_handler_fn(
|
||||
signal, HSA_SIGNAL_CONDITION_EQ, 0, AsyncSignalHandlerATT, data);
|
||||
hsa_status_t status =
|
||||
HSASupport_Singleton::GetInstance().GetAmdExtTable().hsa_amd_signal_async_handler_fn(
|
||||
signal, HSA_SIGNAL_CONDITION_EQ, 0, AsyncSignalHandlerATT, data);
|
||||
CHECK_HSA_STATUS("Error: hsa_amd_signal_async_handler for ATT failed", status);
|
||||
}
|
||||
|
||||
void CreateSignal(uint32_t attribute, hsa_signal_t* signal) {
|
||||
hsa_status_t status =
|
||||
HSASupport_Singleton::GetInstance().GetAmdExtTable().hsa_amd_signal_create_fn(1, 0, nullptr, attribute, signal);
|
||||
HSASupport_Singleton::GetInstance().GetAmdExtTable().hsa_amd_signal_create_fn(
|
||||
1, 0, nullptr, attribute, signal);
|
||||
CHECK_HSA_STATUS("Error: hsa_amd_signal_create failed", status);
|
||||
}
|
||||
|
||||
@@ -604,15 +616,16 @@ void ResetSessionID(rocprofiler_session_id_t id) { session_id = id; }
|
||||
|
||||
void CheckNeededProfileConfigs() {
|
||||
rocprofiler_session_id_t internal_session_id;
|
||||
// Getting Session ID
|
||||
rocprofiler::ROCProfiler_Singleton& rocprofiler_singleton = rocprofiler::ROCProfiler_Singleton::GetInstance();
|
||||
// Getting Session ID
|
||||
rocprofiler::ROCProfiler_Singleton& rocprofiler_singleton =
|
||||
rocprofiler::ROCProfiler_Singleton::GetInstance();
|
||||
internal_session_id = rocprofiler_singleton.GetCurrentSessionId();
|
||||
|
||||
|
||||
if (session_id.handle == 0 || internal_session_id.handle != session_id.handle) {
|
||||
session_id = internal_session_id;
|
||||
// Getting Counters count from the Session
|
||||
if (session_id.handle > 0 ) {
|
||||
if (session_id.handle > 0) {
|
||||
session = rocprofiler_singleton.GetSession(session_id);
|
||||
if (session && session->FindFilterWithKind(ROCPROFILER_COUNTERS_COLLECTION)) {
|
||||
rocprofiler_filter_id_t filter_id =
|
||||
@@ -658,7 +671,8 @@ std::pair<std::vector<bool>, bool> GetAllowedProfilesList(const void* packets, i
|
||||
std::vector<bool> can_profile_packet;
|
||||
bool b_can_profile_anypacket = false;
|
||||
can_profile_packet.reserve(pkt_count);
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton = rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
rocprofiler::HSASupport_Singleton& hsasupport_singleton =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance();
|
||||
std::lock_guard<std::mutex> lock(hsasupport_singleton.ksymbol_map_lock);
|
||||
assert(hsasupport_singleton.ksymbols);
|
||||
|
||||
@@ -702,13 +716,9 @@ std::pair<std::vector<bool>, bool> GetAllowedProfilesList(const void* packets, i
|
||||
return {can_profile_packet, b_can_profile_anypacket};
|
||||
}
|
||||
|
||||
std::pair<hsa_ven_amd_aqlprofile_profile_t*, rocprofiler_codeobj_capture_mode_t>
|
||||
ProcessATTParams(
|
||||
Packet::packet_t& start_packet,
|
||||
Packet::packet_t& stop_packet,
|
||||
Queue& queue_info,
|
||||
rocprofiler::HSAAgentInfo& agentInfo
|
||||
) {
|
||||
std::pair<hsa_ven_amd_aqlprofile_profile_t*, rocprofiler_codeobj_capture_mode_t> ProcessATTParams(
|
||||
Packet::packet_t& start_packet, Packet::packet_t& stop_packet, Queue& queue_info,
|
||||
rocprofiler::HSAAgentInfo& agentInfo) {
|
||||
std::vector<hsa_ven_amd_aqlprofile_parameter_t> att_params;
|
||||
int num_att_counters = 0;
|
||||
uint32_t att_buffer_size = DEFAULT_ATT_BUFFER_SIZE;
|
||||
@@ -762,8 +772,9 @@ ProcessATTParams(
|
||||
for (; num_att_counters < 16; num_att_counters++) att_params.push_back(zero_perf);
|
||||
}
|
||||
// Get the PM4 Packets using packets_generator
|
||||
return {Packet::GenerateATTPackets(queue_info.GetCPUAgent(), queue_info.GetGPUAgent(),
|
||||
att_params, &start_packet, &stop_packet, att_buffer_size), capture_mode};
|
||||
return {Packet::GenerateATTPackets(queue_info.GetCPUAgent(), queue_info.GetGPUAgent(), att_params,
|
||||
&start_packet, &stop_packet, att_buffer_size),
|
||||
capture_mode};
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -773,9 +784,8 @@ ProcessATTParams(
|
||||
* pointer to the packet. This packet is written into the queue by this
|
||||
* interceptor by invoking the writer function.
|
||||
*/
|
||||
void Queue::WriteInterceptor(const void* packets, uint64_t pkt_count, uint64_t user_pkt_index, void* data,
|
||||
hsa_amd_queue_intercept_packet_writer writer) {
|
||||
|
||||
void Queue::WriteInterceptor(const void* packets, uint64_t pkt_count, uint64_t user_pkt_index,
|
||||
void* data, hsa_amd_queue_intercept_packet_writer writer) {
|
||||
static const char* env_MAX_ATT_PROFILES = getenv("ROCPROFILER_MAX_ATT_PROFILES");
|
||||
static int MAX_ATT_PROFILES = env_MAX_ATT_PROFILES ? atoi(env_MAX_ATT_PROFILES) : 1;
|
||||
|
||||
@@ -871,7 +881,7 @@ void Queue::WriteInterceptor(const void* packets, uint64_t pkt_count, uint64_t u
|
||||
// Make a copy of the original packet, adding its signal to a barrier
|
||||
// packet and create a new signal for it to get timestamps
|
||||
if (original_packet.completion_signal.handle) {
|
||||
hsa_barrier_and_packet_t barrier{0};
|
||||
hsa_barrier_and_packet_t barrier{};
|
||||
barrier.header = HSA_PACKET_TYPE_BARRIER_AND << HSA_PACKET_HEADER_TYPE;
|
||||
Packet::packet_t* __attribute__((__may_alias__)) pkt =
|
||||
(reinterpret_cast<Packet::packet_t*>(&barrier));
|
||||
@@ -897,26 +907,26 @@ void Queue::WriteInterceptor(const void* packets, uint64_t pkt_count, uint64_t u
|
||||
// Added Interrupt Signal with barrier and provided handler for it
|
||||
CreateBarrierPacket(interrupt_signal, &transformed_packets);
|
||||
} else {
|
||||
hsa_barrier_and_packet_t barrier{0};
|
||||
hsa_barrier_and_packet_t barrier{};
|
||||
barrier.header = HSA_PACKET_TYPE_BARRIER_AND << HSA_PACKET_HEADER_TYPE;
|
||||
barrier.completion_signal = interrupt_signal;
|
||||
Packet::packet_t* __attribute__((__may_alias__)) pkt =
|
||||
(reinterpret_cast<Packet::packet_t*>(&barrier));
|
||||
transformed_packets.emplace_back(*pkt);
|
||||
}
|
||||
rocprofiler::HSAAgentInfo& agentInfo =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance().GetHSAAgentInfo(queue_info.GetGPUAgent().handle);
|
||||
rocprofiler::HSAAgentInfo& agentInfo =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance().GetHSAAgentInfo(
|
||||
queue_info.GetGPUAgent().handle);
|
||||
// Creating Async Handler to be called every time the interrupt signal is
|
||||
// marked complete
|
||||
SignalAsyncHandler(
|
||||
interrupt_signal,
|
||||
new queue_info_session_t{queue_info.GetGPUAgent(), session_id_snapshot, queue_info.GetQueueID(),
|
||||
writer_id, interrupt_signal, agentInfo.GetDeviceInfo().getGPUId(),
|
||||
agentInfo.GetDeviceInfo().getXccCount()});
|
||||
SignalAsyncHandler(interrupt_signal,
|
||||
new queue_info_session_t{
|
||||
queue_info.GetGPUAgent(), session_id_snapshot, queue_info.GetQueueID(),
|
||||
writer_id, interrupt_signal, agentInfo.GetDeviceInfo().getGPUId(),
|
||||
agentInfo.GetDeviceInfo().getXccCount()});
|
||||
ACTIVE_INTERRUPT_SIGNAL_COUNT.fetch_add(1, std::memory_order_relaxed);
|
||||
// profile_id++;
|
||||
// } while (replay_mode_count > 0 && profile_id < replay_mode_count); // Profiles loop end
|
||||
|
||||
}
|
||||
|
||||
/* Write the transformed packets to the hardware queue. */
|
||||
@@ -927,7 +937,9 @@ void Queue::WriteInterceptor(const void* packets, uint64_t pkt_count, uint64_t u
|
||||
// Getting Queue Data and Information
|
||||
auto& queue_info = *static_cast<Queue*>(data);
|
||||
std::lock_guard<std::mutex> lk(queue_info.qw_mutex);
|
||||
rocprofiler::HSAAgentInfo& agentInfo = rocprofiler::HSASupport_Singleton::GetInstance().GetHSAAgentInfo(queue_info.GetGPUAgent().handle);
|
||||
rocprofiler::HSAAgentInfo& agentInfo =
|
||||
rocprofiler::HSASupport_Singleton::GetInstance().GetHSAAgentInfo(
|
||||
queue_info.GetGPUAgent().handle);
|
||||
|
||||
bool can_profile_anypacket = false;
|
||||
std::vector<bool> can_profile_packet;
|
||||
@@ -947,11 +959,8 @@ void Queue::WriteInterceptor(const void* packets, uint64_t pkt_count, uint64_t u
|
||||
rocprofiler_codeobj_capture_mode_t capture_mode = ROCPROFILER_CAPTURE_SYMBOLS_ONLY;
|
||||
|
||||
if (att_parameters_data.size() > 0) {
|
||||
std::tie(profile, capture_mode) = ProcessATTParams(start_packet,
|
||||
stop_packet,
|
||||
queue_info,
|
||||
agentInfo
|
||||
);
|
||||
std::tie(profile, capture_mode) =
|
||||
ProcessATTParams(start_packet, stop_packet, queue_info, agentInfo);
|
||||
}
|
||||
|
||||
// Searching across all the packets given during this write
|
||||
@@ -974,7 +983,7 @@ void Queue::WriteInterceptor(const void* packets, uint64_t pkt_count, uint64_t u
|
||||
KernelInterceptCount += 1;
|
||||
writer_id = WRITER_ID.fetch_add(1, std::memory_order_release);
|
||||
|
||||
if (att_parameters_data.size() > 0 && profile) {
|
||||
if (!att_parameters_data.empty() && profile) {
|
||||
// Adding start packet and its barrier with a dummy signal
|
||||
hsa_signal_t dummy_signal{};
|
||||
dummy_signal.handle = 0;
|
||||
@@ -1001,14 +1010,14 @@ void Queue::WriteInterceptor(const void* packets, uint64_t pkt_count, uint64_t u
|
||||
kernel_properties, (uint32_t)syscall(__NR_gettid), user_pkt_index);
|
||||
|
||||
uint64_t off = dispatch_packet.kernel_object +
|
||||
GetKernelCode(dispatch_packet.kernel_object)->kernel_code_entry_byte_offset;
|
||||
GetKernelCode(dispatch_packet.kernel_object)->kernel_code_entry_byte_offset;
|
||||
codeobj_record::make_capture(rocprofiler_record_id_t{record_id}, capture_mode, off);
|
||||
codeobj_record::start_capture(rocprofiler_record_id_t{record_id});
|
||||
codeobj_record::stop_capture(rocprofiler_record_id_t{record_id});
|
||||
|
||||
// Make a copy of the original packet, adding its signal to a barrier packet
|
||||
if (original_packet.completion_signal.handle) {
|
||||
hsa_barrier_and_packet_t barrier{0};
|
||||
if (original_packet.completion_signal.handle != 0U) {
|
||||
hsa_barrier_and_packet_t barrier{};
|
||||
barrier.header = HSA_PACKET_TYPE_BARRIER_AND << HSA_PACKET_HEADER_TYPE;
|
||||
Packet::packet_t* __attribute__((__may_alias__)) pkt =
|
||||
(reinterpret_cast<Packet::packet_t*>(&barrier));
|
||||
@@ -1028,7 +1037,7 @@ void Queue::WriteInterceptor(const void* packets, uint64_t pkt_count, uint64_t u
|
||||
// Added Interrupt Signal with barrier and provided handler for it
|
||||
CreateBarrierPacket(interrupt_signal, &transformed_packets);
|
||||
} else {
|
||||
hsa_barrier_and_packet_t barrier{0};
|
||||
hsa_barrier_and_packet_t barrier{};
|
||||
barrier.header = HSA_PACKET_TYPE_BARRIER_AND << HSA_PACKET_HEADER_TYPE;
|
||||
barrier.completion_signal = interrupt_signal;
|
||||
Packet::packet_t* __attribute__((__may_alias__)) pkt =
|
||||
@@ -1050,13 +1059,12 @@ void Queue::WriteInterceptor(const void* packets, uint64_t pkt_count, uint64_t u
|
||||
/* Write the original packets to the hardware queue if no profiling session
|
||||
* is active */
|
||||
writer(packets, pkt_count);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Queue::Queue(const hsa_agent_t cpu_agent, const hsa_agent_t gpu_agent, hsa_queue_t* queue)
|
||||
: cpu_agent_(cpu_agent), gpu_agent_(gpu_agent), intercept_queue_(queue) { }
|
||||
: cpu_agent_(cpu_agent), gpu_agent_(gpu_agent), intercept_queue_(queue) {}
|
||||
|
||||
Queue::~Queue() {
|
||||
while (ACTIVE_INTERRUPT_SIGNAL_COUNT.load(std::memory_order_acquire) > 0) {
|
||||
@@ -1071,8 +1079,7 @@ hsa_agent_t Queue::GetCPUAgent() { return cpu_agent_; }
|
||||
|
||||
uint64_t Queue::GetQueueID() { return intercept_queue_->id; }
|
||||
|
||||
void CheckPacketReqiurements() {
|
||||
Packet::CheckPacketReqiurements();}
|
||||
void CheckPacketReqiurements() { Packet::CheckPacketReqiurements(); }
|
||||
|
||||
} // namespace queue
|
||||
} // namespace rocprofiler
|
||||
|
||||
@@ -198,7 +198,6 @@ class Profile {
|
||||
status = api->hsa_ven_amd_aqlprofile_stop(&profile_, &stop);
|
||||
if (status != HSA_STATUS_SUCCESS) AQL_EXC_RAISING(status, "aqlprofile_stop");
|
||||
hsa_status_t rd_status = HSA_STATUS_ERROR;
|
||||
#ifdef AQLPROF_NEW_API
|
||||
if (profile_.type == HSA_VEN_AMD_AQLPROFILE_EVENT_TYPE_PMC) {
|
||||
rd_status = api->hsa_ven_amd_aqlprofile_read(&profile_, &read);
|
||||
if (is_concurrent) { // concurrent: one more read
|
||||
@@ -208,7 +207,6 @@ class Profile {
|
||||
}
|
||||
#if 0 // Read API returns error if disabled
|
||||
if (rd_status != HSA_STATUS_SUCCESS) AQL_EXC_RAISING(status, "aqlprofile_read");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Set completion signal of start
|
||||
|
||||
@@ -833,9 +833,7 @@ static std::string getKernelNameMultiKernelMultiDevice(hipLaunchParams* launchPa
|
||||
return name_str.str();
|
||||
}
|
||||
|
||||
template <typename... Ts> struct Overloaded : Ts... {
|
||||
using Ts::operator()...;
|
||||
};
|
||||
template <typename... Ts> struct Overloaded : Ts... { using Ts::operator()...; };
|
||||
template <class... Ts> Overloaded(Ts...) -> Overloaded<Ts...>;
|
||||
|
||||
std::optional<std::string> GetHipKernelName(uint32_t cid, hip_api_data_t* data) {
|
||||
|
||||
@@ -28,38 +28,17 @@ target_compile_definitions(
|
||||
PUBLIC AMD_INTERNAL_BUILD
|
||||
PRIVATE HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_AMD__=1)
|
||||
|
||||
if(ASAN)
|
||||
target_compile_options(rocprofiler_tool PRIVATE -fsanitize=address)
|
||||
target_link_libraries(
|
||||
rocprofiler_tool
|
||||
rocprofiler-v2
|
||||
hsa-runtime64::hsa-runtime64
|
||||
Threads::Threads
|
||||
atomic
|
||||
asan
|
||||
dl
|
||||
rt
|
||||
stdc++fs
|
||||
amd_comgr)
|
||||
target_link_options(
|
||||
rocprofiler_tool PRIVATE
|
||||
-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exportmap
|
||||
-Wl,--no-undefined,-fsanitize=address)
|
||||
else()
|
||||
target_link_libraries(
|
||||
rocprofiler_tool
|
||||
rocprofiler-v2
|
||||
hsa-runtime64::hsa-runtime64
|
||||
Threads::Threads
|
||||
atomic
|
||||
dl
|
||||
rt
|
||||
stdc++fs
|
||||
amd_comgr)
|
||||
target_link_options(
|
||||
rocprofiler_tool PRIVATE
|
||||
-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exportmap -Wl,--no-undefined)
|
||||
endif()
|
||||
target_link_libraries(rocprofiler_tool
|
||||
PRIVATE $<BUILD_INTERFACE:rocprofiler::build-flags>)
|
||||
|
||||
target_link_libraries(
|
||||
rocprofiler_tool
|
||||
PUBLIC rocprofiler-v2 hsa-runtime64::hsa-runtime64 Threads::Threads atomic dl rt
|
||||
stdc++fs amd_comgr
|
||||
PRIVATE rocprofiler::memcheck)
|
||||
target_link_options(
|
||||
rocprofiler_tool PRIVATE -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exportmap
|
||||
-Wl,--no-undefined)
|
||||
|
||||
install(TARGETS rocprofiler_tool LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/rocprofiler
|
||||
COMPONENT runtime)
|
||||
|
||||
@@ -9,10 +9,7 @@ file(GLOB ROCPROFILER_ROCSYS_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
|
||||
# Compiling/Installing ROCProfiler API
|
||||
add_executable(rocprofiler_rocsys_fe ${ROCPROFILER_ROCSYS_SRC_FILES})
|
||||
|
||||
set_target_properties(
|
||||
rocprofiler_rocsys_fe
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_OUTPUT_DIRECTORY} OUTPUT_NAME
|
||||
"rocsys")
|
||||
set_target_properties(rocprofiler_rocsys_fe PROPERTIES OUTPUT_NAME "rocsys")
|
||||
|
||||
target_include_directories(
|
||||
rocprofiler_rocsys_fe PRIVATE ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
|
||||
@@ -53,8 +53,8 @@ namespace util {
|
||||
static const char* cpp_demangle(const char* symname) {
|
||||
size_t size = 0;
|
||||
int status;
|
||||
const char* ret = abi::__cxa_demangle(symname, NULL, &size, &status);
|
||||
return (ret != 0) ? ret : strdup(symname);
|
||||
const char* ret = abi::__cxa_demangle(symname, nullptr, &size, &status);
|
||||
return (ret != nullptr) ? ret : strdup(symname);
|
||||
}
|
||||
|
||||
// Callback function to get available in the system agents
|
||||
@@ -62,7 +62,7 @@ hsa_status_t HsaRsrcFactory::GetHsaAgentsCallback(hsa_agent_t agent, void* data)
|
||||
hsa_status_t status = HSA_STATUS_ERROR;
|
||||
HsaRsrcFactory* hsa_rsrc = reinterpret_cast<HsaRsrcFactory*>(data);
|
||||
const AgentInfo* agent_info = hsa_rsrc->AddAgentInfo(agent);
|
||||
if (agent_info != NULL) status = HSA_STATUS_SUCCESS;
|
||||
if (agent_info != nullptr) status = HSA_STATUS_SUCCESS;
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -123,10 +123,10 @@ hsa_status_t FindKernArgPool(hsa_amd_memory_pool_t pool, void* data) {
|
||||
HsaRsrcFactory::HsaRsrcFactory(bool initialize_hsa) : initialize_hsa_(initialize_hsa) {
|
||||
hsa_status_t status;
|
||||
|
||||
cpu_pool_ = NULL;
|
||||
kern_arg_pool_ = NULL;
|
||||
cpu_pool_ = nullptr;
|
||||
kern_arg_pool_ = nullptr;
|
||||
|
||||
InitHsaApiTable(NULL);
|
||||
InitHsaApiTable(nullptr);
|
||||
|
||||
// Initialize the Hsa Runtime
|
||||
if (initialize_hsa_) {
|
||||
@@ -137,11 +137,12 @@ HsaRsrcFactory::HsaRsrcFactory(bool initialize_hsa) : initialize_hsa_(initialize
|
||||
// Discover the set of Gpu devices available on the platform
|
||||
status = hsa_api_.hsa_iterate_agents(GetHsaAgentsCallback, this);
|
||||
CHECK_STATUS("Error Calling hsa_iterate_agents", status);
|
||||
if (cpu_pool_ == NULL) CHECK_STATUS("CPU memory pool is not found", HSA_STATUS_ERROR);
|
||||
if (kern_arg_pool_ == NULL) CHECK_STATUS("Kern-arg memory pool is not found", HSA_STATUS_ERROR);
|
||||
if (cpu_pool_ == nullptr) CHECK_STATUS("CPU memory pool is not found", HSA_STATUS_ERROR);
|
||||
if (kern_arg_pool_ == nullptr)
|
||||
CHECK_STATUS("Kern-arg memory pool is not found", HSA_STATUS_ERROR);
|
||||
|
||||
// Get AqlProfile API table
|
||||
aqlprofile_api_ = {0};
|
||||
aqlprofile_api_ = {};
|
||||
#ifdef ROCP_LD_AQLPROFILE
|
||||
status = LoadAqlProfileLib(&aqlprofile_api_);
|
||||
#else
|
||||
@@ -152,7 +153,7 @@ HsaRsrcFactory::HsaRsrcFactory(bool initialize_hsa) : initialize_hsa_(initialize
|
||||
CHECK_STATUS("aqlprofile API table load failed", status);
|
||||
|
||||
// Get Loader API table
|
||||
loader_api_ = {0};
|
||||
loader_api_ = {};
|
||||
status = hsa_api_.hsa_system_get_major_extension_table(HSA_EXTENSION_AMD_LOADER, 1,
|
||||
sizeof(loader_api_), &loader_api_);
|
||||
CHECK_STATUS("loader API table query failed", status);
|
||||
@@ -160,7 +161,7 @@ HsaRsrcFactory::HsaRsrcFactory(bool initialize_hsa) : initialize_hsa_(initialize
|
||||
// Instantiate HSA timer
|
||||
timer_ = new HsaTimer(&hsa_api_);
|
||||
CHECK_STATUS("HSA timer allocation failed",
|
||||
(timer_ == NULL) ? HSA_STATUS_ERROR : HSA_STATUS_SUCCESS);
|
||||
(timer_ == nullptr) ? HSA_STATUS_ERROR : HSA_STATUS_SUCCESS);
|
||||
|
||||
// Time correlation
|
||||
const uint32_t corr_iters = 1000;
|
||||
@@ -179,8 +180,8 @@ HsaRsrcFactory::HsaRsrcFactory(bool initialize_hsa) : initialize_hsa_(initialize
|
||||
// Destructor of the class
|
||||
HsaRsrcFactory::~HsaRsrcFactory() {
|
||||
delete timer_;
|
||||
for (auto p : cpu_list_) delete p;
|
||||
for (auto p : gpu_list_) delete p;
|
||||
for (const auto* p : cpu_list_) delete p;
|
||||
for (const auto* p : gpu_list_) delete p;
|
||||
if (initialize_hsa_) {
|
||||
hsa_status_t status = hsa_api_.hsa_shut_down();
|
||||
CHECK_STATUS("Error in hsa_shut_down", status);
|
||||
@@ -190,8 +191,8 @@ HsaRsrcFactory::~HsaRsrcFactory() {
|
||||
void HsaRsrcFactory::InitHsaApiTable(HsaApiTable* table) {
|
||||
std::lock_guard<mutex_t> lck(mutex_);
|
||||
|
||||
if (hsa_api_.hsa_init == NULL) {
|
||||
if (table != NULL) {
|
||||
if (hsa_api_.hsa_init == nullptr) {
|
||||
if (table != nullptr) {
|
||||
hsa_api_.hsa_init = table->core_->hsa_init_fn;
|
||||
hsa_api_.hsa_shut_down = table->core_->hsa_shut_down_fn;
|
||||
hsa_api_.hsa_agent_get_info = table->core_->hsa_agent_get_info_fn;
|
||||
@@ -289,7 +290,7 @@ void HsaRsrcFactory::InitHsaApiTable(HsaApiTable* table) {
|
||||
|
||||
hsa_status_t HsaRsrcFactory::LoadAqlProfileLib(aqlprofile_pfn_t* api) {
|
||||
void* handle = dlopen(kAqlProfileLib, RTLD_NOW);
|
||||
if (handle == NULL) {
|
||||
if (handle == nullptr) {
|
||||
fprintf(stderr, "Loading '%s' failed, %s\n", kAqlProfileLib, dlerror());
|
||||
return HSA_STATUS_ERROR;
|
||||
}
|
||||
@@ -305,10 +306,8 @@ hsa_status_t HsaRsrcFactory::LoadAqlProfileLib(aqlprofile_pfn_t* api) {
|
||||
(decltype(::hsa_ven_amd_aqlprofile_start)*)dlsym(handle, "hsa_ven_amd_aqlprofile_start");
|
||||
api->hsa_ven_amd_aqlprofile_stop =
|
||||
(decltype(::hsa_ven_amd_aqlprofile_stop)*)dlsym(handle, "hsa_ven_amd_aqlprofile_stop");
|
||||
#ifdef AQLPROF_NEW_API
|
||||
api->hsa_ven_amd_aqlprofile_read =
|
||||
(decltype(::hsa_ven_amd_aqlprofile_read)*)dlsym(handle, "hsa_ven_amd_aqlprofile_read");
|
||||
#endif
|
||||
api->hsa_ven_amd_aqlprofile_legacy_get_pm4 =
|
||||
(decltype(::hsa_ven_amd_aqlprofile_legacy_get_pm4)*)dlsym(
|
||||
handle, "hsa_ven_amd_aqlprofile_legacy_get_pm4");
|
||||
@@ -325,7 +324,7 @@ hsa_status_t HsaRsrcFactory::LoadAqlProfileLib(aqlprofile_pfn_t* api) {
|
||||
const AgentInfo* HsaRsrcFactory::AddAgentInfo(const hsa_agent_t agent) {
|
||||
// Determine if device is a Gpu agent
|
||||
hsa_status_t status;
|
||||
AgentInfo* agent_info = NULL;
|
||||
AgentInfo* agent_info = nullptr;
|
||||
|
||||
hsa_device_type_t type;
|
||||
status = hsa_api_.hsa_agent_get_info(agent, HSA_AGENT_INFO_DEVICE, &type);
|
||||
@@ -339,10 +338,11 @@ const AgentInfo* HsaRsrcFactory::AddAgentInfo(const hsa_agent_t agent) {
|
||||
|
||||
status =
|
||||
hsa_api_.hsa_amd_agent_iterate_memory_pools(agent, FindStandardPool, &agent_info->cpu_pool);
|
||||
if ((status == HSA_STATUS_INFO_BREAK) && (cpu_pool_ == NULL)) cpu_pool_ = &agent_info->cpu_pool;
|
||||
if ((status == HSA_STATUS_INFO_BREAK) && (cpu_pool_ == nullptr))
|
||||
cpu_pool_ = &agent_info->cpu_pool;
|
||||
status = hsa_api_.hsa_amd_agent_iterate_memory_pools(agent, FindKernArgPool,
|
||||
&agent_info->kern_arg_pool);
|
||||
if ((status == HSA_STATUS_INFO_BREAK) && (kern_arg_pool_ == NULL))
|
||||
if ((status == HSA_STATUS_INFO_BREAK) && (kern_arg_pool_ == nullptr))
|
||||
kern_arg_pool_ = &agent_info->kern_arg_pool;
|
||||
agent_info->gpu_pool = {};
|
||||
|
||||
@@ -362,7 +362,7 @@ const AgentInfo* HsaRsrcFactory::AddAgentInfo(const hsa_agent_t agent) {
|
||||
hsa_api_.hsa_agent_get_info(agent, HSA_AGENT_INFO_WAVEFRONT_SIZE, &agent_info->max_wave_size);
|
||||
hsa_api_.hsa_agent_get_info(agent, HSA_AGENT_INFO_QUEUE_MAX_SIZE, &agent_info->max_queue_size);
|
||||
hsa_api_.hsa_agent_get_info(agent, HSA_AGENT_INFO_PROFILE, &agent_info->profile);
|
||||
agent_info->is_apu = (agent_info->profile == HSA_PROFILE_FULL) ? true : false;
|
||||
agent_info->is_apu = agent_info->profile == HSA_PROFILE_FULL;
|
||||
hsa_api_.hsa_agent_get_info(
|
||||
agent, static_cast<hsa_agent_info_t>(HSA_AMD_AGENT_INFO_COMPUTE_UNIT_COUNT),
|
||||
&agent_info->cu_num);
|
||||
@@ -407,7 +407,7 @@ const AgentInfo* HsaRsrcFactory::AddAgentInfo(const hsa_agent_t agent) {
|
||||
|
||||
// Return systen agent info
|
||||
const AgentInfo* HsaRsrcFactory::GetAgentInfo(const hsa_agent_t agent) {
|
||||
const AgentInfo* agent_info = NULL;
|
||||
const AgentInfo* agent_info = nullptr;
|
||||
auto it = agent_map_.find(agent.handle);
|
||||
if (it != agent_map_.end()) {
|
||||
agent_info = it->second;
|
||||
@@ -482,8 +482,8 @@ bool HsaRsrcFactory::GetCpuAgentInfo(uint32_t idx, const AgentInfo** agent_info)
|
||||
bool HsaRsrcFactory::CreateQueue(const AgentInfo* agent_info, uint32_t num_pkts,
|
||||
hsa_queue_t** queue) {
|
||||
hsa_status_t status;
|
||||
status = hsa_api_.hsa_queue_create(agent_info->dev_id, num_pkts, HSA_QUEUE_TYPE_MULTI, NULL, NULL,
|
||||
UINT32_MAX, UINT32_MAX, queue);
|
||||
status = hsa_api_.hsa_queue_create(agent_info->dev_id, num_pkts, HSA_QUEUE_TYPE_MULTI, nullptr,
|
||||
nullptr, UINT32_MAX, UINT32_MAX, queue);
|
||||
return (status == HSA_STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
@@ -493,7 +493,7 @@ bool HsaRsrcFactory::CreateQueue(const AgentInfo* agent_info, uint32_t num_pkts,
|
||||
// @return bool true if successful, false otherwise
|
||||
bool HsaRsrcFactory::CreateSignal(uint32_t value, hsa_signal_t* signal) {
|
||||
hsa_status_t status;
|
||||
status = hsa_api_.hsa_signal_create(value, 0, NULL, signal);
|
||||
status = hsa_api_.hsa_signal_create(value, 0, nullptr, signal);
|
||||
return (status == HSA_STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
@@ -504,11 +504,11 @@ bool HsaRsrcFactory::CreateSignal(uint32_t value, hsa_signal_t* signal) {
|
||||
// @return uint8_t* Pointer to buffer, null if allocation fails.
|
||||
uint8_t* HsaRsrcFactory::AllocateLocalMemory(const AgentInfo* agent_info, size_t size) {
|
||||
hsa_status_t status = HSA_STATUS_ERROR;
|
||||
uint8_t* buffer = NULL;
|
||||
uint8_t* buffer = nullptr;
|
||||
size = (size + MEM_PAGE_MASK) & ~MEM_PAGE_MASK;
|
||||
status = hsa_api_.hsa_amd_memory_pool_allocate(agent_info->gpu_pool, size, 0,
|
||||
reinterpret_cast<void**>(&buffer));
|
||||
uint8_t* ptr = (status == HSA_STATUS_SUCCESS) ? buffer : NULL;
|
||||
uint8_t* ptr = (status == HSA_STATUS_SUCCESS) ? buffer : nullptr;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
@@ -519,7 +519,7 @@ uint8_t* HsaRsrcFactory::AllocateLocalMemory(const AgentInfo* agent_info, size_t
|
||||
// @return uint8_t* Pointer to buffer, null if allocation fails.
|
||||
uint8_t* HsaRsrcFactory::AllocateKernArgMemory(const AgentInfo* agent_info, size_t size) {
|
||||
hsa_status_t status = HSA_STATUS_ERROR;
|
||||
uint8_t* buffer = NULL;
|
||||
uint8_t* buffer = nullptr;
|
||||
if (!cpu_agents_.empty()) {
|
||||
size = (size + MEM_PAGE_MASK) & ~MEM_PAGE_MASK;
|
||||
status = hsa_api_.hsa_amd_memory_pool_allocate(*kern_arg_pool_, size, 0,
|
||||
@@ -527,10 +527,10 @@ uint8_t* HsaRsrcFactory::AllocateKernArgMemory(const AgentInfo* agent_info, size
|
||||
// Both the CPU and GPU can access the kernel arguments
|
||||
if (status == HSA_STATUS_SUCCESS) {
|
||||
hsa_agent_t ag_list[1] = {agent_info->dev_id};
|
||||
status = hsa_api_.hsa_amd_agents_allow_access(1, ag_list, NULL, buffer);
|
||||
status = hsa_api_.hsa_amd_agents_allow_access(1, ag_list, nullptr, buffer);
|
||||
}
|
||||
}
|
||||
uint8_t* ptr = (status == HSA_STATUS_SUCCESS) ? buffer : NULL;
|
||||
uint8_t* ptr = (status == HSA_STATUS_SUCCESS) ? buffer : nullptr;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
@@ -540,7 +540,7 @@ uint8_t* HsaRsrcFactory::AllocateKernArgMemory(const AgentInfo* agent_info, size
|
||||
// @return uint8_t* Pointer to buffer, null if allocation fails.
|
||||
uint8_t* HsaRsrcFactory::AllocateSysMemory(const AgentInfo* agent_info, size_t size) {
|
||||
hsa_status_t status = HSA_STATUS_ERROR;
|
||||
uint8_t* buffer = NULL;
|
||||
uint8_t* buffer = nullptr;
|
||||
size = (size + MEM_PAGE_MASK) & ~MEM_PAGE_MASK;
|
||||
if (!cpu_agents_.empty()) {
|
||||
status = hsa_api_.hsa_amd_memory_pool_allocate(*cpu_pool_, size, 0,
|
||||
@@ -548,10 +548,10 @@ uint8_t* HsaRsrcFactory::AllocateSysMemory(const AgentInfo* agent_info, size_t s
|
||||
// Both the CPU and GPU can access the memory
|
||||
if (status == HSA_STATUS_SUCCESS) {
|
||||
hsa_agent_t ag_list[1] = {agent_info->dev_id};
|
||||
status = hsa_api_.hsa_amd_agents_allow_access(1, ag_list, NULL, buffer);
|
||||
status = hsa_api_.hsa_amd_agents_allow_access(1, ag_list, nullptr, buffer);
|
||||
}
|
||||
}
|
||||
uint8_t* ptr = (status == HSA_STATUS_SUCCESS) ? buffer : NULL;
|
||||
uint8_t* ptr = (status == HSA_STATUS_SUCCESS) ? buffer : nullptr;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
@@ -562,8 +562,8 @@ uint8_t* HsaRsrcFactory::AllocateSysMemory(const AgentInfo* agent_info, size_t s
|
||||
uint8_t* HsaRsrcFactory::AllocateCmdMemory(const AgentInfo* agent_info, size_t size) {
|
||||
size = (size + MEM_PAGE_MASK) & ~MEM_PAGE_MASK;
|
||||
uint8_t* ptr = (agent_info->is_apu && CMD_MEMORY_MMAP)
|
||||
? reinterpret_cast<uint8_t*>(
|
||||
mmap(NULL, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_SHARED | MAP_ANONYMOUS, 0, 0))
|
||||
? reinterpret_cast<uint8_t*>(mmap(nullptr, size, PROT_READ | PROT_WRITE | PROT_EXEC,
|
||||
MAP_SHARED | MAP_ANONYMOUS, 0, 0))
|
||||
: AllocateSysMemory(agent_info, size);
|
||||
return ptr;
|
||||
}
|
||||
@@ -573,7 +573,7 @@ hsa_signal_value_t HsaRsrcFactory::SignalWait(const hsa_signal_t& signal,
|
||||
const hsa_signal_value_t& signal_value) const {
|
||||
const hsa_signal_value_t exp_value = signal_value - 1;
|
||||
hsa_signal_value_t ret_value = signal_value;
|
||||
while (1) {
|
||||
while (true) {
|
||||
ret_value = hsa_api_.hsa_signal_wait_scacquire(signal, HSA_SIGNAL_CONDITION_LT, signal_value,
|
||||
timeout_, HSA_WAIT_STATE_BLOCKED);
|
||||
if (ret_value == exp_value) break;
|
||||
@@ -599,9 +599,10 @@ bool HsaRsrcFactory::Memcpy(const hsa_agent_t& agent, void* dst, const void* src
|
||||
hsa_status_t status = HSA_STATUS_ERROR;
|
||||
if (!cpu_agents_.empty()) {
|
||||
hsa_signal_t s = {};
|
||||
status = hsa_api_.hsa_signal_create(1, 0, NULL, &s);
|
||||
status = hsa_api_.hsa_signal_create(1, 0, nullptr, &s);
|
||||
CHECK_STATUS("hsa_signal_create()", status);
|
||||
status = hsa_api_.hsa_amd_memory_async_copy(dst, cpu_agents_[0], src, agent, size, 0, NULL, s);
|
||||
status =
|
||||
hsa_api_.hsa_amd_memory_async_copy(dst, cpu_agents_[0], src, agent, size, 0, nullptr, s);
|
||||
CHECK_STATUS("hsa_amd_memory_async_copy()", status);
|
||||
SignalWait(s, 1);
|
||||
status = hsa_api_.hsa_signal_destroy(s);
|
||||
@@ -654,12 +655,12 @@ bool HsaRsrcFactory::LoadAndFinalize(const AgentInfo* agent_info, const char* br
|
||||
|
||||
// Create executable.
|
||||
status = hsa_api_.hsa_executable_create_alt(
|
||||
HSA_PROFILE_FULL, HSA_DEFAULT_FLOAT_ROUNDING_MODE_DEFAULT, NULL, executable);
|
||||
HSA_PROFILE_FULL, HSA_DEFAULT_FLOAT_ROUNDING_MODE_DEFAULT, nullptr, executable);
|
||||
CHECK_STATUS("Error in creating executable object", status);
|
||||
|
||||
// Load code object.
|
||||
status = hsa_api_.hsa_executable_load_agent_code_object(*executable, agent_info->dev_id,
|
||||
code_obj_rdr, NULL, NULL);
|
||||
code_obj_rdr, nullptr, nullptr);
|
||||
CHECK_STATUS("Error in loading executable object", status);
|
||||
|
||||
// Freeze executable.
|
||||
@@ -668,8 +669,8 @@ bool HsaRsrcFactory::LoadAndFinalize(const AgentInfo* agent_info, const char* br
|
||||
|
||||
// Get symbol handle.
|
||||
hsa_executable_symbol_t kernelSymbol;
|
||||
status = hsa_api_.hsa_executable_get_symbol(*executable, NULL, kernel_name, agent_info->dev_id, 0,
|
||||
&kernelSymbol);
|
||||
status = hsa_api_.hsa_executable_get_symbol(*executable, nullptr, kernel_name, agent_info->dev_id,
|
||||
0, &kernelSymbol);
|
||||
CHECK_STATUS("Error in looking up kernel symbol", status);
|
||||
|
||||
close(file_handle);
|
||||
@@ -799,7 +800,7 @@ hsa_status_t HsaRsrcFactory::executable_symbols_cb(hsa_executable_t exec,
|
||||
hsa_api_.hsa_executable_symbol_get_info(symbol, HSA_EXECUTABLE_SYMBOL_INFO_NAME, symname);
|
||||
CHECK_STATUS("Error in getting kernel name", status);
|
||||
symname[len] = 0;
|
||||
if (data == NULL) {
|
||||
if (data == nullptr) {
|
||||
const char* name = cpp_demangle(symname);
|
||||
auto ret = symbols_map_->insert({addr, name});
|
||||
if (ret.second == false) {
|
||||
@@ -816,16 +817,16 @@ hsa_status_t HsaRsrcFactory::executable_symbols_cb(hsa_executable_t exec,
|
||||
hsa_status_t HsaRsrcFactory::hsa_executable_freeze_interceptor(hsa_executable_t executable,
|
||||
const char* options) {
|
||||
std::lock_guard<mutex_t> lck(mutex_);
|
||||
if (symbols_map_ == NULL) symbols_map_ = new symbols_map_t;
|
||||
if (symbols_map_ == nullptr) symbols_map_ = new symbols_map_t;
|
||||
hsa_status_t status =
|
||||
hsa_api_.hsa_executable_iterate_symbols(executable, executable_symbols_cb, NULL);
|
||||
hsa_api_.hsa_executable_iterate_symbols(executable, executable_symbols_cb, nullptr);
|
||||
CHECK_STATUS("Error in iterating executable symbols", status);
|
||||
return hsa_api_.hsa_executable_freeze(executable, options);
|
||||
}
|
||||
|
||||
hsa_status_t HsaRsrcFactory::hsa_executable_destroy_interceptor(hsa_executable_t executable) {
|
||||
std::lock_guard<mutex_t> lck(mutex_);
|
||||
if (symbols_map_ != NULL) {
|
||||
if (symbols_map_ != nullptr) {
|
||||
hsa_status_t status =
|
||||
hsa_api_.hsa_executable_iterate_symbols(executable, executable_symbols_cb, (void*)1);
|
||||
CHECK_STATUS("Error in iterating executable symbols", status);
|
||||
@@ -838,8 +839,8 @@ HsaRsrcFactory::mutex_t HsaRsrcFactory::mutex_;
|
||||
HsaRsrcFactory::timestamp_t HsaRsrcFactory::timeout_ns_ = HsaTimer::TIMESTAMP_MAX;
|
||||
hsa_pfn_t HsaRsrcFactory::hsa_api_{};
|
||||
bool HsaRsrcFactory::executable_tracking_on_ = false;
|
||||
HsaRsrcFactory::symbols_map_t* HsaRsrcFactory::symbols_map_ = NULL;
|
||||
void* HsaRsrcFactory::to_dump_code_obj_ = NULL;
|
||||
HsaRsrcFactory::symbols_map_t* HsaRsrcFactory::symbols_map_ = nullptr;
|
||||
void* HsaRsrcFactory::to_dump_code_obj_ = nullptr;
|
||||
|
||||
} // namespace util
|
||||
} // namespace rocprofiler
|
||||
|
||||
@@ -19,14 +19,29 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
################################################################################
|
||||
cmake_minimum_required(VERSION 3.16.0)
|
||||
cmake_minimum_required(VERSION 3.18.0 FATAL_ERROR)
|
||||
set(EXE_NAME "rocprof-ctrl")
|
||||
|
||||
# Temporary up till we remove independant build of tests exists in the Jenkins side
|
||||
if(NOT DEFINED TEST_DIR)
|
||||
set(TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
project(${EXE_NAME} C CXX)
|
||||
# Set build environment
|
||||
include(env)
|
||||
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/../cmake_modules")
|
||||
include(rocprofiler_options)
|
||||
include(rocprofiler_utils)
|
||||
include(rocprofiler_env)
|
||||
include(rocprofiler_formatting)
|
||||
include(rocprofiler_linting)
|
||||
find_package(Threads REQUIRED)
|
||||
find_package(
|
||||
hsa-runtime64 REQUIRED CONFIG
|
||||
HINTS ${CMAKE_INSTALL_PREFIX}
|
||||
PATHS ${ROCM_PATH})
|
||||
find_package(
|
||||
HIP REQUIRED CONFIG
|
||||
HINTS ${CMAKE_INSTALL_PREFIX}
|
||||
PATHS ${ROCM_PATH})
|
||||
endif()
|
||||
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
@@ -136,8 +151,12 @@ foreach(target_id ${GPU_LIST})
|
||||
generate_hsaco(${target_id} ${TEST_DIR}/${DUMMY_NAME}/${DUMMY_NAME}.cl
|
||||
${target_id}_DummyKernel.hsaco)
|
||||
endforeach(target_id)
|
||||
add_custom_target(test DEPENDS ${HSACO_TARGET_LIST})
|
||||
add_custom_target(mytest DEPENDS ${HSACO_TARGET_LIST})
|
||||
#
|
||||
# NOTE (jomadsen): cannot create target named test because this is a reserved target name
|
||||
# -- cmake provides "test" target to run tests
|
||||
#
|
||||
# add_custom_target(test DEPENDS ${HSACO_TARGET_LIST})
|
||||
add_custom_target(mytest ALL DEPENDS ${HSACO_TARGET_LIST})
|
||||
add_custom_command(
|
||||
TARGET mytest
|
||||
POST_BUILD DEPENDS mytest
|
||||
@@ -183,9 +202,11 @@ target_include_directories(${EXE_NAME} PRIVATE ${TEST_DIR} ${ROOT_DIR}
|
||||
${PROJECT_SOURCE_DIR}/include)
|
||||
target_link_libraries(${EXE_NAME} hsa-runtime64::hsa-runtime64 hsakmt::hsakmt
|
||||
Threads::Threads stdc++fs dl)
|
||||
execute_process(COMMAND sh -xc "cp ${TEST_DIR}/run.sh ${PROJECT_BINARY_DIR}")
|
||||
execute_process(COMMAND sh -xc "cp ${TEST_DIR}/tool/*.xml ${PROJECT_BINARY_DIR}")
|
||||
execute_process(COMMAND sh -xc "mkdir -p ${PROJECT_BINARY_DIR}/RESULTS")
|
||||
|
||||
file(GLOB XML_FILES "${TEST_DIR}/tool/*.xml")
|
||||
configure_file(${TEST_DIR}/run.sh ${PROJECT_BINARY_DIR}/run.sh COPYONLY)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${XML_FILES} ${PROJECT_BINARY_DIR}/)
|
||||
|
||||
# TODO(aelwazir): Should be replaced by the current location in the main CMakeLists.txt
|
||||
install(
|
||||
TARGETS ${EXE_NAME}
|
||||
@@ -219,14 +240,14 @@ install(
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/${ROCPROFILER_NAME}
|
||||
COMPONENT asan)
|
||||
|
||||
# Build memory test bench
|
||||
add_custom_target(
|
||||
mbench
|
||||
COMMAND sh -xc "cp -r ${TEST_DIR}/memory_validation ${PROJECT_BINARY_DIR}/test/."
|
||||
COMMAND make -C "${PROJECT_BINARY_DIR}/test/memory_validation")
|
||||
add_test(NAME v1-tests COMMAND ${PROJECT_BINARY_DIR}/run.sh)
|
||||
set_tests_properties(
|
||||
v1-tests PROPERTIES LABELS "v1" ENVIRONMENT "${ROCPROFILER_MEMCHECK_PRELOAD_ENV}"
|
||||
RUN_SERIAL TRUE)
|
||||
|
||||
# Copy OCL test
|
||||
execute_process(COMMAND sh -xc "cp -r ${TEST_DIR}/ocl ${PROJECT_BINARY_DIR}/test/.")
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${TEST_DIR}/ocl
|
||||
${PROJECT_BINARY_DIR}/test/ocl)
|
||||
install(
|
||||
DIRECTORY ${TEST_DIR}/ocl
|
||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests-v1/test
|
||||
|
||||
@@ -50,8 +50,8 @@ void thread_fun(const int kiter, const int diter, const uint32_t agents_number)
|
||||
|
||||
for (int i = 0; i < kiter; ++i) {
|
||||
for (uint32_t n = 0; n < agents_number; ++n) {
|
||||
// RunKernel<DummyKernel, TestAql>(0, NULL, agent_info[n], queue[n], diter);
|
||||
RunKernel<SimpleConvolution, TestAql>(0, NULL, agent_info[n], queue[n], diter);
|
||||
RunKernel<DummyKernel, TestAql>(0, NULL, agent_info[n], queue[n], diter);
|
||||
// RunKernel<SimpleConvolution, TestAql>(0, NULL, agent_info[n], queue[n], diter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -299,10 +299,8 @@ hsa_status_t HsaRsrcFactory::LoadAqlProfileLib(aqlprofile_pfn_t* api) {
|
||||
(decltype(::hsa_ven_amd_aqlprofile_start)*)dlsym(handle, "hsa_ven_amd_aqlprofile_start");
|
||||
api->hsa_ven_amd_aqlprofile_stop =
|
||||
(decltype(::hsa_ven_amd_aqlprofile_stop)*)dlsym(handle, "hsa_ven_amd_aqlprofile_stop");
|
||||
#ifdef AQLPROF_NEW_API
|
||||
api->hsa_ven_amd_aqlprofile_read =
|
||||
(decltype(::hsa_ven_amd_aqlprofile_read)*)dlsym(handle, "hsa_ven_amd_aqlprofile_read");
|
||||
#endif
|
||||
api->hsa_ven_amd_aqlprofile_legacy_get_pm4 =
|
||||
(decltype(::hsa_ven_amd_aqlprofile_legacy_get_pm4)*)dlsym(
|
||||
handle, "hsa_ven_amd_aqlprofile_legacy_get_pm4");
|
||||
|
||||
@@ -1,30 +1,25 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <string_view>
|
||||
|
||||
#include "src/core/hardware/hsa_info.h"
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
testing::FLAGS_gtest_death_test_style = "threadsafe";
|
||||
// Add line below to disable any problematic test
|
||||
hsa_init();
|
||||
testing::GTEST_FLAG(filter) =
|
||||
"-OpenMPTest.*:ProfilerSPMTest.*:ProfilerMQTest.*:ProfilerMPTest.*:MPITest.*";
|
||||
// Disable ATT test fir gfx10 GPUs until its supported
|
||||
// iterate for gpu's
|
||||
hsa_iterate_agents(
|
||||
[](hsa_agent_t agent, void*) {
|
||||
char gpu_name[64];
|
||||
hsa_agent_get_info(agent, HSA_AGENT_INFO_NAME, gpu_name);
|
||||
std::string gfx_name = gpu_name;
|
||||
if (gfx_name.find("gfx10") != std::string::npos) {
|
||||
testing::GTEST_FLAG(filter) =
|
||||
"-ATTCollection.*:OpenMPTest.*:ProfilerSPMTest*:ProfilerMQTest.*:*ProfilerMPTest.*:"
|
||||
"MPITest.*";
|
||||
}
|
||||
return HSA_STATUS_SUCCESS;
|
||||
},
|
||||
nullptr);
|
||||
// Append filter above to disable any problematic test
|
||||
int res = RUN_ALL_TESTS();
|
||||
hsa_shut_down();
|
||||
return res;
|
||||
// read the command line arguments after above filters so it
|
||||
// does not override the command-line --gtest_filter argument
|
||||
bool skipInit = false;
|
||||
for (int i = 0; i < argc; i++) {
|
||||
if (std::string_view("--gtest_list_tests").compare(argv[i]) == 0 ||
|
||||
std::string_view("-h").compare(argv[i]) == 0 ||
|
||||
std::string_view("--help").compare(argv[i]) == 0) {
|
||||
skipInit = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!skipInit) hsa_init();
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
// hsa_shut_down(); // Waiting for hsa_shutdown bug to fix
|
||||
// Append filter above to disable any problematic test
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
||||
|
||||
@@ -28,6 +28,9 @@ set(CMAKE_EXECUTABLE_RPATH_LINK_HIP_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_F
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${ROCM_PATH}/lib/cmake/hip")
|
||||
set(CMAKE_HIP_ARCHITECTURES OFF)
|
||||
if(NOT DEFINED HIP_ROOT_DIR)
|
||||
set(HIP_ROOT_DIR "${CMAKE_INSTALL_PREFIX}")
|
||||
endif()
|
||||
find_package(HIP REQUIRED MODULE)
|
||||
|
||||
# Enable CLANG-TIDY for static analysis search for clang-tidy
|
||||
@@ -36,6 +39,28 @@ if(CLANG_TIDY_EXE)
|
||||
set(CMAKE_CXX_CLANG_TIDY ${CLANG_TIDY_EXE}; -format-style='file';
|
||||
-header-filter=${CMAKE_CURRENT_SOURCE_DIR};)
|
||||
endif()
|
||||
|
||||
# ########################################################################################
|
||||
|
||||
function(rocprofiler_featuretests_profiler_add_test _TARGET)
|
||||
if(TARGET ${_TARGET})
|
||||
if(NOT TEST ${_TARGET})
|
||||
add_test(
|
||||
NAME ${_TARGET}
|
||||
COMMAND $<TARGET_FILE:${_TARGET}>
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
|
||||
endif()
|
||||
set_tests_properties(
|
||||
${_TARGET} PROPERTIES LABELS "featuretests;profiler" ENVIRONMENT
|
||||
"${ROCPROFILER_MEMCHECK_PRELOAD_ENV}" ${ARGN})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(rocprofiler_featuretests_profiler_add_executable _TARGET)
|
||||
hip_add_executable(${_TARGET} ${ARGN})
|
||||
rocprofiler_featuretests_profiler_add_test(${_TARGET})
|
||||
endfunction()
|
||||
|
||||
# ########################################################################################
|
||||
# App Based FeatureTests
|
||||
# ########################################################################################
|
||||
@@ -53,7 +78,7 @@ endforeach()
|
||||
# Compile Applications hip_helloworld
|
||||
set_source_files_properties(apps/hello_world_hip.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT
|
||||
1)
|
||||
hip_add_executable(hip_helloworld apps/hello_world_hip.cpp)
|
||||
rocprofiler_featuretests_profiler_add_executable(hip_helloworld apps/hello_world_hip.cpp)
|
||||
set_target_properties(
|
||||
hip_helloworld PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
"${PROJECT_BINARY_DIR}/tests-v2/featuretests/profiler/apps")
|
||||
@@ -68,7 +93,7 @@ install(
|
||||
# hip_vectoradd
|
||||
set_source_files_properties(apps/vector_add_hip.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT
|
||||
1)
|
||||
hip_add_executable(hip_vectoradd apps/vector_add_hip.cpp)
|
||||
rocprofiler_featuretests_profiler_add_executable(hip_vectoradd apps/vector_add_hip.cpp)
|
||||
set_target_properties(
|
||||
hip_vectoradd PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
"${PROJECT_BINARY_DIR}/tests-v2/featuretests/profiler/apps")
|
||||
@@ -81,12 +106,22 @@ install(
|
||||
COMPONENT tests)
|
||||
|
||||
# mpi_vectoradd
|
||||
add_library(rocprofiler-tests-mpi INTERFACE)
|
||||
add_library(rocprofiler::tests-mpi ALIAS rocprofiler-tests-mpi)
|
||||
|
||||
find_package(MPI)
|
||||
if(MPI_CXX_FOUND)
|
||||
include_directories(SYSTEM ${MPI_INCLUDE_PATH})
|
||||
set(USE_MPI 1)
|
||||
target_compile_definitions(rocprofiler-tests-mpi INTERFACE USE_MPI=1)
|
||||
target_link_libraries(rocprofiler-tests-mpi INTERFACE stdc++fs ${MPI_C_LIBRARIES})
|
||||
target_include_directories(rocprofiler-tests-mpi INTERFACE ${MPI_INCLUDE_PATH})
|
||||
endif()
|
||||
|
||||
if(USE_MPI)
|
||||
set_source_files_properties(apps/vector_add_mpi.cpp
|
||||
PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(mpi_vectoradd apps/vector_add_mpi.cpp)
|
||||
rocprofiler_featuretests_profiler_add_executable(mpi_vectoradd
|
||||
apps/vector_add_mpi.cpp)
|
||||
set_target_properties(
|
||||
mpi_vectoradd
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
@@ -98,24 +133,50 @@ if(MPI_CXX_FOUND)
|
||||
DESTINATION
|
||||
${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests/featuretests/profiler/apps
|
||||
COMPONENT tests)
|
||||
target_link_libraries(mpi_vectoradd ${MPI_C_LIBRARIES} stdc++fs)
|
||||
target_link_libraries(mpi_vectoradd PRIVATE rocprofiler::tests-mpi)
|
||||
endif()
|
||||
|
||||
# openmp_helloworld find_package(hip REQUIRED) find_package(OpenMP) if(OpenMP_CXX_FOUND) #
|
||||
# Source files. set_source_files_properties(gtests/apps/openmp/hello_world.cpp PROPERTIES
|
||||
# HIP_SOURCE_PROPERTY_FORMAT 1) hip_add_executable(openmp_helloworld
|
||||
# gtests/apps/openmp/hello_world.cpp) set_target_properties(openmp_helloworld PROPERTIES
|
||||
# RUNTIME_OUTPUT_DIRECTORY
|
||||
# "${PROJECT_BINARY_DIR}/tests-v2/featuretests/profiler/gtests/apps")
|
||||
# openmp_helloworld
|
||||
add_library(rocprofiler-tests-openmp INTERFACE)
|
||||
add_library(rocprofiler::tests-openmp ALIAS rocprofiler-tests-openmp)
|
||||
|
||||
# # Link Libraries - HIP Device and OpenMP. target_compile_options(openmp_helloworld
|
||||
# PRIVATE ${OpenMP_CXX_FLAGS}) target_link_libraries(openmp_helloworld PRIVATE hip::device
|
||||
# ${OpenMP_CXX_FLAGS}) endif()
|
||||
find_package(OpenMP)
|
||||
if(OpenMP_CXX_FOUND)
|
||||
set(USE_OpenMP 1)
|
||||
target_compile_definitions(rocprofiler-tests-openmp INTERFACE USE_OpenMP=1)
|
||||
target_link_libraries(rocprofiler-tests-openmp INTERFACE OpenMP::OpenMP_CXX
|
||||
hip::device)
|
||||
elseif()
|
||||
message(WARNING "OpenMP not found")
|
||||
unset(USE_OpenMP)
|
||||
endif()
|
||||
|
||||
# if(USE_OpenMP)
|
||||
# set_source_files_properties(apps/hello_world_omp.cpp
|
||||
# PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
# rocprofiler_featuretests_profiler_add_executable(openmp_helloworld
|
||||
# apps/hello_world_omp.cpp)
|
||||
# set_target_properties(
|
||||
# openmp_helloworld
|
||||
# PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
# "${PROJECT_BINARY_DIR}/tests-v2/featuretests/profiler/apps")
|
||||
|
||||
# target_link_options(openmp_helloworld PRIVATE "-Wl,--build-id=md5")
|
||||
# target_link_libraries(openmp_helloworld PRIVATE rocprofiler::tests-openmp)
|
||||
|
||||
# install(
|
||||
# TARGETS openmp_helloworld
|
||||
# RUNTIME
|
||||
# DESTINATION
|
||||
# ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests/featuretests/profiler/apps
|
||||
# COMPONENT tests)
|
||||
# endif()
|
||||
|
||||
# hsa-mem_async_copy -- Not Enabled for Now
|
||||
set_source_files_properties(apps/async_mem_copy.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT
|
||||
1)
|
||||
hip_add_executable(hsa_async_mem_copy apps/async_mem_copy.cpp)
|
||||
rocprofiler_featuretests_profiler_add_executable(hsa_async_mem_copy
|
||||
apps/async_mem_copy.cpp)
|
||||
set_target_properties(
|
||||
hsa_async_mem_copy
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
@@ -147,8 +208,8 @@ file(GLOB GTEST_MAIN_SRC_FILE ${GTEST_MAIN_DIR}/gtests_main.cpp)
|
||||
|
||||
set_source_files_properties(apps/multithreaded_testapp.cpp
|
||||
PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(multithreaded_testapp apps/multithreaded_testapp.cpp
|
||||
../utils/test_utils.cpp)
|
||||
rocprofiler_featuretests_profiler_add_executable(
|
||||
multithreaded_testapp apps/multithreaded_testapp.cpp ../utils/test_utils.cpp)
|
||||
target_include_directories(
|
||||
multithreaded_testapp
|
||||
PRIVATE ${PROJECT_SOURCE_DIR}
|
||||
@@ -226,18 +287,20 @@ install(
|
||||
${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests/featuretests/profiler/apps
|
||||
COMPONENT tests)
|
||||
|
||||
# add_executable(profiler_multiqueue_test discretetests/binary/multiqueue_test.cpp
|
||||
# utils/csv_parser.cpp utils/test_utils.cpp)
|
||||
# target_include_directories(profiler_multiqueue_test PRIVATE ${PROJECT_SOURCE_DIR}
|
||||
# ${PROJECT_SOURCE_DIR}/tests-v2/featuretests/profiler)
|
||||
# target_link_libraries(profiler_multiqueue_test PRIVATE hsa-runtime64::hsa-runtime64
|
||||
# Threads::Threads dl stdc++fs amd_comgr) add_dependencies(tests profiler_multiqueue_test)
|
||||
set(runFeatureTests_SOURCES
|
||||
profiler_gtest.cpp apps/hip_kernels.cpp ${GTEST_MAIN_SRC_FILE} ${CORE_HSA_SRC_FILES}
|
||||
${CORE_HW_SRC_FILES} ${CORE_UTILS_SRC_FILES} ${TEST_UTILS_SRC_FILES})
|
||||
|
||||
set_source_files_properties(apps/hip_kernels.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(
|
||||
runFeatureTests profiler_gtest.cpp apps/hip_kernels.cpp ${GTEST_MAIN_SRC_FILE}
|
||||
${CORE_HSA_SRC_FILES} ${CORE_HW_SRC_FILES} ${CORE_UTILS_SRC_FILES}
|
||||
${TEST_UTILS_SRC_FILES})
|
||||
hip_add_executable(runFeatureTests ${runFeatureTests_SOURCES})
|
||||
|
||||
# link MPI and OpenMP to runFeatureTests for visibility
|
||||
if(USE_MPI)
|
||||
target_compile_definitions(runFeatureTests PRIVATE USE_MPI=1)
|
||||
endif()
|
||||
if(USE_OpenMP)
|
||||
target_compile_definitions(runFeatureTests PRIVATE USE_OpenMP=1)
|
||||
endif()
|
||||
|
||||
target_include_directories(
|
||||
runFeatureTests
|
||||
@@ -253,7 +316,40 @@ target_link_options(runFeatureTests PRIVATE "-Wl,--build-id=md5")
|
||||
install(TARGETS runFeatureTests
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests
|
||||
COMPONENT tests)
|
||||
add_test(AllTests runFeatureTests)
|
||||
|
||||
# add_test(AllTests runFeatureTests)
|
||||
include(GoogleTest)
|
||||
|
||||
set(GTEST_DISCOVER_TESTS_TARGET runFeatureTests)
|
||||
set(GTEST_DISCOVER_TESTS_LABELS "v2" "featuretests")
|
||||
set(GTEST_DISCOVER_TESTS_ENVIRONMENT ${ROCPROFILER_MEMCHECK_PRELOAD_ENV})
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/cmake_modules/Templates/gtest_discover_tests_properties.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/runFeatureTests_TestProperties.cmake @ONLY)
|
||||
|
||||
# we cannot do LD_PRELOAD during test discovery but test discovery displays disabled tests
|
||||
# in CDash so below is the work-around
|
||||
# Commenting the first temporarily up till is fixed on Jenkins dockers
|
||||
# if(NOT ROCPROFILER_MEMCHECK MATCHES "(Thread|Address)Sanitizer")
|
||||
# gtest_discover_tests(runFeatureTests)
|
||||
|
||||
# set_property(
|
||||
# DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||
# APPEND
|
||||
# PROPERTY TEST_INCLUDE_FILES
|
||||
# ${CMAKE_CURRENT_BINARY_DIR}/runFeatureTests_TestProperties.cmake)
|
||||
# else()
|
||||
gtest_add_tests(
|
||||
TARGET runFeatureTests
|
||||
SOURCES "${runFeatureTests_SOURCES}"
|
||||
TEST_LIST runFeatureTests_TESTS)
|
||||
include(${CMAKE_CURRENT_BINARY_DIR}/runFeatureTests_TestProperties.cmake)
|
||||
# endif()
|
||||
|
||||
# for the *_FilePlugin tests
|
||||
if(NOT EXISTS "${PROJECT_BINARY_DIR}/test-output")
|
||||
file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/test-output")
|
||||
endif()
|
||||
|
||||
# Copy scripts, input files to samples folder
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/apps/goldentraces/basic_metrics.txt
|
||||
@@ -268,3 +364,21 @@ install(
|
||||
DESTINATION
|
||||
${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests/featuretests/profiler/apps/goldentraces
|
||||
COMPONENT tests)
|
||||
|
||||
find_package(
|
||||
Python3
|
||||
COMPONENTS Interpreter
|
||||
REQUIRED)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${Python3_EXECUTABLE} -c "import pandas"
|
||||
RESULT_VARIABLE PANDAS_HEADER_PARSER
|
||||
OUTPUT_QUIET)
|
||||
if(NOT ${PANDAS_HEADER_PARSER} EQUAL 0)
|
||||
message(
|
||||
"The \"pandas\" Python3 package is not installed. \
|
||||
Please install it using the following command: \"${Python3_EXECUTABLE} -m pip install pandas\".")
|
||||
else()
|
||||
# cmake based tests
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/counter_validation_tests.cmake)
|
||||
endif()
|
||||
|
||||
+3
-10
@@ -4,14 +4,7 @@ Enabling Counter Collection
|
||||
ROCProfilerV2: Collecting the following counters:
|
||||
- GRBM_COUNT
|
||||
Enabling Counter Collection
|
||||
ROCProfilerV2: Collecting the following counters:
|
||||
- GRBM_COUNT
|
||||
Enabling Counter Collection
|
||||
device count and rank is8: 2
|
||||
Rank Id: 0 | Device Id : 0 | Num Devices: 8
|
||||
device count and rank is8: 2
|
||||
Rank Id: 1 | Device Id : 1 | Num Devices: 8
|
||||
device count and rank is1: 1
|
||||
Rank Id: 0 | Device Id : 0 | Num Devices: 1
|
||||
Max error: 0.000000
|
||||
Max error: 0.000000
|
||||
Dispatch_ID(1), GPU_ID(5), Queue_ID(1), Queue_Index(0), Process_ID(2185441), Thread_ID(2185441), Grid_Size(1048576), Workgroup_Size(256), LDS(0), Scratch_Size(0), Arch_VGPR(12), Accumulative_VGPR(4), SGPR(32), Wave_Size(64), Kernel_Name("add"), Begin_Timestamp(139857691152944), End_Timestamp(139857835223272), Correlation_ID(0), GRBM_COUNT(499551.000000)
|
||||
Dispatch_ID(1), GPU_ID(4), Queue_ID(1), Queue_Index(0), Process_ID(2185436), Thread_ID(2185436), Grid_Size(1048576), Workgroup_Size(256), LDS(0), Scratch_Size(0), Arch_VGPR(12), Accumulative_VGPR(4), SGPR(32), Wave_Size(64), Kernel_Name("add"), Begin_Timestamp(140429257347632), End_Timestamp(140429483317480), Correlation_ID(0), GRBM_COUNT(499406.000000)
|
||||
Dispatch_ID(1), GPU_ID(1), Queue_ID(1), Queue_Index(0), Process_ID(6293), Thread_ID(6293), Grid_Size(1048576), Workgroup_Size(256), LDS(0), Scratch_Size(0), Arch_VGPR(12), Accumulative_VGPR(0), SGPR(32), Wave_Size(64), Kernel_Name("add"), Begin_Timestamp(140016470724832), End_Timestamp(5), Correlation_ID(0), GRBM_COUNT(1108537.000000)
|
||||
|
||||
+2
-1
@@ -1,4 +1,5 @@
|
||||
ROCProfilerV2: Collecting the following counters:
|
||||
- GRBM_COUNT
|
||||
Enabling Counter Collection
|
||||
Dispatch_ID(1), GPU_ID(4), Queue_ID(1), Queue_Index(1), Process_ID(2186189), Thread_ID(2186189), Grid_Size(10), Workgroup_Size(10), LDS(0), Scratch_Size(0), Arch_VGPR(8), Accumulative_VGPR(0), SGPR(16), Wave_Size(64), Kernel_Name("helloworld"), Begin_Timestamp(140284033765472), End_Timestamp(140288419293408), Correlation_ID(0), GRBM_COUNT(13839.000000)
|
||||
PASSED!
|
||||
Dispatch_ID(1), GPU_ID(1), Queue_ID(1), Queue_Index(0), Process_ID(11822), Thread_ID(11822), Grid_Size(1), Workgroup_Size(1), LDS(0), Scratch_Size(0), Arch_VGPR(4), Accumulative_VGPR(0), SGPR(16), Wave_Size(64), Kernel_Name("hip_helloworld"), Begin_Timestamp(140470675179888), End_Timestamp(140470675179776), Correlation_ID(0), GRBM_COUNT(22315.000000)
|
||||
@@ -0,0 +1,32 @@
|
||||
# counter validation test - GRBM_COUNT
|
||||
add_test(
|
||||
NAME grbm_count_helloworld_test
|
||||
COMMAND
|
||||
${PROJECT_BINARY_DIR}/rocprofv2 -i
|
||||
${PROJECT_BINARY_DIR}/tests-v2/featuretests/profiler/apps/input.txt -d
|
||||
${PROJECT_BINARY_DIR}/out-grbm_count -o grbm
|
||||
tests-v2/featuretests/profiler/apps/hip_helloworld
|
||||
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}")
|
||||
|
||||
set_tests_properties(
|
||||
grbm_count_helloworld_test PROPERTIES LABELS "v2;rocprofv2" ENVIRONMENT
|
||||
"${ROCPROFILER_MEMCHECK_PRELOAD_ENV}")
|
||||
|
||||
add_test(
|
||||
NAME grbm_count_helloworld_test_validation
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/grbm_validate.py
|
||||
"out-grbm_count/pmc_1/results_grbm.csv"
|
||||
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}")
|
||||
|
||||
set_tests_properties(
|
||||
grbm_count_helloworld_test_validation
|
||||
PROPERTIES DEPENDS
|
||||
grbm_count_helloworld_test
|
||||
LABELS
|
||||
"v2;validation"
|
||||
PASS_REGULAR_EXPRESSION
|
||||
"Test Passed"
|
||||
FAIL_REGULAR_EXPRESSION
|
||||
"Test Failed"
|
||||
SKIP_REGULAR_EXPRESSION
|
||||
"Skipped")
|
||||
@@ -0,0 +1,27 @@
|
||||
import pandas as pd
|
||||
import sys
|
||||
|
||||
|
||||
def validate_grbm_count(filename):
|
||||
df = pd.read_csv(filename)
|
||||
|
||||
grbm_count = df.loc[0, "GRBM_COUNT"]
|
||||
|
||||
# Validate the data
|
||||
if not grbm_count < 0:
|
||||
print("Test Passed: grbm count is valid.")
|
||||
return 0
|
||||
else:
|
||||
print("Test Failed: grbm count is not valid.")
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
files = sys.argv[1:]
|
||||
if not files:
|
||||
raise RuntimeError("no input files provided")
|
||||
for filename in files:
|
||||
ec = validate_grbm_count(filename)
|
||||
if ec != 0:
|
||||
sys.stderr.write(f"{filename} did not pass validation\n")
|
||||
sys.exit(ec)
|
||||
@@ -99,6 +99,10 @@ void ApplicationParser::SetApplicationEnv(const char* app_name) {
|
||||
setenv("COUNTERS_PATH", counter_path.str().c_str(), true);
|
||||
|
||||
std::stringstream hsa_tools_lib_path;
|
||||
auto _existing_ld_preload = getenv("LD_PRELOAD");
|
||||
if (_existing_ld_preload && strnlen(_existing_ld_preload, 1) > 0)
|
||||
hsa_tools_lib_path << _existing_ld_preload << ":";
|
||||
|
||||
hsa_tools_lib_path << app_path << lib_path;
|
||||
|
||||
setenv("LD_PRELOAD", hsa_tools_lib_path.str().c_str(), true);
|
||||
@@ -247,9 +251,10 @@ TEST_F(HelloWorldTest, WhenRunningProfilerWithAppThenKernelNamessMatchWithGolden
|
||||
std::vector<profiler_kernel_info_t> current_kernel_info;
|
||||
GetKernelInfoForRunningApplication(¤t_kernel_info);
|
||||
|
||||
ASSERT_TRUE(current_kernel_info.size());
|
||||
ASSERT_TRUE(golden_kernel_info.size());
|
||||
EXPECT_EQ(golden_kernel_info[0].kernel_name, current_kernel_info[0].kernel_name);
|
||||
ASSERT_EQ(golden_kernel_info.size(), current_kernel_info.size());
|
||||
for (size_t i = 0; i < current_kernel_info.size(); ++i) {
|
||||
EXPECT_EQ(golden_kernel_info[i].kernel_name, current_kernel_info[i].kernel_name) << "i=" << i;
|
||||
}
|
||||
}
|
||||
|
||||
// Test:3 Compares order of kernel-names in golden output against current
|
||||
@@ -380,143 +385,106 @@ TEST_F(HSATest, WhenRunningProfilerWithAppThenKernelNumbersMatchWithGoldenOutput
|
||||
* ############ OpenMP Tests ################
|
||||
* ###################################################
|
||||
*/
|
||||
// #ifdef USE_OpenMP
|
||||
// class OpenMPTest : public ProfilerTest {
|
||||
// protected:
|
||||
// std::vector<profiler_kernel_info_t> golden_kernel_info;
|
||||
// void SetUp() {
|
||||
// ProfilerTest::SetUp("openmp_helloworld");
|
||||
// GetKernelInfoForGoldenOutput("openmp_helloworld", kGoldenOutputOpenMP, &golden_kernel_info);
|
||||
// }
|
||||
// };
|
||||
|
||||
class OpenMPTest : public ProfilerTest {
|
||||
// // Test:1 Compares total num of kernel-names in golden output against current
|
||||
// // profiler output
|
||||
// TEST_F(OpenMPTest, WhenRunningProfilerWithAppThenKernelNumbersMatchWithGoldenOutput) {
|
||||
// std::vector<profiler_kernel_info_t> current_kernel_info;
|
||||
|
||||
// GetKernelInfoForRunningApplication(¤t_kernel_info);
|
||||
// ASSERT_TRUE(current_kernel_info.size());
|
||||
|
||||
// EXPECT_EQ(golden_kernel_info.size(), current_kernel_info.size());
|
||||
// }
|
||||
|
||||
// // Test:2 Compares order of kernel-names in golden output against current
|
||||
// // profiler output
|
||||
// TEST_F(OpenMPTest, WhenRunningProfilerWithAppThenKernelNamesMatchWithGoldenOutput) {
|
||||
// std::vector<profiler_kernel_info_t> current_kernel_info;
|
||||
|
||||
// GetKernelInfoForRunningApplication(¤t_kernel_info);
|
||||
// ASSERT_TRUE(current_kernel_info.size());
|
||||
|
||||
// EXPECT_EQ(golden_kernel_info[0].kernel_name, current_kernel_info[0].kernel_name);
|
||||
// }
|
||||
|
||||
// // Test:3 Compares order of kernel-names in golden output against current
|
||||
// // profiler output
|
||||
// TEST_F(OpenMPTest, WhenRunningProfilerWithAppThenKernelDurationShouldBePositive) {
|
||||
// // kernel info in current profiler run
|
||||
// std::vector<profiler_kernel_info_t> current_kernel_info;
|
||||
|
||||
// GetKernelInfoForRunningApplication(¤t_kernel_info);
|
||||
// ASSERT_TRUE(current_kernel_info.size());
|
||||
|
||||
// EXPECT_GT(current_kernel_info.size(), 0);
|
||||
// }
|
||||
|
||||
// // Test:4 Compares end-time is greater than start-time in current
|
||||
// // profiler output
|
||||
// TEST_F(OpenMPTest, WhenRunningProfilerWithAppThenEndTimeIsGreaterThenStartTime) {
|
||||
// // kernel info in current profiler run
|
||||
// std::vector<profiler_kernel_info_t> current_kernel_info;
|
||||
|
||||
// GetKernelInfoForRunningApplication(¤t_kernel_info);
|
||||
// ASSERT_TRUE(current_kernel_info.size());
|
||||
|
||||
// for (auto& itr : current_kernel_info) {
|
||||
// if (!(itr.end_time).empty()) {
|
||||
// EXPECT_GT(itr.end_time, itr.begin_time);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// #endif
|
||||
/*
|
||||
* ###################################################
|
||||
* ############ MPI Tests ################
|
||||
* ###################################################
|
||||
*/
|
||||
#ifdef USE_MPI
|
||||
class MPITest : public ProfilerTest {
|
||||
protected:
|
||||
void ProcessMPIApplication(const char* app_name);
|
||||
void ExecuteAndParseApplication(std::stringstream& ss);
|
||||
|
||||
std::vector<profiler_kernel_info_t> golden_kernel_info;
|
||||
void SetUp() {
|
||||
ProfilerTest::SetUp("openmp_helloworld");
|
||||
GetKernelInfoForGoldenOutput("openmp_helloworld", kGoldenOutputOpenMP, &golden_kernel_info);
|
||||
/*To supress No protocol found prints*/
|
||||
setenv("HWLOC_COMPONENTS", "-gl", 1);
|
||||
ProfilerTest::SetUp("mpi_vectoradd");
|
||||
GetKernelInfoForGoldenOutput("mpi_vectoradd", kGoldenOutputMpi, &golden_kernel_info);
|
||||
}
|
||||
};
|
||||
|
||||
// Test:1 Compares total num of kernel-names in golden output against current
|
||||
// profiler output
|
||||
TEST_F(OpenMPTest, WhenRunningProfilerWithAppThenKernelNumbersMatchWithGoldenOutput) {
|
||||
// Test:1 if kernel-name exists in current profiler output
|
||||
TEST_F(MPITest, WhenRunningProfilerWithAppThenKernelNumbersOutputGenerated) {
|
||||
std::vector<profiler_kernel_info_t> current_kernel_info;
|
||||
|
||||
GetKernelInfoForRunningApplication(¤t_kernel_info);
|
||||
ASSERT_TRUE(current_kernel_info.size());
|
||||
|
||||
EXPECT_EQ(golden_kernel_info.size(), current_kernel_info.size());
|
||||
EXPECT_GT(current_kernel_info.size(), 0);
|
||||
}
|
||||
|
||||
// Test:2 Compares order of kernel-names in golden output against current
|
||||
// profiler output
|
||||
TEST_F(OpenMPTest, WhenRunningProfilerWithAppThenKernelNamessMatchWithGoldenOutput) {
|
||||
// Test:1 if kernel-name matches with golden output
|
||||
TEST_F(MPITest, WhenRunningProfilerWithAppThenKernelNameMatchWithGoldenOutput) {
|
||||
std::vector<profiler_kernel_info_t> current_kernel_info;
|
||||
|
||||
GetKernelInfoForRunningApplication(¤t_kernel_info);
|
||||
ASSERT_TRUE(current_kernel_info.size());
|
||||
|
||||
EXPECT_EQ(golden_kernel_info[0].kernel_name, current_kernel_info[0].kernel_name);
|
||||
EXPECT_EQ(golden_kernel_info[1].kernel_name, current_kernel_info[1].kernel_name);
|
||||
}
|
||||
|
||||
// Test:3 Compares order of kernel-names in golden output against current
|
||||
// profiler output
|
||||
TEST_F(OpenMPTest, WhenRunningProfilerWithAppThenKernelDurationShouldBePositive) {
|
||||
// kernel info in current profiler run
|
||||
std::vector<profiler_kernel_info_t> current_kernel_info;
|
||||
|
||||
GetKernelInfoForRunningApplication(¤t_kernel_info);
|
||||
ASSERT_TRUE(current_kernel_info.size());
|
||||
|
||||
EXPECT_GT(current_kernel_info.size(), 0);
|
||||
}
|
||||
|
||||
// Test:4 Compares end-time is greater than start-time in current
|
||||
// profiler output
|
||||
TEST_F(OpenMPTest, WhenRunningProfilerWithAppThenEndTimeIsGreaterThenStartTime) {
|
||||
// kernel info in current profiler run
|
||||
std::vector<profiler_kernel_info_t> current_kernel_info;
|
||||
|
||||
GetKernelInfoForRunningApplication(¤t_kernel_info);
|
||||
ASSERT_TRUE(current_kernel_info.size());
|
||||
|
||||
for (auto& itr : current_kernel_info) {
|
||||
if (!(itr.end_time).empty()) {
|
||||
EXPECT_GT(itr.end_time, itr.begin_time);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* ###################################################
|
||||
* ############ MPI Tests ################
|
||||
* ###################################################
|
||||
*/
|
||||
|
||||
class MPITest : public ProfilerTest {
|
||||
protected:
|
||||
void ProcessMPIApplication(const char* app_name);
|
||||
void ExecuteAndParseApplication(std::stringstream& ss);
|
||||
|
||||
void SetUp() {
|
||||
/*To supress No protocol found prints*/
|
||||
setenv("HWLOC_COMPONENTS", "-gl", 1);
|
||||
|
||||
// run as standalone test
|
||||
ProfilerTest::SetUp("mpi_vectoradd");
|
||||
|
||||
// run mpirun script
|
||||
// ProcessMPIApplication("mpi_run.sh");
|
||||
}
|
||||
|
||||
/*virtual void TearDown() override {
|
||||
unsetenv("HWLOC_COMPONENTS");
|
||||
unsetenv("LD_PRELOAD");
|
||||
ProfilerTest::TearDown();
|
||||
}*/
|
||||
};
|
||||
|
||||
void MPITest::ProcessMPIApplication(const char* app_name) {
|
||||
std::string app_path = GetRunningPath(running_path);
|
||||
std::string lib_path = app_path;
|
||||
|
||||
std::stringstream hsa_tools_lib_path;
|
||||
|
||||
hsa_tools_lib_path << app_path << "librocprofiler_tool.so";
|
||||
setenv("LD_PRELOAD", hsa_tools_lib_path.str().c_str(), true);
|
||||
|
||||
std::stringstream os;
|
||||
os << app_path << "tests/featuretests/profiler/apps/" << app_name;
|
||||
ExecuteAndParseApplication(os);
|
||||
}
|
||||
|
||||
void MPITest::ExecuteAndParseApplication(std::stringstream& ss) {
|
||||
FILE* handle = popen(ss.str().c_str(), "r");
|
||||
ASSERT_NE(handle, nullptr);
|
||||
char* ln{NULL};
|
||||
std::string temp{""};
|
||||
size_t len{0};
|
||||
|
||||
while (getline(&ln, &len, handle) != -1) {
|
||||
temp = temp + std::string(ln);
|
||||
}
|
||||
|
||||
free(ln);
|
||||
size_t pos{0};
|
||||
std::string delimiter{"\n"};
|
||||
while ((pos = temp.find(delimiter)) != std::string::npos) {
|
||||
output_lines.push_back(temp.substr(0, pos));
|
||||
temp.erase(0, pos + delimiter.length());
|
||||
}
|
||||
|
||||
pclose(handle);
|
||||
}
|
||||
|
||||
// Test:1 Compares total num of kernel-names in golden output against current
|
||||
// profiler output
|
||||
TEST_F(MPITest, WhenRunningProfilerWithAppThenKernelNumbersMatchWithGoldenOutput) {
|
||||
std::vector<profiler_kernel_info_t> current_kernel_info;
|
||||
|
||||
GetKernelInfoForRunningApplication(¤t_kernel_info);
|
||||
ASSERT_TRUE(current_kernel_info.size());
|
||||
|
||||
EXPECT_GT(current_kernel_info.size(), 0);
|
||||
}
|
||||
|
||||
#endif
|
||||
/*
|
||||
* ###################################################
|
||||
* ############ HSA Load Unload Tests ################
|
||||
@@ -586,8 +554,8 @@ TEST_F(LoadUnloadTest, WhenLoadingSecondTimeThenToolLoadsUnloadsSuccessfully) {
|
||||
|
||||
class ATTCollection : public ::testing::Test {
|
||||
public:
|
||||
virtual void SetUp() { bCollected = false; };
|
||||
virtual void TearDown(){};
|
||||
void SetUp() override { bCollected = false; };
|
||||
void TearDown() override{};
|
||||
static bool bCollected;
|
||||
|
||||
static void FlushCallback(const rocprofiler_record_header_t* record,
|
||||
@@ -625,11 +593,42 @@ class ATTCollection : public ::testing::Test {
|
||||
bool ATTCollection::bCollected = false;
|
||||
|
||||
TEST_F(ATTCollection, WhenRunningATTItCollectsTraceDataWithOldAPI) {
|
||||
// iterate for gpu's
|
||||
struct agent_info {
|
||||
bool skip = false;
|
||||
std::vector<std::string> agents = {};
|
||||
|
||||
auto as_string() const {
|
||||
auto _ss = std::stringstream{};
|
||||
for (const auto& itr : agents) _ss << ", " << itr;
|
||||
auto _v = _ss.str();
|
||||
if (_v.length() > 2) return _v.substr(2);
|
||||
return _v;
|
||||
}
|
||||
};
|
||||
|
||||
auto _info = agent_info{};
|
||||
hsa_iterate_agents(
|
||||
[](hsa_agent_t agent, void* _arg) {
|
||||
agent_info* _info_v = static_cast<agent_info*>(_arg);
|
||||
EXPECT_NE(_info_v, nullptr);
|
||||
char gpu_name[64] = {'\0'};
|
||||
hsa_agent_get_info(agent, HSA_AGENT_INFO_NAME, gpu_name);
|
||||
_info_v->agents.emplace_back(std::string{gpu_name});
|
||||
if (std::regex_search(_info_v->agents.back(), std::regex{"^gfx1[0-1][0-9][0-9]"})) {
|
||||
_info_v->skip = true;
|
||||
}
|
||||
return HSA_STATUS_SUCCESS;
|
||||
},
|
||||
static_cast<void*>(&_info));
|
||||
|
||||
if (_info.skip) GTEST_SKIP();
|
||||
|
||||
int result = ROCPROFILER_STATUS_ERROR;
|
||||
|
||||
// inititalize ROCProfiler
|
||||
result = rocprofiler_initialize();
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// Att trace collection parameters
|
||||
rocprofiler_session_id_t session_id;
|
||||
@@ -642,12 +641,12 @@ TEST_F(ATTCollection, WhenRunningATTItCollectsTraceDataWithOldAPI) {
|
||||
|
||||
// create a session
|
||||
result = rocprofiler_create_session(ROCPROFILER_NONE_REPLAY_MODE, &session_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// create a buffer to hold att trace records for each kernel launch
|
||||
rocprofiler_buffer_id_t buffer_id;
|
||||
result = rocprofiler_create_buffer(session_id, FlushCallback, 0x9999, &buffer_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// create a filter for collecting att traces
|
||||
rocprofiler_filter_id_t filter_id;
|
||||
@@ -655,65 +654,93 @@ TEST_F(ATTCollection, WhenRunningATTItCollectsTraceDataWithOldAPI) {
|
||||
result = rocprofiler_create_filter(session_id, ROCPROFILER_ATT_TRACE_COLLECTION,
|
||||
rocprofiler_filter_data_t{.att_parameters = ¶meters[0]},
|
||||
parameters.size(), &filter_id, property);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// set buffer for the filter
|
||||
result = rocprofiler_set_filter_buffer(session_id, filter_id, buffer_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// activating att tracing session
|
||||
result = rocprofiler_start_session(session_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// Launch a kernel
|
||||
LaunchVectorAddKernel();
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// deactivate att tracing session
|
||||
result = rocprofiler_terminate_session(session_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// dump att tracing data
|
||||
result = rocprofiler_flush_data(session_id, buffer_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// destroy session
|
||||
result = rocprofiler_destroy_session(session_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// finalize att tracing by destroying rocprofiler object
|
||||
result = rocprofiler_finalize();
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result) << "agents: " << _info.as_string();
|
||||
|
||||
// check if we got data from any shader engine
|
||||
EXPECT_EQ(bCollected, true);
|
||||
EXPECT_EQ(bCollected, true) << "agents: " << _info.as_string();
|
||||
}
|
||||
|
||||
// New API
|
||||
TEST_F(ATTCollection, WhenRunningATTItCollectsTraceDataWithNewAPI) {
|
||||
int result = ROCPROFILER_STATUS_ERROR;
|
||||
// iterate for gpu's
|
||||
struct agent_info {
|
||||
bool skip = false;
|
||||
std::vector<std::string> agents = {};
|
||||
|
||||
auto as_string() const {
|
||||
auto _ss = std::stringstream{};
|
||||
for (const auto& itr : agents) _ss << ", " << itr;
|
||||
auto _v = _ss.str();
|
||||
if (_v.length() > 2) return _v.substr(2);
|
||||
return _v;
|
||||
}
|
||||
};
|
||||
|
||||
auto _info = agent_info{};
|
||||
hsa_iterate_agents(
|
||||
[](hsa_agent_t agent, void* _arg) {
|
||||
agent_info* _info_v = static_cast<agent_info*>(_arg);
|
||||
EXPECT_NE(_info_v, nullptr);
|
||||
char gpu_name[64] = {'\0'};
|
||||
hsa_agent_get_info(agent, HSA_AGENT_INFO_NAME, gpu_name);
|
||||
_info_v->agents.emplace_back(std::string{gpu_name});
|
||||
if (std::regex_search(_info_v->agents.back(), std::regex{"^gfx1[0-1][0-9][0-9]"})) {
|
||||
_info_v->skip = true;
|
||||
}
|
||||
return HSA_STATUS_SUCCESS;
|
||||
},
|
||||
static_cast<void*>(&_info));
|
||||
|
||||
if (_info.skip) GTEST_SKIP();
|
||||
|
||||
int result = ROCPROFILER_STATUS_ERROR;
|
||||
// inititalize ROCProfiler
|
||||
result = rocprofiler_initialize();
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// Att trace collection parameters
|
||||
rocprofiler_session_id_t session_id;
|
||||
std::vector<rocprofiler_att_parameter_t> parameters;
|
||||
parameters.emplace_back(rocprofiler_att_parameter_t{ROCPROFILER_ATT_COMPUTE_UNIT, 0});
|
||||
parameters.emplace_back(rocprofiler_att_parameter_t{ROCPROFILER_ATT_SE_MASK, 0xF});
|
||||
parameters.emplace_back(rocprofiler_att_parameter_t{ROCPROFILER_ATT_SIMD_SELECT, 0x3}); // Replace below tests once aqlprofile passes
|
||||
parameters.emplace_back(rocprofiler_att_parameter_t{ROCPROFILER_ATT_BUFFER_SIZE, 0x1000000}); // Replace below tests once aqlprofile passes
|
||||
|
||||
parameters.emplace_back(rocprofiler_att_parameter_t{
|
||||
ROCPROFILER_ATT_SIMD_SELECT, 0x3}); // Replace below tests once aqlprofile passes
|
||||
parameters.emplace_back(rocprofiler_att_parameter_t{
|
||||
ROCPROFILER_ATT_BUFFER_SIZE, 0x1000000}); // Replace below tests once aqlprofile passes
|
||||
// create a session
|
||||
result = rocprofiler_create_session(ROCPROFILER_NONE_REPLAY_MODE, &session_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// create a buffer to hold att trace records for each kernel launch
|
||||
rocprofiler_buffer_id_t buffer_id;
|
||||
result = rocprofiler_create_buffer(session_id, FlushCallback, 0x9999, &buffer_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// create a filter for collecting att traces
|
||||
rocprofiler_filter_id_t filter_id;
|
||||
rocprofiler_filter_property_t property = {};
|
||||
@@ -721,35 +748,27 @@ TEST_F(ATTCollection, WhenRunningATTItCollectsTraceDataWithNewAPI) {
|
||||
rocprofiler_filter_data_t{.att_parameters = ¶meters[0]},
|
||||
parameters.size(), &filter_id, property);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// set buffer for the filter
|
||||
result = rocprofiler_set_filter_buffer(session_id, filter_id, buffer_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// activating att tracing session
|
||||
result = rocprofiler_start_session(session_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// Launch a kernel
|
||||
LaunchVectorAddKernel();
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// deactivate att tracing session
|
||||
result = rocprofiler_terminate_session(session_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// dump att tracing data
|
||||
result = rocprofiler_flush_data(session_id, buffer_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// destroy session
|
||||
result = rocprofiler_destroy_session(session_id);
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// finalize att tracing by destroying rocprofiler object
|
||||
result = rocprofiler_finalize();
|
||||
EXPECT_EQ(ROCPROFILER_STATUS_SUCCESS, result);
|
||||
|
||||
// check if we got data from any shader engine
|
||||
EXPECT_EQ(bCollected, true);
|
||||
}
|
||||
@@ -767,6 +786,7 @@ class ProfilerAPITest : public ::testing::Test {
|
||||
std::stringstream gfx_path;
|
||||
gfx_path << app_path << metrics_path;
|
||||
setenv("ROCPROFILER_METRICS_PATH", gfx_path.str().c_str(), true);
|
||||
setenv("ROCPROFILER_MAX_ATT_PROFILES", "2", 1);
|
||||
}
|
||||
// function to check profiler API status
|
||||
static void CheckApi(rocprofiler_status_t status) {
|
||||
@@ -932,96 +952,6 @@ TEST_F(DerivedMetricsReuseTest, WhenRunningRepeatedBaseMetricsAPIsWorkFine) {
|
||||
CheckApi(rocprofiler_finalize());
|
||||
}
|
||||
|
||||
/*
|
||||
* ###################################################
|
||||
* ############ SPM Tests ################
|
||||
* ###################################################
|
||||
*/
|
||||
|
||||
class ProfilerSPMTest : public ::testing::Test {
|
||||
// function to check spm tracing API status
|
||||
protected:
|
||||
// function to check profiler API status
|
||||
static void CheckApi(rocprofiler_status_t status) {
|
||||
ASSERT_EQ(status, ROCPROFILER_STATUS_SUCCESS);
|
||||
};
|
||||
|
||||
static void FlushCallback(const rocprofiler_record_header_t* record,
|
||||
const rocprofiler_record_header_t* end_record,
|
||||
rocprofiler_session_id_t session_id,
|
||||
rocprofiler_buffer_id_t buffer_id) {
|
||||
while (record < end_record) {
|
||||
if (!record)
|
||||
break;
|
||||
else if (record->kind == ROCPROFILER_SPM_RECORD) {
|
||||
const rocprofiler_record_spm_t* spm_record =
|
||||
reinterpret_cast<const rocprofiler_record_spm_t*>(record);
|
||||
int se_num = 4;
|
||||
// iterate over each shader engine
|
||||
for (int i = 0; i < se_num; i++) {
|
||||
printf("\n\n-------------- shader_engine %d --------------\n\n", i);
|
||||
rocprofiler_record_se_spm_data_t se_spm = spm_record->shader_engine_data[i];
|
||||
for (int i = 0; i < 32; i++) {
|
||||
printf("%04x\n", se_spm.counters_data[i].value);
|
||||
}
|
||||
}
|
||||
}
|
||||
CheckApi(rocprofiler_next_record(record, &record, session_id, buffer_id));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(ProfilerSPMTest, WhenRunningSPMItCollectsSPMData) {
|
||||
// initialize rocprofiler
|
||||
hsa_init();
|
||||
CheckApi(rocprofiler_initialize());
|
||||
|
||||
// spm trace collection parameters
|
||||
rocprofiler_session_id_t session_id;
|
||||
rocprofiler_spm_parameter_t spm_parameters;
|
||||
const char* counter_name = "SQ_WAVES";
|
||||
spm_parameters.counters_names = &counter_name;
|
||||
spm_parameters.counters_count = 1;
|
||||
spm_parameters.gpu_agent_id = NULL;
|
||||
// spm_parameters.cpu_agent_id = NULL;
|
||||
spm_parameters.sampling_rate = 10000;
|
||||
// create a session
|
||||
CheckApi(rocprofiler_create_session(ROCPROFILER_NONE_REPLAY_MODE, &session_id));
|
||||
|
||||
// create a buffer to hold spm trace records for each kernel launch
|
||||
rocprofiler_buffer_id_t buffer_id;
|
||||
CheckApi(rocprofiler_create_buffer(session_id, FlushCallback, 0x99999999, &buffer_id));
|
||||
|
||||
// create a filter for collecting spm traces
|
||||
rocprofiler_filter_id_t filter_id;
|
||||
rocprofiler_filter_property_t property = {};
|
||||
CheckApi(rocprofiler_create_filter(session_id, ROCPROFILER_SPM_COLLECTION,
|
||||
rocprofiler_filter_data_t{.spm_parameters = &spm_parameters},
|
||||
1, &filter_id, property));
|
||||
|
||||
// set buffer for the filter
|
||||
CheckApi(rocprofiler_set_filter_buffer(session_id, filter_id, buffer_id));
|
||||
|
||||
// activating spm tracing session
|
||||
CheckApi(rocprofiler_start_session(session_id));
|
||||
|
||||
// Launch a kernel
|
||||
LaunchVectorAddKernel();
|
||||
|
||||
// deactivate spm tracing session
|
||||
// dump spm tracing data
|
||||
//
|
||||
CheckApi(rocprofiler_terminate_session(session_id));
|
||||
// CheckApi(rocprofiler_flush_data(session_id, buffer_id));
|
||||
|
||||
// destroy session
|
||||
CheckApi(rocprofiler_destroy_session(session_id));
|
||||
|
||||
// finalize spm tracing by destroying rocprofiler object
|
||||
CheckApi(rocprofiler_finalize());
|
||||
hsa_shut_down();
|
||||
}
|
||||
|
||||
/*
|
||||
* ###################################################
|
||||
* ############ Multi Thread Binary Tests ############
|
||||
@@ -1222,13 +1152,13 @@ TEST(ProfilerMPTest, WhenRunningMultiProcessTestItPasses) {
|
||||
*/
|
||||
|
||||
class CodeobjTest : public ::testing::Test {
|
||||
public:
|
||||
virtual void SetUp(const char* app_name) {};
|
||||
public:
|
||||
virtual void SetUp(const char* app_name){};
|
||||
virtual void TearDown(){};
|
||||
static void FlushCallback(const rocprofiler_record_header_t* record,
|
||||
const rocprofiler_record_header_t* end_record,
|
||||
rocprofiler_session_id_t session_id,
|
||||
rocprofiler_buffer_id_t buffer_id) {};
|
||||
rocprofiler_buffer_id_t buffer_id){};
|
||||
|
||||
void SetupRocprofiler() {
|
||||
int result = ROCPROFILER_STATUS_ERROR;
|
||||
@@ -1279,7 +1209,7 @@ TEST_F(CodeobjTest, WhenRunningProfilerWithCodeobjCapture) {
|
||||
EXPECT_GE(capture.count, 1);
|
||||
bool bCaptured_itself = false;
|
||||
|
||||
for (int i=0; i<(int)capture.count; i++) {
|
||||
for (int i = 0; i < (int)capture.count; i++) {
|
||||
const char* path = capture.symbols[i].filepath;
|
||||
if (!path) continue;
|
||||
std::string fpath(path);
|
||||
@@ -1334,7 +1264,7 @@ TEST_F(CodeobjTest, WhenRunningProfilerWithMultipleCaptureAndCopy) {
|
||||
|
||||
EXPECT_GE(capture.count, 1);
|
||||
|
||||
for (int i=0; i<(int)capture.count; i++) {
|
||||
for (int i = 0; i < (int)capture.count; i++) {
|
||||
EXPECT_NE(capture.symbols[i].base_address, 0);
|
||||
EXPECT_NE(capture.symbols[i].clock_start.value, 0);
|
||||
EXPECT_NE(capture.symbols[i].data, nullptr);
|
||||
@@ -1445,7 +1375,8 @@ class VectorAddPerfettoMPITest : public PerfettoPluginTest {
|
||||
protected:
|
||||
virtual void SetUp() {
|
||||
setenv("MPI_RANK", "7", true);
|
||||
RunApplication("hip_vectoradd", " -d /tmp/tests-v2/perfetto/ -o test_%q{MPI_RANK}_ --plugin perfetto");
|
||||
RunApplication("hip_vectoradd",
|
||||
" -d /tmp/tests-v2/perfetto/ -o test_%q{MPI_RANK}_ --plugin perfetto");
|
||||
}
|
||||
virtual void TearDown() {
|
||||
std::experimental::filesystem::remove_all("/tmp/tests-v2/perfetto/");
|
||||
@@ -1459,7 +1390,8 @@ TEST_F(VectorAddPerfettoMPITest, WhenRunningProfilerWithPerfettoTest) {
|
||||
}
|
||||
|
||||
bool CTFPluginTest::hasMetadataInDir(const char* directory) {
|
||||
for (const auto& entry : std::experimental::filesystem::directory_iterator(directory))
|
||||
auto path = std::experimental::filesystem::directory_iterator(directory)->path();
|
||||
for (const auto& entry : std::experimental::filesystem::directory_iterator(path))
|
||||
if (std::string(entry.path().filename()) == "metadata") return true;
|
||||
return false;
|
||||
}
|
||||
@@ -1471,7 +1403,7 @@ class VectorAddCTFTest : public CTFPluginTest {
|
||||
std::experimental::filesystem::remove_all("/tmp/tests-v2/");
|
||||
unsetenv("MPI_RANK");
|
||||
}
|
||||
bool hasFile() { return hasMetadataInDir("/tmp/tests-v2/ctf/trace/"); }
|
||||
bool hasFile() { return hasMetadataInDir("/tmp/tests-v2/ctf/"); }
|
||||
};
|
||||
|
||||
TEST_F(VectorAddCTFTest, WhenRunningProfilerWithCTFTest) { EXPECT_EQ(hasFile(), true); }
|
||||
@@ -1486,7 +1418,7 @@ class VectorAddCTFMPITest : public CTFPluginTest {
|
||||
std::experimental::filesystem::remove_all("/tmp/tests-v2/");
|
||||
unsetenv("MPI_RANK");
|
||||
}
|
||||
bool hasFile() { return hasMetadataInDir("/tmp/tests-v2/ctf_7/trace/"); }
|
||||
bool hasFile() { return hasMetadataInDir("/tmp/tests-v2/ctf_7/"); }
|
||||
};
|
||||
|
||||
TEST_F(VectorAddCTFMPITest, WhenRunningProfilerWithCTFTest) { EXPECT_EQ(hasFile(), true); }
|
||||
|
||||
@@ -6,8 +6,32 @@ set(CMAKE_EXECUTABLE_RPATH_LINK_HIP_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_F
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${ROCM_PATH}/lib/cmake/hip")
|
||||
set(CMAKE_HIP_ARCHITECTURES OFF)
|
||||
if(DEFINED ROCM_PATH)
|
||||
set(HIP_ROOT_DIR "${ROCM_PATH}/bin")
|
||||
endif()
|
||||
find_package(HIP REQUIRED MODULE)
|
||||
|
||||
# ########################################################################################
|
||||
function(rocprofiler_featuretests_tracer_add_test _TARGET)
|
||||
if(TARGET ${_TARGET})
|
||||
if(NOT TEST ${_TARGET})
|
||||
add_test(
|
||||
NAME ${_TARGET}
|
||||
COMMAND $<TARGET_FILE:${_TARGET}>
|
||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
|
||||
endif()
|
||||
|
||||
set_tests_properties(
|
||||
${_TARGET} PROPERTIES LABELS "featuretests;tracer" ENVIRONMENT
|
||||
"${ROCPROFILER_MEMCHECK_PRELOAD_ENV}" ${ARGN})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(rocprofiler_featuretests_tracer_add_executable _TARGET)
|
||||
hip_add_executable(${_TARGET} ${ARGN})
|
||||
rocprofiler_featuretests_tracer_add_test(${_TARGET})
|
||||
endfunction()
|
||||
|
||||
# Setup testing
|
||||
enable_testing()
|
||||
find_package(GTest REQUIRED)
|
||||
@@ -29,7 +53,7 @@ file(GLOB GTEST_MAIN_SRC_FILE ${GTEST_MAIN_DIR}/*.cpp)
|
||||
|
||||
# Compile Applications hip_helloworld
|
||||
set_source_files_properties(apps/hello_world.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(tracer_hip_helloworld apps/hello_world.cpp)
|
||||
rocprofiler_featuretests_tracer_add_executable(tracer_hip_helloworld apps/hello_world.cpp)
|
||||
set_target_properties(
|
||||
tracer_hip_helloworld
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
@@ -45,7 +69,7 @@ install(
|
||||
# hsa-mem_async_copy and async_copy_on_engine
|
||||
set_source_files_properties(apps/copy_on_engine.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT
|
||||
1)
|
||||
hip_add_executable(copy_on_engine apps/copy_on_engine.cpp)
|
||||
rocprofiler_featuretests_tracer_add_executable(copy_on_engine apps/copy_on_engine.cpp)
|
||||
set_target_properties(
|
||||
copy_on_engine PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
"${PROJECT_BINARY_DIR}/tests-v2/featuretests/tracer/apps")
|
||||
@@ -60,24 +84,27 @@ target_link_libraries(copy_on_engine hsa-runtime64::hsa-runtime64 Threads::Threa
|
||||
stdc++fs)
|
||||
|
||||
# Compile MatrixTranspose App with ROCTX
|
||||
find_library(ROCTX_LIBRARY NAMES roctx64 HINTS ${ROCM_PATH}/lib)
|
||||
find_library(
|
||||
ROCTX_LIBRARY
|
||||
NAMES roctx64
|
||||
HINTS ${ROCM_PATH}/lib)
|
||||
if(ROCTX_LIBRARY)
|
||||
set_source_files_properties(apps/MatrixTranspose.cpp PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(tracer_matrix_transpose apps/MatrixTranspose.cpp)
|
||||
set_target_properties(
|
||||
tracer_matrix_transpose
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
"${PROJECT_BINARY_DIR}/tests-v2/featuretests/tracer/apps")
|
||||
target_link_options(tracer_matrix_transpose PRIVATE "-Wl,--build-id=md5")
|
||||
target_include_directories(
|
||||
tracer_matrix_transpose PRIVATE ${ROCM_PATH})
|
||||
target_link_libraries(tracer_matrix_transpose ${ROCTX_LIBRARY})
|
||||
install(
|
||||
TARGETS tracer_matrix_transpose
|
||||
RUNTIME
|
||||
DESTINATION
|
||||
${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests/featuretests/tracer/apps
|
||||
COMPONENT tests)
|
||||
set_source_files_properties(apps/MatrixTranspose.cpp
|
||||
PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(tracer_matrix_transpose apps/MatrixTranspose.cpp)
|
||||
set_target_properties(
|
||||
tracer_matrix_transpose
|
||||
PROPERTIES RUNTIME_OUTPUT_DIRECTORY
|
||||
"${PROJECT_BINARY_DIR}/tests-v2/featuretests/tracer/apps")
|
||||
target_link_options(tracer_matrix_transpose PRIVATE "-Wl,--build-id=md5")
|
||||
target_include_directories(tracer_matrix_transpose PRIVATE ${ROCM_PATH})
|
||||
target_link_libraries(tracer_matrix_transpose ${ROCTX_LIBRARY})
|
||||
install(
|
||||
TARGETS tracer_matrix_transpose
|
||||
RUNTIME
|
||||
DESTINATION
|
||||
${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests/featuretests/tracer/apps
|
||||
COMPONENT tests)
|
||||
endif()
|
||||
|
||||
# Add test cpp file
|
||||
@@ -102,3 +129,11 @@ install(
|
||||
DESTINATION
|
||||
${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests/featuretests/tracer/apps/goldentraces
|
||||
COMPONENT tests)
|
||||
|
||||
find_package(
|
||||
Python3
|
||||
COMPONENTS Interpreter
|
||||
REQUIRED)
|
||||
|
||||
# cmake based tests
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/hiptrace_validation_tests.cmake)
|
||||
|
||||
@@ -39,52 +39,52 @@ THE SOFTWARE.
|
||||
|
||||
// Device (Kernel) function, it must be void
|
||||
__global__ void matrixTranspose(float* out, float* in, const int width) {
|
||||
int x = hipBlockDim_x * hipBlockIdx_x + hipThreadIdx_x;
|
||||
int y = hipBlockDim_y * hipBlockIdx_y + hipThreadIdx_y;
|
||||
int x = hipBlockDim_x * hipBlockIdx_x + hipThreadIdx_x;
|
||||
int y = hipBlockDim_y * hipBlockIdx_y + hipThreadIdx_y;
|
||||
|
||||
out[y * width + x] = in[x * width + y];
|
||||
out[y * width + x] = in[x * width + y];
|
||||
}
|
||||
|
||||
// CPU implementation of matrix transpose
|
||||
void matrixTransposeCPUReference(float* output, float* input, const unsigned int width) {
|
||||
for (unsigned int j = 0; j < width; j++) {
|
||||
for (unsigned int i = 0; i < width; i++) {
|
||||
output[i * width + j] = input[j * width + i];
|
||||
}
|
||||
for (unsigned int j = 0; j < width; j++) {
|
||||
for (unsigned int i = 0; i < width; i++) {
|
||||
output[i * width + j] = input[j * width + i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
float* Matrix;
|
||||
float* TransposeMatrix;
|
||||
float* cpuTransposeMatrix;
|
||||
float* Matrix;
|
||||
float* TransposeMatrix;
|
||||
float* cpuTransposeMatrix;
|
||||
|
||||
float* gpuMatrix;
|
||||
float* gpuTransposeMatrix;
|
||||
float* gpuMatrix;
|
||||
float* gpuTransposeMatrix;
|
||||
|
||||
hipDeviceProp_t devProp;
|
||||
hipGetDeviceProperties(&devProp, 0);
|
||||
hipDeviceProp_t devProp;
|
||||
hipGetDeviceProperties(&devProp, 0);
|
||||
|
||||
std::cout << "Device name " << devProp.name << std::endl;
|
||||
std::cout << "Device name " << devProp.name << std::endl;
|
||||
|
||||
int i;
|
||||
int errors;
|
||||
int i;
|
||||
int errors;
|
||||
|
||||
Matrix = (float*)malloc(NUM * sizeof(float));
|
||||
TransposeMatrix = (float*)malloc(NUM * sizeof(float));
|
||||
cpuTransposeMatrix = (float*)malloc(NUM * sizeof(float));
|
||||
Matrix = (float*)malloc(NUM * sizeof(float));
|
||||
TransposeMatrix = (float*)malloc(NUM * sizeof(float));
|
||||
cpuTransposeMatrix = (float*)malloc(NUM * sizeof(float));
|
||||
|
||||
// initialize the input data
|
||||
for (i = 0; i < NUM; i++) {
|
||||
Matrix[i] = (float)i * 10.0f;
|
||||
}
|
||||
// initialize the input data
|
||||
for (i = 0; i < NUM; i++) {
|
||||
Matrix[i] = (float)i * 10.0f;
|
||||
}
|
||||
|
||||
// allocate the memory on the device side
|
||||
hipMalloc((void**)&gpuMatrix, NUM * sizeof(float));
|
||||
hipMalloc((void**)&gpuTransposeMatrix, NUM * sizeof(float));
|
||||
// allocate the memory on the device side
|
||||
hipMalloc((void**)&gpuMatrix, NUM * sizeof(float));
|
||||
hipMalloc((void**)&gpuTransposeMatrix, NUM * sizeof(float));
|
||||
|
||||
uint32_t iterations = 10;
|
||||
while (iterations-- > 0) {
|
||||
uint32_t iterations = 10;
|
||||
while (iterations-- > 0) {
|
||||
std::cout << "## Iteration (" << iterations << ") #################" << std::endl;
|
||||
|
||||
// Memory transfer from host to device
|
||||
@@ -96,11 +96,11 @@ int main() {
|
||||
roctx_range_id_t roctx_id = roctxRangeStartA("roctx_range with id");
|
||||
|
||||
// Lauching kernel from host
|
||||
hipLaunchKernelGGL(matrixTranspose, dim3(WIDTH / THREADS_PER_BLOCK_X, WIDTH / THREADS_PER_BLOCK_Y),
|
||||
dim3(THREADS_PER_BLOCK_X, THREADS_PER_BLOCK_Y), 0, 0, gpuTransposeMatrix,
|
||||
gpuMatrix, WIDTH);
|
||||
hipLaunchKernelGGL(
|
||||
matrixTranspose, dim3(WIDTH / THREADS_PER_BLOCK_X, WIDTH / THREADS_PER_BLOCK_Y),
|
||||
dim3(THREADS_PER_BLOCK_X, THREADS_PER_BLOCK_Y), 0, 0, gpuTransposeMatrix, gpuMatrix, WIDTH);
|
||||
|
||||
roctxRangeStop(roctx_id);
|
||||
roctxRangeStop(roctx_id);
|
||||
roctxMark("ROCTX-MARK: after hipLaunchKernel");
|
||||
|
||||
// Memory transfer from device to host
|
||||
@@ -108,8 +108,8 @@ int main() {
|
||||
|
||||
hipMemcpy(TransposeMatrix, gpuTransposeMatrix, NUM * sizeof(float), hipMemcpyDeviceToHost);
|
||||
|
||||
roctxRangePop(); // for "hipMemcpy"
|
||||
roctxRangePop(); // for "hipLaunchKernel"
|
||||
roctxRangePop(); // for "hipMemcpy"
|
||||
roctxRangePop(); // for "hipLaunchKernel"
|
||||
|
||||
// CPU MatrixTranspose computation
|
||||
matrixTransposeCPUReference(cpuTransposeMatrix, Matrix, WIDTH);
|
||||
@@ -118,26 +118,25 @@ int main() {
|
||||
errors = 0;
|
||||
double eps = 1.0E-6;
|
||||
for (i = 0; i < NUM; i++) {
|
||||
if (std::abs(TransposeMatrix[i] - cpuTransposeMatrix[i]) > eps) {
|
||||
errors++;
|
||||
}
|
||||
if (std::abs(TransposeMatrix[i] - cpuTransposeMatrix[i]) > eps) {
|
||||
errors++;
|
||||
}
|
||||
}
|
||||
if (errors != 0) {
|
||||
printf("FAILED: %d errors\n", errors);
|
||||
printf("FAILED: %d errors\n", errors);
|
||||
} else {
|
||||
printf("PASSED!\n");
|
||||
printf("PASSED!\n");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// free the resources on device side
|
||||
hipFree(gpuMatrix);
|
||||
hipFree(gpuTransposeMatrix);
|
||||
|
||||
// free the resources on device side
|
||||
hipFree(gpuMatrix);
|
||||
hipFree(gpuTransposeMatrix);
|
||||
// free the resources on host side
|
||||
free(Matrix);
|
||||
free(TransposeMatrix);
|
||||
free(cpuTransposeMatrix);
|
||||
|
||||
// free the resources on host side
|
||||
free(Matrix);
|
||||
free(TransposeMatrix);
|
||||
free(cpuTransposeMatrix);
|
||||
|
||||
return errors;
|
||||
return errors;
|
||||
}
|
||||
|
||||
@@ -195,8 +195,8 @@ static hsa_status_t AsyncCpyTest(async_mem_cpy_agent* dst, async_mem_cpy_agent*
|
||||
// Initialize the system and destination buffers with a value so we can later
|
||||
// validate it has been overwritten
|
||||
void* sysPtr = args->cpu.ptr;
|
||||
|
||||
*reinterpret_cast<uint32_t*>(src->ptr) = val;
|
||||
err = hsa_amd_memory_fill(src->ptr, val, sz / sizeof(uint32_t));
|
||||
RET_IF_HSA_ERR(err);
|
||||
|
||||
// Make sure the target and destination agents have access to the buffer.
|
||||
hsa_agent_t ag_list[3] = {dst->dev, src->dev, args->cpu.dev};
|
||||
@@ -231,14 +231,14 @@ static hsa_status_t AsyncCpyTest(async_mem_cpy_agent* dst, async_mem_cpy_agent*
|
||||
}
|
||||
|
||||
// Check that the contents of the buffer are what is expected.
|
||||
if (*reinterpret_cast<uint32_t*>(dst->ptr) != *reinterpret_cast<uint32_t*>(src->ptr)) {
|
||||
fprintf(stderr,
|
||||
"Expected 0x%x but got 0x%x in buffer when copying from %lu to %lu and CPU device is "
|
||||
"%lu.\n",
|
||||
*reinterpret_cast<uint32_t*>(src->ptr), *reinterpret_cast<uint32_t*>(dst->ptr),
|
||||
src->dev.handle, dst->dev.handle, args->cpu.dev.handle);
|
||||
return HSA_STATUS_ERROR;
|
||||
for (uint32_t i = 0; i < sz / sizeof(uint32_t); ++i) {
|
||||
if (reinterpret_cast<uint32_t*>(sysPtr)[i] != val) {
|
||||
fprintf(stderr, "Expected 0x%x but got 0x%x in buffer at index %d.\n", val,
|
||||
reinterpret_cast<uint32_t*>(sysPtr)[i], i);
|
||||
return HSA_STATUS_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
return HSA_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
import pandas as pd
|
||||
import sys
|
||||
|
||||
|
||||
def validate_hip_trace(filename):
|
||||
df = pd.read_csv(filename)
|
||||
|
||||
start_time = df.loc[0, "Start_Timestamp"]
|
||||
end_time = df.loc[0, "End_Timestamp"]
|
||||
|
||||
# Validate the data
|
||||
if start_time < end_time:
|
||||
print("Test Passed: Time stamps are valid.")
|
||||
return 0
|
||||
else:
|
||||
print("Test Failed: Time stamps are not valid.")
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
files = sys.argv[1:]
|
||||
if not files:
|
||||
raise RuntimeError("no input files provided")
|
||||
for filename in files:
|
||||
ec = validate_hip_trace(filename)
|
||||
if ec != 0:
|
||||
sys.stderr.write(f"{filename} did not pass validation\n")
|
||||
sys.exit(ec)
|
||||
@@ -0,0 +1,29 @@
|
||||
# hip-trace validation test - Timestamp
|
||||
add_test(
|
||||
NAME hiptrace_helloworld_test
|
||||
COMMAND ${PROJECT_BINARY_DIR}/rocprofv2 --hip-api -d ${PROJECT_BINARY_DIR}/out-trace
|
||||
-o out tests-v2/featuretests/profiler/apps/hip_helloworld
|
||||
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}")
|
||||
|
||||
set_tests_properties(
|
||||
hiptrace_helloworld_test PROPERTIES LABELS "v2;rocprofv2" ENVIRONMENT
|
||||
"${ROCPROFILER_MEMCHECK_PRELOAD_ENV}")
|
||||
|
||||
add_test(
|
||||
NAME hiptrace_helloworld_test_validation
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_LIST_DIR}/hip_trace_validate.py
|
||||
"out-trace/hip_api_trace_out.csv"
|
||||
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}")
|
||||
|
||||
set_tests_properties(
|
||||
hiptrace_helloworld_test_validation
|
||||
PROPERTIES DEPENDS
|
||||
hiptrace_helloworld_test
|
||||
LABELS
|
||||
"v2;validation"
|
||||
PASS_REGULAR_EXPRESSION
|
||||
"Test Passed"
|
||||
FAIL_REGULAR_EXPRESSION
|
||||
"Test Failed"
|
||||
SKIP_REGULAR_EXPRESSION
|
||||
"Skipped")
|
||||
@@ -69,6 +69,10 @@ void ApplicationParser::SetApplicationEnv(const char* app_name, const char* trac
|
||||
setenv("LD_LIBRARY_PATH", ld_library_path.str().c_str(), true);
|
||||
|
||||
std::stringstream hsa_tools_lib_path;
|
||||
auto _existing_ld_preload = getenv("LD_PRELOAD");
|
||||
if (_existing_ld_preload && strnlen(_existing_ld_preload, 1) > 0)
|
||||
hsa_tools_lib_path << _existing_ld_preload << ":";
|
||||
|
||||
hsa_tools_lib_path << app_path << lib_path;
|
||||
setenv("LD_PRELOAD", hsa_tools_lib_path.str().c_str(), true);
|
||||
|
||||
@@ -273,7 +277,7 @@ class AsyncCopyTest : public Tracertest {
|
||||
|
||||
// Test:1 Compares total num of kernel-names in golden output against current
|
||||
// tracer output
|
||||
TEST_F(AsyncCopyTest, DISABLED_WhenRunningTracerWithAppThenAsyncCopyOutputIsgenerated) {
|
||||
TEST_F(AsyncCopyTest, WhenRunningTracerWithAppThenAsyncCopyOutputIsGenerated) {
|
||||
// kernel info in current profler run
|
||||
std::vector<tracer_kernel_info_t> current_kernel_info;
|
||||
|
||||
@@ -282,7 +286,7 @@ TEST_F(AsyncCopyTest, DISABLED_WhenRunningTracerWithAppThenAsyncCopyOutputIsgene
|
||||
}
|
||||
|
||||
// Test:2 Matches coelation Ids
|
||||
TEST_F(AsyncCopyTest, DISABLED_WhenRunningTracerWithAppThenAsyncCorelationCountIsCorrect) {
|
||||
TEST_F(AsyncCopyTest, WhenRunningTracerWithAppThenAsyncCorelationCountIsCorrect) {
|
||||
// kernel info in current profler run
|
||||
std::vector<tracer_kernel_info_t> current_kernel_info;
|
||||
|
||||
@@ -387,4 +391,4 @@ TEST_F(ROCTXTest, WhenRunningTracerWithAppThenROCTxOutputIsgenerated) {
|
||||
EXPECT_EQ(roctx_output.size(), i)
|
||||
<< "Current Output number of records is greater than golden output number of records"
|
||||
<< std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ THE SOFTWARE.
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <iostream>
|
||||
#include <map>
|
||||
|
||||
@@ -6,6 +6,9 @@ set(CMAKE_EXECUTABLE_RPATH_LINK_HIP_FLAG ${CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_F
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${ROCM_PATH}/lib/cmake/hip")
|
||||
set(CMAKE_HIP_ARCHITECTURES OFF)
|
||||
if(DEFINED ROCM_PATH)
|
||||
set(HIP_ROOT_DIR "${ROCM_PATH}/bin")
|
||||
endif()
|
||||
find_package(HIP REQUIRED MODULE)
|
||||
|
||||
set(TEST_DIR ${PROJECT_SOURCE_DIR}/tests-v2/microbenchmarks)
|
||||
@@ -13,6 +16,14 @@ file(GLOB TEST_SRC_FILE ${TEST_DIR}/*.cpp)
|
||||
|
||||
set_source_files_properties(${TEST_SRC_FILE} PROPERTIES HIP_SOURCE_PROPERTY_FORMAT 1)
|
||||
hip_add_executable(pcie_bw_test ${TEST_SRC_FILE})
|
||||
add_test(
|
||||
NAME pcie_bw_test
|
||||
COMMAND $<TARGET_FILE:pcie_bw_test>
|
||||
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}")
|
||||
set_tests_properties(
|
||||
pcie_bw_test
|
||||
PROPERTIES LABELS "v2;benchmarks" ENVIRONMENT "${ROCPROFILER_MEMCHECK_PRELOAD_ENV}"
|
||||
SKIP_REGULAR_EXPRESSION "SIGBUS error. Aborting test" DISABLED TRUE)
|
||||
|
||||
target_link_libraries(pcie_bw_test PRIVATE rocm_smi64)
|
||||
target_link_options(pcie_bw_test PRIVATE "-Wl,--build-id=md5")
|
||||
|
||||
@@ -18,11 +18,17 @@
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE. */
|
||||
|
||||
// make sure assert works
|
||||
#ifdef NDEBUG
|
||||
#undef NDEBUG
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <hip/hip_runtime.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <array>
|
||||
#include <iomanip>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
@@ -31,6 +37,7 @@
|
||||
#include <chrono>
|
||||
#include <thread>
|
||||
#include <future>
|
||||
#include <csignal>
|
||||
|
||||
#include "rocm_smi/rocm_smi.h"
|
||||
|
||||
@@ -71,22 +78,22 @@
|
||||
#define HANDLE_ERROR CHK_ERR_ASRT(ret);
|
||||
#define HIP_ASSERT(x) (assert((x) == hipSuccess))
|
||||
|
||||
#define SEND_DATA() \
|
||||
HIP_ASSERT(hipMemcpyAsync(dst, src, SIZE * sizeof(int), hipMemcpyDefault, stream));
|
||||
|
||||
static float burn_hip(int dev, int* dst, int* src, size_t SIZE,
|
||||
std::atomic<bool>* transfer_started) {
|
||||
static float burn_hip(int dev, int* dst, int* src, size_t sz, std::atomic<bool>* transfer_started) {
|
||||
hipSetDevice(dev);
|
||||
hipStream_t stream;
|
||||
hipStreamCreate(&stream);
|
||||
hipEvent_t events[3];
|
||||
auto events = std::array<hipEvent_t, 3>{};
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
hipEventCreate(events + i);
|
||||
SEND_DATA();
|
||||
hipEventRecord(events[i], stream);
|
||||
auto send_data = [dst, src, sz, stream]() {
|
||||
HIP_ASSERT(hipMemcpyAsync(dst, src, sz * sizeof(int), hipMemcpyDefault, stream));
|
||||
};
|
||||
|
||||
for (auto& event : events) {
|
||||
hipEventCreate(&event);
|
||||
send_data();
|
||||
hipEventRecord(event, stream);
|
||||
}
|
||||
SEND_DATA();
|
||||
send_data();
|
||||
hipEventSynchronize(events[0]);
|
||||
transfer_started->store(true);
|
||||
|
||||
@@ -95,23 +102,30 @@ static float burn_hip(int dev, int* dst, int* src, size_t SIZE,
|
||||
while (elapsed < 1500.0f) { // Transfer data for 1.5 seconds = 1500 ms
|
||||
float out;
|
||||
|
||||
hipEventSynchronize(events[(counter + 1) % 3]);
|
||||
hipEventElapsedTime(&out, events[counter % 3], events[(counter + 1) % 3]);
|
||||
hipEventSynchronize(events[(counter + 1) % events.size()]);
|
||||
hipEventElapsedTime(&out, events[counter % events.size()],
|
||||
events[(counter + 1) % events.size()]);
|
||||
elapsed += out;
|
||||
|
||||
hipEventRecord(events[counter % 3], stream);
|
||||
SEND_DATA();
|
||||
hipEventRecord(events[counter % events.size()], stream);
|
||||
send_data();
|
||||
counter += 1;
|
||||
}
|
||||
hipStreamSynchronize(stream);
|
||||
|
||||
for (int i = 0; i < 3; i++) hipEventDestroy(events[i]);
|
||||
for (auto& event : events) hipEventDestroy(event);
|
||||
hipStreamDestroy(stream);
|
||||
|
||||
return float(SIZE * sizeof(int) * counter) / elapsed / 1E6;
|
||||
return float(sz * sizeof(int) * counter) / elapsed / 1E6;
|
||||
}
|
||||
|
||||
namespace {
|
||||
void signal_handler(int _sig);
|
||||
void activate_signal_handler();
|
||||
} // namespace
|
||||
|
||||
int main() {
|
||||
activate_signal_handler();
|
||||
const size_t SIZE = 3 << 28;
|
||||
rsmi_status_t ret;
|
||||
uint16_t dev_id;
|
||||
@@ -132,9 +146,10 @@ int main() {
|
||||
int* d_ptr;
|
||||
HIP_ASSERT(hipMalloc((void**)&d_ptr, SIZE * sizeof(int)));
|
||||
|
||||
std::cout << ">>> Device " << dev << std::endl;
|
||||
std::cout << ">>> Device " << dev << std::flush;
|
||||
ret = rsmi_dev_id_get(dev, &dev_id);
|
||||
HANDLE_ERROR;
|
||||
std::cout << " (rsmi device id: " << dev_id << ")" << std::endl;
|
||||
|
||||
rsmi_pcie_bandwidth_t bandwidth;
|
||||
ret = rsmi_dev_pci_bandwidth_get(dev, &bandwidth);
|
||||
@@ -147,7 +162,9 @@ int main() {
|
||||
std::cout << "Current: " << bandwidth.transfer_rate.frequency[bandwidth.transfer_rate.current]
|
||||
<< '\n';
|
||||
|
||||
uint64_t sent = 0, received = 0, max_pkt_sz = 0;
|
||||
uint64_t sent = 0;
|
||||
uint64_t received = 0;
|
||||
uint64_t max_pkt_sz = 0;
|
||||
std::atomic<bool> transfer_started;
|
||||
transfer_started.store(false);
|
||||
auto thread =
|
||||
@@ -184,4 +201,23 @@ int main() {
|
||||
delete[] h_ptr;
|
||||
ret = rsmi_shut_down();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
namespace {
|
||||
// activate a signal handler to catch a SIGBUS on navi32 and
|
||||
// emit a message that we can use to skip the test in CTest
|
||||
void activate_signal_handler() {
|
||||
struct sigaction _action = {};
|
||||
sigemptyset(&_action.sa_mask);
|
||||
_action.sa_flags = SA_RESTART;
|
||||
_action.sa_handler = signal_handler;
|
||||
sigaction(SIGBUS, &_action, nullptr);
|
||||
}
|
||||
|
||||
void signal_handler(int _sig) {
|
||||
if (_sig == SIGBUS) {
|
||||
std::cerr << "SIGBUS error. Aborting test" << std::endl;
|
||||
}
|
||||
::quick_exit(_sig);
|
||||
}
|
||||
} // namespace
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/bin/bash -e
|
||||
|
||||
CURRENT_DIR="$( dirname -- "$0"; )";
|
||||
|
||||
@@ -15,4 +15,4 @@ echo -e "running feature tests for rocprofiler"
|
||||
eval ${CURRENT_DIR}/tests-v2/featuretests/profiler/runFeatureTests
|
||||
|
||||
echo -e "Running Tracer Tests"
|
||||
eval ${CURRENT_DIR}/tests-v2/featuretests/tracer/runTracerFeatureTests
|
||||
eval ${CURRENT_DIR}/tests-v2/featuretests/tracer/runTracerFeatureTests
|
||||
|
||||
@@ -20,6 +20,30 @@
|
||||
# SOFTWARE.
|
||||
# ##############################################################################
|
||||
|
||||
# ##############################################################################
|
||||
# Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
# ##############################################################################
|
||||
|
||||
# Setup unit testing env
|
||||
|
||||
find_library(PCIACCESS_LIBRARIES pciaccess REQUIRED)
|
||||
|
||||
enable_testing()
|
||||
@@ -55,14 +79,14 @@ file(GLOB ROCPROFILER_TRACER_SRC_FILES
|
||||
${PROJECT_SOURCE_DIR}/src/core/session/tracer/*.cpp)
|
||||
file(GLOB ROCPROFILER_ROCTRACER_SRC_FILES
|
||||
${PROJECT_SOURCE_DIR}/src/core/session/tracer/src/*.cpp)
|
||||
file(GLOB ROCPROFILER_ATT_SRC_FILES ${PROJECT_SOURCE_DIR}/src/core/session/att/*.cpp)
|
||||
file(GLOB ROCPROFILER_SRC_CLASS_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rocprofiler_singleton.cpp)
|
||||
file(GLOB ROCPROFILER_ISA_SRC_FILES ${PROJECT_SOURCE_DIR}/src/core/isa_capture/*.cpp)
|
||||
file(GLOB ROCPROFILER_SPM_SRC_FILES ${PROJECT_SOURCE_DIR}/src/core/session/spm/spm.cpp)
|
||||
file(GLOB ROCPROFILER_SRC_API_FILES ${PROJECT_SOURCE_DIR}/src/api/*.cpp)
|
||||
set(ROCPROFILER_SRC_FILES ${ROCPROFILER_SRC_API_FILES} ${ROCPROFILER_ATT_SRC_FILES}
|
||||
${ROCPROFILER_ISA_SRC_FILES} ${ROCPROFILER_SRC_PROFILER_FILES} ${ROCPROFILER_ATT_SRC_FILES})
|
||||
file(GLOB ROCPROFILER_ATT_SRC_FILES ${PROJECT_SOURCE_DIR}/src/core/session/att/*.cpp)
|
||||
file(GLOB ROCPROFILER_SRC_CLASS_FILES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rocprofiler_singleton.cpp)
|
||||
file(GLOB ROCPROFILER_ISA_SRC_FILES ${PROJECT_SOURCE_DIR}/src/core/isa_capture/*.cpp)
|
||||
file(GLOB ROCPROFILER_SPM_SRC_FILES ${PROJECT_SOURCE_DIR}/src/core/session/spm/spm.cpp)
|
||||
file(GLOB ROCPROFILER_SRC_API_FILES ${PROJECT_SOURCE_DIR}/src/api/*.cpp)
|
||||
set(ROCPROFILER_SRC_FILES ${ROCPROFILER_SRC_API_FILES} ${ROCPROFILER_ATT_SRC_FILES}
|
||||
${ROCPROFILER_ISA_SRC_FILES} ${ROCPROFILER_SRC_PROFILER_FILES} ${ROCPROFILER_ATT_SRC_FILES})
|
||||
|
||||
set(CORE_HSA_DIR ${PROJECT_SOURCE_DIR}/src/core/hsa)
|
||||
file(GLOB CORE_HSA_SRC_FILES ${CORE_HSA_DIR}/*.cpp)
|
||||
@@ -81,10 +105,14 @@ file(GLOB CORE_COUNTERS_PARENT_SRC_FILES ${PROJECT_SOURCE_DIR}/src/core/counters
|
||||
file(GLOB CORE_COUNTERS_METRICS_SRC_FILES
|
||||
${PROJECT_SOURCE_DIR}/src/core/counters/metrics/*.cpp)
|
||||
file(GLOB CORE_COUNTERS_MMIO_SRC_FILES ${PROJECT_SOURCE_DIR}/src/core/counters/mmio/*.cpp)
|
||||
set(GTEST_MAIN_DIR ${PROJECT_SOURCE_DIR}/tests-v2/unittests/core)
|
||||
file(GLOB GTEST_MAIN_SRC_FILE ${GTEST_MAIN_DIR}/gtests_main.cpp)
|
||||
add_executable(
|
||||
runCoreUnitTests
|
||||
file(GLOB HSASingleton_TEST_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/HSASingleton/*.cpp)
|
||||
file(GLOB ROCProfiler_Singleton_TEST_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/ROCProfiler_Singleton/*.cpp)
|
||||
file(GLOB GTEST_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
|
||||
|
||||
set(runCoreUnitTests_SOURCES
|
||||
${GTEST_SRC_FILES}
|
||||
${HSASingleton_TEST_SRC_FILES}
|
||||
${ROCProfiler_Singleton_TEST_SRC_FILES}
|
||||
${CORE_MEMORY_SRC_FILES}
|
||||
${CORE_SESSION_SRC_FILES}
|
||||
${CORE_FILTER_SRC_FILES}
|
||||
@@ -103,31 +131,56 @@ add_executable(
|
||||
${CORE_COUNTERS_METRICS_SRC_FILES}
|
||||
${CORE_COUNTERS_MMIO_SRC_FILES}
|
||||
${CORE_COUNTERS_PARENT_SRC_FILES}
|
||||
${CORE_PC_SAMPLING_FILES}
|
||||
${GTEST_MAIN_SRC_FILE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/ROCProfiler_Singleton/ROCProfiler_Singleton_unittests.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/HSASingleton/HSASingleton_unittests.cpp
|
||||
)
|
||||
${CORE_PC_SAMPLING_FILES})
|
||||
|
||||
add_executable(runCoreUnitTests ${runCoreUnitTests_SOURCES})
|
||||
|
||||
target_include_directories(
|
||||
runCoreUnitTests
|
||||
PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/inc
|
||||
runCoreUnitTests
|
||||
PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/inc
|
||||
${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_BINARY_DIR}
|
||||
${PROJECT_BINARY_DIR}/rocprofiler)
|
||||
|
||||
target_compile_definitions(
|
||||
runCoreUnitTests
|
||||
PUBLIC AMD_INTERNAL_BUILD
|
||||
PRIVATE PROF_API_IMPL HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_AMD__=1)
|
||||
|
||||
runCoreUnitTests
|
||||
PUBLIC AMD_INTERNAL_BUILD
|
||||
PRIVATE PROF_API_IMPL HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_AMD__=1)
|
||||
|
||||
target_link_libraries(
|
||||
runCoreUnitTests PRIVATE rocprofiler_tool test_hsatool_library ${AQLPROFILE_LIB} hsa-runtime64::hsa-runtime64
|
||||
runCoreUnitTests PRIVATE rocprofiler_tool test_hsatool_library ${AQLPROFILE_LIB} hsa-runtime64::hsa-runtime64
|
||||
GTest::gtest GTest::gtest_main stdc++fs ${PCIACCESS_LIBRARIES})
|
||||
|
||||
|
||||
add_dependencies(tests runCoreUnitTests)
|
||||
install(TARGETS runCoreUnitTests
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests
|
||||
COMPONENT tests)
|
||||
add_test(AllTests runCoreUnitTests)
|
||||
|
||||
# add_test(AllTests runCoreUnitTests)
|
||||
include(GoogleTest)
|
||||
|
||||
set(GTEST_DISCOVER_TESTS_TARGET runCoreUnitTests)
|
||||
set(GTEST_DISCOVER_TESTS_LABELS "v2" "unittests")
|
||||
set(GTEST_DISCOVER_TESTS_ENVIRONMENT ${ROCPROFILER_MEMCHECK_PRELOAD_ENV})
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/cmake_modules/Templates/gtest_discover_tests_properties.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/runUnitTests_TestProperties.cmake @ONLY)
|
||||
|
||||
if(NOT ROCPROFILER_MEMCHECK MATCHES "(Thread|Address)Sanitizer")
|
||||
gtest_discover_tests(runCoreUnitTests)
|
||||
set_property(
|
||||
DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||
APPEND
|
||||
PROPERTY TEST_INCLUDE_FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/runUnitTests_TestProperties.cmake)
|
||||
else()
|
||||
gtest_add_tests(
|
||||
TARGET runCoreUnitTests
|
||||
SOURCES "${runUnitTests_SOURCES}"
|
||||
TEST_LIST runUnitTests_TESTS)
|
||||
include(${CMAKE_CURRENT_BINARY_DIR}/runUnitTests_TestProperties.cmake)
|
||||
endif()
|
||||
|
||||
# for the *_FilePlugin tests
|
||||
if(NOT EXISTS "${PROJECT_BINARY_DIR}/test-output")
|
||||
file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/test-output")
|
||||
endif()
|
||||
@@ -1,3 +1,25 @@
|
||||
# ##############################################################################
|
||||
# Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in all
|
||||
# copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
# ##############################################################################
|
||||
|
||||
# Setup unit testing env
|
||||
|
||||
find_library(PCIACCESS_LIBRARIES pciaccess REQUIRED)
|
||||
@@ -63,8 +85,8 @@ file(GLOB CORE_COUNTERS_PARENT_SRC_FILES ${PROJECT_SOURCE_DIR}/src/core/counters
|
||||
file(GLOB CORE_COUNTERS_METRICS_SRC_FILES
|
||||
${PROJECT_SOURCE_DIR}/src/core/counters/metrics/*.cpp)
|
||||
file(GLOB CORE_COUNTERS_MMIO_SRC_FILES ${PROJECT_SOURCE_DIR}/src/core/counters/mmio/*.cpp)
|
||||
add_executable(
|
||||
runUnitTests
|
||||
|
||||
set(runUnitTests_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/profiler_gtest.cpp
|
||||
${CORE_MEMORY_SRC_FILES}
|
||||
${CORE_SESSION_SRC_FILES}
|
||||
@@ -84,27 +106,56 @@ add_executable(
|
||||
${CORE_COUNTERS_METRICS_SRC_FILES}
|
||||
${CORE_COUNTERS_MMIO_SRC_FILES}
|
||||
${CORE_COUNTERS_PARENT_SRC_FILES}
|
||||
${CORE_PC_SAMPLING_FILES}
|
||||
${GTEST_MAIN_SRC_FILE}
|
||||
)
|
||||
${CORE_PC_SAMPLING_FILES})
|
||||
|
||||
add_executable(runUnitTests ${runUnitTests_SOURCES})
|
||||
|
||||
target_include_directories(
|
||||
runUnitTests
|
||||
PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/inc
|
||||
runUnitTests
|
||||
PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/inc
|
||||
${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_BINARY_DIR}
|
||||
${PROJECT_BINARY_DIR}/rocprofiler)
|
||||
|
||||
target_compile_definitions(
|
||||
runUnitTests
|
||||
PUBLIC AMD_INTERNAL_BUILD
|
||||
PRIVATE PROF_API_IMPL HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_AMD__=1)
|
||||
runUnitTests
|
||||
PUBLIC AMD_INTERNAL_BUILD
|
||||
PRIVATE PROF_API_IMPL HIP_PROF_HIP_API_STRING=1 __HIP_PLATFORM_AMD__=1)
|
||||
|
||||
target_link_libraries(
|
||||
runUnitTests PRIVATE rocprofiler_tool ${AQLPROFILE_LIB} hsa-runtime64::hsa-runtime64
|
||||
GTest::gtest GTest::gtest_main stdc++fs ${PCIACCESS_LIBRARIES} ${GDB} dw elf c dl)
|
||||
runUnitTests PRIVATE rocprofiler_tool ${AQLPROFILE_LIB} hsa-runtime64::hsa-runtime64
|
||||
GTest::gtest GTest::gtest_main stdc++fs ${PCIACCESS_LIBRARIES} ${GDB} dw elf c dl)
|
||||
|
||||
add_dependencies(tests runUnitTests)
|
||||
install(TARGETS runUnitTests
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests
|
||||
COMPONENT tests)
|
||||
add_test(AllTests runUnitTests)
|
||||
|
||||
# add_test(AllTests runUnitTests)
|
||||
include(GoogleTest)
|
||||
|
||||
set(GTEST_DISCOVER_TESTS_TARGET runUnitTests)
|
||||
set(GTEST_DISCOVER_TESTS_LABELS "v2" "unittests")
|
||||
set(GTEST_DISCOVER_TESTS_ENVIRONMENT ${ROCPROFILER_MEMCHECK_PRELOAD_ENV})
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/cmake_modules/Templates/gtest_discover_tests_properties.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/runUnitTests_TestProperties.cmake @ONLY)
|
||||
|
||||
if(NOT ROCPROFILER_MEMCHECK MATCHES "(Thread|Address)Sanitizer")
|
||||
gtest_discover_tests(runUnitTests)
|
||||
set_property(
|
||||
DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||
APPEND
|
||||
PROPERTY TEST_INCLUDE_FILES
|
||||
${CMAKE_CURRENT_BINARY_DIR}/runUnitTests_TestProperties.cmake)
|
||||
else()
|
||||
gtest_add_tests(
|
||||
TARGET runUnitTests
|
||||
SOURCES "${runUnitTests_SOURCES}"
|
||||
TEST_LIST runUnitTests_TESTS)
|
||||
include(${CMAKE_CURRENT_BINARY_DIR}/runUnitTests_TestProperties.cmake)
|
||||
endif()
|
||||
|
||||
# for the *_FilePlugin tests
|
||||
if(NOT EXISTS "${PROJECT_BINARY_DIR}/test-output")
|
||||
file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/test-output")
|
||||
endif()
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <vector>
|
||||
#include <mutex>
|
||||
#include <memory>
|
||||
#include <string_view>
|
||||
|
||||
#include "api/rocprofiler_singleton.h"
|
||||
#include "core/memory/generic_buffer.h"
|
||||
@@ -36,12 +37,9 @@
|
||||
* ###############################################
|
||||
*/
|
||||
|
||||
|
||||
void buffer_callback_fun(const rocprofiler_record_header_t* begin,
|
||||
const rocprofiler_record_header_t* end,
|
||||
rocprofiler_session_id_t session_id, rocprofiler_buffer_id_t buffer_id) {
|
||||
std::cout << "buffer callback" << std::endl;
|
||||
}
|
||||
rocprofiler_session_id_t session_id, rocprofiler_buffer_id_t buffer_id) {}
|
||||
|
||||
/*
|
||||
* ###############################################
|
||||
@@ -51,7 +49,7 @@ void buffer_callback_fun(const rocprofiler_record_header_t* begin,
|
||||
|
||||
// A lot have changed in the class, since this test was written
|
||||
// Need to rewrite all the test cases again.
|
||||
TEST(WhenAddingARecordToBuffer, DISABLED_RecordGetsAddedSuccefully) {
|
||||
TEST(WhenAddingARecordToBuffer, RecordGetsAddedSuccefully) {
|
||||
Memory::GenericBuffer* buffer = new Memory::GenericBuffer(
|
||||
rocprofiler_session_id_t{0}, rocprofiler_buffer_id_t{0}, 0x8000, buffer_callback_fun);
|
||||
|
||||
@@ -337,4 +335,4 @@ TEST(WhenTrucatingKokkossKernelNames, KernelNameGetsTruncatedProperly) {
|
||||
|
||||
std::string trunkated_name = rocprofiler::truncate_name(long_kernel_name);
|
||||
EXPECT_EQ("hip_parallel_launch_local_memory", trunkated_name);
|
||||
}
|
||||
}
|
||||
|
||||
새 이슈에서 참조
사용자 차단