{"id":2681,"date":"2026-07-12T16:12:59","date_gmt":"2026-07-12T16:12:59","guid":{"rendered":"https:\/\/mvermeulen.org\/perf\/?p=2681"},"modified":"2026-07-12T16:13:01","modified_gmt":"2026-07-12T16:13:01","slug":"new-scripts-with-ryzen-ai-9-hx-370","status":"publish","type":"post","link":"https:\/\/mvermeulen.org\/perf\/2026\/07\/12\/new-scripts-with-ryzen-ai-9-hx-370\/","title":{"rendered":"New scripts with Ryzen AI 9 HX 370"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">With my <a href=\"https:\/\/mvermeulen.org\/perf\/2026\/07\/12\/arm-box-inventory-script\/\">new topology aware scripts<\/a> I went back to my <a href=\"https:\/\/mvermeulen.org\/perf\/2024\/10\/08\/new-ryzen-ai-9-hx-370-machine\/\">Ryzen AI 9 HX 370<\/a> system to see how things mapped.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Below is output of the topology script<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>================================================================================\nCPU CORE &amp; CACHE HIERARCHY MAP (X86_64)\n================================================================================\nTotal Cores: 24\n\nCore Details Table:\nCore   Core Model                   Stepping   Max Freq     L1I\/L1D Cache    L2 Cache  \n----------------------------------------------------------------------------------------\ncpu0   AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 5158 MHz     32K \/ 48K        1024K     \ncpu1   AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 5158 MHz     32K \/ 48K        1024K     \ncpu2   AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 5158 MHz     32K \/ 48K        1024K     \ncpu3   AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 5158 MHz     32K \/ 48K        1024K     \ncpu4   AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu5   AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu6   AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu7   AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu8   AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu9   AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu10  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu11  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu12  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 5158 MHz     32K \/ 48K        1024K     \ncpu13  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 5158 MHz     32K \/ 48K        1024K     \ncpu14  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 5158 MHz     32K \/ 48K        1024K     \ncpu15  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 5158 MHz     32K \/ 48K        1024K     \ncpu16  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu17  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu18  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu19  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu20  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu21  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu22  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \ncpu23  AMD Ryzen AI 9 HX 370 w\/ Radeon 890M stepping 0, ucode 0xb20401b 3289 MHz     32K \/ 48K        1024K     \n\nSystem-wide Cache Capacity Summary:\n - L1 Data        Cache: 576 KiB      (Total across 12x 48K)\n - L1 Instruction Cache: 384 KiB      (Total across 12x 32K)\n - L2 Unified     Cache: 12.0 MiB     (Total across 12x 1024K)\n - L3 Unified     Cache: 24.0 MiB     (Total across 1x 16384K, 1x 8192K)\n\n================================================================================\nTOPOLOGY PLUMBING TREE\n================================================================================\nL3 Unified Cache &#91;16384K]\n\u251c\u2500\u2500 L2 Unified Cache &#91;1024K]\n\u2502   \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n\u2502   \u2502   \u251c\u2500\u2500 Core 15: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 5.16 GHz\n\u2502   \u2502   \u2514\u2500\u2500 Core 3: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 5.16 GHz\n\u2502   \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n\u251c\u2500\u2500 L2 Unified Cache &#91;1024K]\n\u2502   \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n\u2502   \u2502   \u251c\u2500\u2500 Core 14: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 5.16 GHz\n\u2502   \u2502   \u2514\u2500\u2500 Core 2: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 5.16 GHz\n\u2502   \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n\u251c\u2500\u2500 L2 Unified Cache &#91;1024K]\n\u2502   \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n\u2502   \u2502   \u251c\u2500\u2500 Core 13: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 5.16 GHz\n\u2502   \u2502   \u2514\u2500\u2500 Core 1: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 5.16 GHz\n\u2502   \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n\u2514\u2500\u2500 L2 Unified Cache &#91;1024K]\n    \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n    \u2502   \u251c\u2500\u2500 Core 12: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 5.16 GHz\n    \u2502   \u2514\u2500\u2500 Core 0: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 5.16 GHz\n    \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\nL3 Unified Cache &#91;8192K]\n\u251c\u2500\u2500 L2 Unified Cache &#91;1024K]\n\u2502   \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n\u2502   \u2502   \u251c\u2500\u2500 Core 23: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2502   \u2514\u2500\u2500 Core 11: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n\u251c\u2500\u2500 L2 Unified Cache &#91;1024K]\n\u2502   \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n\u2502   \u2502   \u251c\u2500\u2500 Core 22: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2502   \u2514\u2500\u2500 Core 10: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n\u251c\u2500\u2500 L2 Unified Cache &#91;1024K]\n\u2502   \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n\u2502   \u2502   \u251c\u2500\u2500 Core 21: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2502   \u2514\u2500\u2500 Core 9: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n\u251c\u2500\u2500 L2 Unified Cache &#91;1024K]\n\u2502   \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n\u2502   \u2502   \u251c\u2500\u2500 Core 20: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2502   \u2514\u2500\u2500 Core 8: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n\u251c\u2500\u2500 L2 Unified Cache &#91;1024K]\n\u2502   \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n\u2502   \u2502   \u251c\u2500\u2500 Core 19: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2502   \u2514\u2500\u2500 Core 7: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n\u251c\u2500\u2500 L2 Unified Cache &#91;1024K]\n\u2502   \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n\u2502   \u2502   \u251c\u2500\u2500 Core 18: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2502   \u2514\u2500\u2500 Core 6: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n\u251c\u2500\u2500 L2 Unified Cache &#91;1024K]\n\u2502   \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n\u2502   \u2502   \u251c\u2500\u2500 Core 17: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2502   \u2514\u2500\u2500 Core 5: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n\u2502   \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n\u2514\u2500\u2500 L2 Unified Cache &#91;1024K]\n    \u251c\u2500\u2500 L1 Data Cache &#91;48K]\n    \u2502   \u251c\u2500\u2500 Core 16: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n    \u2502   \u2514\u2500\u2500 Core 4: AMD Ryzen AI 9 HX 370 w\/ Radeon 890M (stepping 0, ucode 0xb20401b) @ 3.29 GHz\n    \u2514\u2500\u2500 L1 Instruction Cache &#91;32K]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">One thing that surprised me was previously likwid-topology had given a different mapping of L3 topology. Apparently, there are two core complexes. One has 4 Zen5 cores (8 threads) and 16MB of L3 and the other has 8 Zen5 compact cores (16 threads) and only 8MB of L3. That is consistent with <a href=\"https:\/\/www.amd.com\/en\/products\/processors\/laptop\/ryzen\/ai-300-series\/amd-ryzen-ai-9-hx-370.html\">specs from AMD<\/a> so a spot where likwid-topology isn&#8217;t quite complete. I can probably update the topology report above to reflect hyperthreading but otherwise useful additional information.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Similar to previous ARM experiment, I tried a stream sweep to find best configuration<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>triad_MBps\topt_level\tthreads\tstrategy\tdomain\tcpus\trun\n74213.600000\tO2\t2\tspread_l3\trr\t0,4\t1\n72749.400000\tOfast\t2\tspread_l3\trr\t0,4\t1\n72687.900000\tO3\t2\tspread_l3\trr\t0,4\t1\n71942.400000\tO2\t3\tspread_l3\trr\t0,4,1\t1\n71505.000000\tO2\t4\tspread_l3\trr\t0,4,1,5\t1\n71500.900000\tOfast\t3\tspread_l3\trr\t0,4,1\t1\n71464.400000\tO3\t3\tspread_l3\trr\t0,4,1\t1\n71460.800000\tOfast\t4\tspread_l3\trr\t0,4,1,5\t1\n71403.000000\tO3\t4\tspread_l3\trr\t0,4,1,5\t1\n71041.700000\tO2\t2\tlocal_l3\t0\t0,1\t1\n69966.800000\tO2\t2\tlocal_l3\t1\t4,5\t1\n69621.300000\tO2\t3\tlocal_l3\t0\t0,1,2\t1\n69486.700000\tO3\t2\tlocal_l3\t0\t0,1\t1\n69432.500000\tOfast\t2\tlocal_l3\t0\t0,1\t1\n69296.300000\tO3\t3\tlocal_l3\t0\t0,1,2\t1\n69168.200000\tOfast\t3\tlocal_l3\t0\t0,1,2\t1\n69074.700000\tO2\t3\tlocal_l3\t1\t4,5,6\t1\n68989.500000\tO2\t4\tlocal_l3\t0\t0,1,2,3\t1\n68979.600000\tO2\t4\tlocal_l3\t1\t4,5,6,7\t1\n68943.700000\tOfast\t3\tlocal_l3\t1\t4,5,6\t1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In this case, the fastest triad comes from using one thread from the Zen5 cores and one from the Zen5c cores, each with their own L3.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>coremark_average\tscenario\tdomain\tthreads\tcpus\trun\n641556.737750\tall_logical\tall\t24\t0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23\t1\n465524.800224\tthread0_only\tall\t12\t0,1,2,3,4,5,6,7,8,9,10,11\t1\n385663.999579\tcapability_group\t1\t16\t4,5,6,7,8,9,10,11,16,17,18,19,20,21,22,23\t1\n381649.327648\tl3_complex\t1\t16\t4,5,6,7,8,9,10,11,16,17,18,19,20,21,22,23\t1\n307810.051852\tl3_complex\t0\t8\t0,1,2,3,12,13,14,15\t1\n305829.027379\tcapability_group\t0\t8\t0,1,2,3,12,13,14,15\t1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Looking at coremark across the different types of cores isn&#8217;t surprising.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Running on all cores gives greatest throughput.<\/li>\n\n\n\n<li>Running only one thread per core (hyperthreading) gets about 72.5% of the performance.<\/li>\n\n\n\n<li>The &#8220;capability group&#8221; (Zen5 vs Zen5c) and &#8220;l3 complex&#8221; (those with the 16MB L3 and those with the 8 MB L3) are the same sets so results are the same. The performance of 8 ZenC cores (16 threads) still more than performance of 4 Zen cores (8 threads).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>With my new topology aware scripts I went back to my Ryzen AI 9 HX 370 system to see how things mapped. Below is output of the topology script One thing that surprised me was previously likwid-topology had given a <span class=\"excerpt-dots\">&hellip;<\/span> <a class=\"more-link\" href=\"https:\/\/mvermeulen.org\/perf\/2026\/07\/12\/new-scripts-with-ryzen-ai-9-hx-370\/\"><span class=\"more-msg\">Continue reading &rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,9],"tags":[38,40,10],"class_list":["post-2681","post","type-post","status-publish","format-standard","hentry","category-experiment","category-hardware","tag-coremark","tag-ryzen-ai-9-hx-370","tag-stream"],"_links":{"self":[{"href":"https:\/\/mvermeulen.org\/perf\/wp-json\/wp\/v2\/posts\/2681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mvermeulen.org\/perf\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mvermeulen.org\/perf\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mvermeulen.org\/perf\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mvermeulen.org\/perf\/wp-json\/wp\/v2\/comments?post=2681"}],"version-history":[{"count":1,"href":"https:\/\/mvermeulen.org\/perf\/wp-json\/wp\/v2\/posts\/2681\/revisions"}],"predecessor-version":[{"id":2682,"href":"https:\/\/mvermeulen.org\/perf\/wp-json\/wp\/v2\/posts\/2681\/revisions\/2682"}],"wp:attachment":[{"href":"https:\/\/mvermeulen.org\/perf\/wp-json\/wp\/v2\/media?parent=2681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mvermeulen.org\/perf\/wp-json\/wp\/v2\/categories?post=2681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mvermeulen.org\/perf\/wp-json\/wp\/v2\/tags?post=2681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}