wafer-core 0.1.45__tar.gz → 0.1.47__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (765) hide show
  1. {wafer_core-0.1.45 → wafer_core-0.1.47}/PKG-INFO +1 -1
  2. {wafer_core-0.1.45 → wafer_core-0.1.47}/pyproject.toml +1 -1
  3. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/trace_compare/test_trace_compare_correctness.py +24 -14
  4. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/__init__.py +12 -0
  5. wafer_core-0.1.47/wafer_core/lib/trace_compare/graph_formatter.py +263 -0
  6. wafer_core-0.1.47/wafer_core/lib/trace_compare/graph_formatter_detailed.py +225 -0
  7. wafer_core-0.1.47/wafer_core/lib/trace_compare/graph_matcher.py +315 -0
  8. wafer_core-0.1.47/wafer_core/lib/trace_compare/graph_matcher_v2.py +332 -0
  9. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_pytui/app.py +8 -0
  10. wafer_core-0.1.47/wafer_core/rollouts/_pytui/viewport.py +186 -0
  11. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agents.py +12 -0
  12. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/progress_app.py +434 -148
  13. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/scoring.py +19 -2
  14. {wafer_core-0.1.45 → wafer_core-0.1.47}/.gitignore +0 -0
  15. {wafer_core-0.1.45 → wafer_core-0.1.47}/README.md +0 -0
  16. {wafer_core-0.1.45 → wafer_core-0.1.47}/pyproject.toml.bak +0 -0
  17. {wafer_core-0.1.45 → wafer_core-0.1.47}/run_cuda_grep.py +0 -0
  18. {wafer_core-0.1.45 → wafer_core-0.1.47}/test_gpu_e2e.py +0 -0
  19. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/__init__.py +0 -0
  20. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/perfetto/README.md +0 -0
  21. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/perfetto/__init__.py +0 -0
  22. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/perfetto/test_perfetto_integration.py +0 -0
  23. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/perfetto/test_perfetto_tool.py +0 -0
  24. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/perfetto/test_trace_manager.py +0 -0
  25. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/perfetto/test_trace_processor.py +0 -0
  26. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_async_ssh_upload.py +0 -0
  27. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_capture_tool.py +0 -0
  28. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_config.py +0 -0
  29. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_eval_interrupt_resume.py +0 -0
  30. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_isa_analysis_tools.py +0 -0
  31. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_kernel_scope.py +0 -0
  32. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_nested_progress.py +0 -0
  33. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_reward_hack_defenses.py +0 -0
  34. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_rocprof_tools.py +0 -0
  35. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_rocprofiler_compute.py +0 -0
  36. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_roofline.py +0 -0
  37. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_sandbox.py +0 -0
  38. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/test_tracelens_tools.py +0 -0
  39. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/trace_compare/__init__.py +0 -0
  40. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/trace_compare/benchmark_trace_compare.py +0 -0
  41. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/trace_compare/expected_output_amd_llama.json +0 -0
  42. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/trace_compare/generate_golden_file.py +0 -0
  43. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/tracelens/__init__.py +0 -0
  44. {wafer_core-0.1.45 → wafer_core-0.1.47}/tests/tracelens/test_finder.py +0 -0
  45. {wafer_core-0.1.45 → wafer_core-0.1.47}/uv.lock +0 -0
  46. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/__init__.py +0 -0
  47. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/async_ssh.py +0 -0
  48. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/auth.py +0 -0
  49. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/config/__init__.py +0 -0
  50. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/config/loader.py +0 -0
  51. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/config/schema.py +0 -0
  52. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/environments/__init__.py +0 -0
  53. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/environments/coding.py +0 -0
  54. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/environments/gpumode.py +0 -0
  55. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/gpu.py +0 -0
  56. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/gpu_detect.py +0 -0
  57. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/__init__.py +0 -0
  58. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/__init__.py +0 -0
  59. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/amdgcn/__init__.py +0 -0
  60. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/amdgcn/analyzer.py +0 -0
  61. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/amdgcn/instruction_db.py +0 -0
  62. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/amdgcn/parser.py +0 -0
  63. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/amdgcn/types.py +0 -0
  64. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/api.py +0 -0
  65. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/correlation/__init__.py +0 -0
  66. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/correlation/mapper.py +0 -0
  67. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/llvm_ir/__init__.py +0 -0
  68. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/llvm_ir/analyzer.py +0 -0
  69. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/llvm_ir/parser.py +0 -0
  70. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/llvm_ir/types.py +0 -0
  71. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/metrics/__init__.py +0 -0
  72. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/metrics/occupancy.py +0 -0
  73. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/targets/__init__.py +0 -0
  74. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/targets/specs.py +0 -0
  75. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/ttgir/__init__.py +0 -0
  76. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/ttgir/analyzer.py +0 -0
  77. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/ttgir/parser.py +0 -0
  78. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/kernel_scope/ttgir/types.py +0 -0
  79. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/nsys/__init__.py +0 -0
  80. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/nsys/analysis.py +0 -0
  81. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/nsys/discovery.py +0 -0
  82. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/nsys/export.py +0 -0
  83. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/nsys/extraction.py +0 -0
  84. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/nsys/main.py +0 -0
  85. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/nsys/parsing.py +0 -0
  86. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/perfetto/__init__.py +0 -0
  87. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/perfetto/build_trace_processor.py +0 -0
  88. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/perfetto/perfetto_tool.py +0 -0
  89. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/perfetto/trace_manager.py +0 -0
  90. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/perfetto/trace_processor.py +0 -0
  91. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/__init__.py +0 -0
  92. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/__init__.py +0 -0
  93. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/analyzer.py +0 -0
  94. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/finder.py +0 -0
  95. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/VERSION +0 -0
  96. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/__init__.py +0 -0
  97. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/__main__.py +0 -0
  98. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/analysis_base.py +0 -0
  99. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/analysis_webui.py +0 -0
  100. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/default.css +0 -0
  101. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/favicon.ico +0 -0
  102. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/css/font-awesome.css +0 -0
  103. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/css/font-awesome.min.css +0 -0
  104. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/FontAwesome.otf +0 -0
  105. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  106. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.svg +0 -0
  107. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  108. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  109. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/bordered-pulled.less +0 -0
  110. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/core.less +0 -0
  111. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/fixed-width.less +0 -0
  112. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/font-awesome.less +0 -0
  113. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/icons.less +0 -0
  114. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/larger.less +0 -0
  115. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/list.less +0 -0
  116. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/mixins.less +0 -0
  117. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/path.less +0 -0
  118. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/rotated-flipped.less +0 -0
  119. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/spinning.less +0 -0
  120. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/stacked.less +0 -0
  121. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/variables.less +0 -0
  122. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_bordered-pulled.scss +0 -0
  123. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_core.scss +0 -0
  124. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_fixed-width.scss +0 -0
  125. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_icons.scss +0 -0
  126. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_larger.scss +0 -0
  127. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_list.scss +0 -0
  128. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_mixins.scss +0 -0
  129. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_path.scss +0 -0
  130. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_rotated-flipped.scss +0 -0
  131. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_spinning.scss +0 -0
  132. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_stacked.scss +0 -0
  133. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_variables.scss +0 -0
  134. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/font-awesome.scss +0 -0
  135. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/animation.css +0 -0
  136. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-codes.css +0 -0
  137. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-embedded.css +0 -0
  138. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-ie7-codes.css +0 -0
  139. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-ie7.css +0 -0
  140. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello.css +0 -0
  141. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.eot +0 -0
  142. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.svg +0 -0
  143. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.ttf +0 -0
  144. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.woff +0 -0
  145. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.eot +0 -0
  146. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.svg +0 -0
  147. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.ttf +0 -0
  148. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.woff +0 -0
  149. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.eot +0 -0
  150. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.svg +0 -0
  151. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.ttf +0 -0
  152. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.woff +0 -0
  153. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.eot +0 -0
  154. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.svg +0 -0
  155. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.ttf +0 -0
  156. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.woff +0 -0
  157. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.eot +0 -0
  158. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.svg +0 -0
  159. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.ttf +0 -0
  160. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.woff +0 -0
  161. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.eot +0 -0
  162. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.svg +0 -0
  163. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.ttf +0 -0
  164. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.woff +0 -0
  165. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.eot +0 -0
  166. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.svg +0 -0
  167. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.ttf +0 -0
  168. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.woff +0 -0
  169. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  170. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.svg +0 -0
  171. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  172. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  173. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.eot +0 -0
  174. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.svg +0 -0
  175. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.ttf +0 -0
  176. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.woff +0 -0
  177. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.eot +0 -0
  178. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.svg +0 -0
  179. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.ttf +0 -0
  180. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.woff +0 -0
  181. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.eot +0 -0
  182. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.svg +0 -0
  183. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.ttf +0 -0
  184. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.woff +0 -0
  185. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.eot +0 -0
  186. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.svg +0 -0
  187. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.ttf +0 -0
  188. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.woff +0 -0
  189. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.eot +0 -0
  190. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.svg +0 -0
  191. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.ttf +0 -0
  192. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.woff +0 -0
  193. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.eot +0 -0
  194. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.svg +0 -0
  195. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  196. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.woff +0 -0
  197. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts.css +0 -0
  198. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/layout.css +0 -0
  199. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/magnific-popup.css +0 -0
  200. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/assets/media-queries.css +0 -0
  201. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/config.py +0 -0
  202. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/launcher.py +0 -0
  203. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0000_top_stats.yaml +0 -0
  204. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0100_system_info.yaml +0 -0
  205. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml +0 -0
  206. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0300_mem_chart.yaml +0 -0
  207. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0500_command-processor.yaml +0 -0
  208. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0600_shader-processor-input.yaml +0 -0
  209. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0700_wavefront-launch.yaml +0 -0
  210. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1000_compute-unit-instruction-mix.yaml +0 -0
  211. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml +0 -0
  212. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1200_lds.yaml +0 -0
  213. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1300_instruction-cache.yaml +0 -0
  214. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1400_constant-cache.yaml +0 -0
  215. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1500_TA_and_TD.yaml +0 -0
  216. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1600_L1_cache.yaml +0 -0
  217. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1700_L2_cache.yaml +0 -0
  218. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1800_L2_cache_per_channel.yaml +0 -0
  219. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/2100_pc_sampling.yaml +0 -0
  220. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0000_top_stats.yaml +0 -0
  221. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0100_system_info.yaml +0 -0
  222. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml +0 -0
  223. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0300_mem_chart.yaml +0 -0
  224. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0400_roofline_info.yaml +0 -0
  225. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0500_command-processor.yaml +0 -0
  226. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0600_shader-processor-input.yaml +0 -0
  227. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0700_wavefront-launch.yaml +0 -0
  228. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1000_compute-unit-instruction-mix.yaml +0 -0
  229. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml +0 -0
  230. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1200_lds.yaml +0 -0
  231. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1300_instruction-cache.yaml +0 -0
  232. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1400_constant-cache.yaml +0 -0
  233. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1500_TA_and_TD.yaml +0 -0
  234. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1600_L1_cache.yaml +0 -0
  235. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1700_L2_cache.yaml +0 -0
  236. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1800_L2_cache_per_channel.yaml +0 -0
  237. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/2100_pc_sampling.yaml +0 -0
  238. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0000_top_stats.yaml +0 -0
  239. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0100_system_info.yaml +0 -0
  240. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml +0 -0
  241. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0300_mem_chart.yaml +0 -0
  242. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0400_roofline_info.yaml +0 -0
  243. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0500_command-processor.yaml +0 -0
  244. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0600_shader-processor-input.yaml +0 -0
  245. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0700_wavefront-launch.yaml +0 -0
  246. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1000_compute-unit-instruction-mix.yaml +0 -0
  247. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml +0 -0
  248. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1200_lds.yaml +0 -0
  249. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1300_instruction-cache.yaml +0 -0
  250. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1400_constant-cache.yaml +0 -0
  251. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1500_TA_and_TD.yaml +0 -0
  252. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1600_L1_cache.yaml +0 -0
  253. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1700_L2_cache.yaml +0 -0
  254. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1800_L2_cache_per_channel.yaml +0 -0
  255. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/2100_pc_sampling.yaml +0 -0
  256. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0000_top_stats.yaml +0 -0
  257. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0100_system_info.yaml +0 -0
  258. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml +0 -0
  259. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0300_mem_chart.yaml +0 -0
  260. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0400_roofline_info.yaml +0 -0
  261. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0500_command-processor.yaml +0 -0
  262. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0600_shader-processor-input.yaml +0 -0
  263. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0700_wavefront-launch.yaml +0 -0
  264. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1000_compute-unit-instruction-mix.yaml +0 -0
  265. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml +0 -0
  266. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1200_lds.yaml +0 -0
  267. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1300_instruction-cache.yaml +0 -0
  268. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1400_constant-cache.yaml +0 -0
  269. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1500_TA_and_TD.yaml +0 -0
  270. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1600_L1_cache.yaml +0 -0
  271. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1700_L2_cache.yaml +0 -0
  272. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1800_L2_cache_per_channel.yaml +0 -0
  273. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/2100_pc_sampling.yaml +0 -0
  274. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0000_top_stats.yaml +0 -0
  275. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0100_system_info.yaml +0 -0
  276. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml +0 -0
  277. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0300_mem_chart.yaml +0 -0
  278. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0400_roofline_info.yaml +0 -0
  279. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0500_command-processor.yaml +0 -0
  280. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0600_shader-processor-input.yaml +0 -0
  281. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0700_wavefront-launch.yaml +0 -0
  282. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1000_compute-unit-instruction-mix.yaml +0 -0
  283. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml +0 -0
  284. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1200_lds.yaml +0 -0
  285. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1300_instruction-cache.yaml +0 -0
  286. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1400_constant-cache.yaml +0 -0
  287. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1500_TA_and_TD.yaml +0 -0
  288. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1600_L1_cache.yaml +0 -0
  289. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1700_L2_cache.yaml +0 -0
  290. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1800_L2_cache_per_channel.yaml +0 -0
  291. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/2100_pc_sampling.yaml +0 -0
  292. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0000_top_stats.yaml +0 -0
  293. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0100_system_info.yaml +0 -0
  294. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0200_system-speed-of-light.yaml +0 -0
  295. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0300_mem_chart.yaml +0 -0
  296. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0400_roofline_info.yaml +0 -0
  297. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0500_command-processor.yaml +0 -0
  298. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0600_shader-processor-input.yaml +0 -0
  299. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0700_wavefront-launch.yaml +0 -0
  300. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1000_compute-unit-instruction-mix.yaml +0 -0
  301. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1100_compute-unit-compute-pipeline.yaml +0 -0
  302. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1200_lds.yaml +0 -0
  303. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1300_instruction-cache.yaml +0 -0
  304. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1400_constant-cache.yaml +0 -0
  305. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1500_TA_and_TD.yaml +0 -0
  306. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1600_L1_cache.yaml +0 -0
  307. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1700_L2_cache.yaml +0 -0
  308. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1800_L2_cache_per_channel.yaml +0 -0
  309. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/2100_pc_sampling.yaml +0 -0
  310. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/panel_config_template.yaml +0 -0
  311. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_base.py +0 -0
  312. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx908.py +0 -0
  313. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx90a.py +0 -0
  314. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx940.py +0 -0
  315. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx941.py +0 -0
  316. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx942.py +0 -0
  317. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx950.py +0 -0
  318. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/__init__.py +0 -0
  319. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/db_connector.py +0 -0
  320. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/file_io.py +0 -0
  321. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/gui.py +0 -0
  322. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/gui_components/__init__.py +0 -0
  323. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/gui_components/header.py +0 -0
  324. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/gui_components/memchart.py +0 -0
  325. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/kernel_name_shortener.py +0 -0
  326. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/logger.py +0 -0
  327. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/mem_chart.py +0 -0
  328. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/mi_gpu_spec.py +0 -0
  329. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/mi_gpu_spec.yaml +0 -0
  330. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/parser.py +0 -0
  331. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/roofline.py +0 -0
  332. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/roofline_calc.py +0 -0
  333. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/schema.py +0 -0
  334. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/specs.py +0 -0
  335. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/tty.py +0 -0
  336. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui/utils/utils.py +0 -0
  337. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/gui_server.py +0 -0
  338. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/profiler.py +0 -0
  339. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/compute/types.py +0 -0
  340. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/sdk/__init__.py +0 -0
  341. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/sdk/analyzer.py +0 -0
  342. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/sdk/finder.py +0 -0
  343. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/sdk/parser.py +0 -0
  344. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/sdk/profiler.py +0 -0
  345. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/sdk/types.py +0 -0
  346. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/__init__.py +0 -0
  347. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/avail/__init__.py +0 -0
  348. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/avail/query.py +0 -0
  349. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/finder.py +0 -0
  350. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/instrument/__init__.py +0 -0
  351. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/instrument/profiler.py +0 -0
  352. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/parsers/__init__.py +0 -0
  353. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/parsers/json_parser.py +0 -0
  354. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/parsers/text_parser.py +0 -0
  355. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/run/__init__.py +0 -0
  356. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/run/analyzer.py +0 -0
  357. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/run/profiler.py +0 -0
  358. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/sample/__init__.py +0 -0
  359. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/sample/profiler.py +0 -0
  360. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/rocprofiler/systems/types.py +0 -0
  361. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/PERFORMANCE.md +0 -0
  362. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/aligner.py +0 -0
  363. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/analyzer.py +0 -0
  364. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/api.py +0 -0
  365. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/architecture.py +0 -0
  366. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/classifier.py +0 -0
  367. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/formatter.py +0 -0
  368. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/fusion_analyzer.py +0 -0
  369. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/kernel_registry.yaml +0 -0
  370. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/layer_segmentation.py +0 -0
  371. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/loader.py +0 -0
  372. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/same_kernel_analyzer.py +0 -0
  373. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/trace_compare/warnings.py +0 -0
  374. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/tracelens/__init__.py +0 -0
  375. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/tracelens/comparator.py +0 -0
  376. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/tracelens/finder.py +0 -0
  377. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/tracelens/report_generator.py +0 -0
  378. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/lib/tracelens/types.py +0 -0
  379. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/logging/__init__.py +0 -0
  380. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/logging/bridge.py +0 -0
  381. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/logging/color_formatter.py +0 -0
  382. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/logging/json_formatter.py +0 -0
  383. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/logging/logging_config.py +0 -0
  384. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/problem_config.py +0 -0
  385. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/remote_env.py +0 -0
  386. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/remote_jobs.py +0 -0
  387. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/retry.py +0 -0
  388. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/__init__.py +0 -0
  389. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/__main__.py +0 -0
  390. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_logging/__init__.py +0 -0
  391. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_logging/color_formatter.py +0 -0
  392. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_logging/json_formatter.py +0 -0
  393. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_logging/logging_config.py +0 -0
  394. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_logging/sample_handler.py +0 -0
  395. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_pytui/__init__.py +0 -0
  396. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_pytui/console.py +0 -0
  397. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_pytui/renderer.py +0 -0
  398. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_pytui/spinner.py +0 -0
  399. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_pytui/terminal.py +0 -0
  400. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_pytui/text.py +0 -0
  401. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_pytui/theme.py +0 -0
  402. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_rate_limit.py +0 -0
  403. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/_retry.py +0 -0
  404. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agent_presets/README.md +0 -0
  405. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agent_presets/__init__.py +0 -0
  406. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agent_presets/base_preset.py +0 -0
  407. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agent_presets/gpt_5_1_codex_04_04.py +0 -0
  408. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agent_presets/gpt_5_2_03_03.py +0 -0
  409. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agent_presets/loader.py +0 -0
  410. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agent_presets/opus_4_01_01.py +0 -0
  411. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agent_presets/rlm_01_01.py +0 -0
  412. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agent_presets/sonnet_4_02_02.py +0 -0
  413. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/agent_presets/sonnet_4_subagent_03_02.py +0 -0
  414. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/cli.py +0 -0
  415. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/cli_agents.py +0 -0
  416. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/config/README.md +0 -0
  417. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/config/__init__.py +0 -0
  418. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/config/base.py +0 -0
  419. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/config/loader.py +0 -0
  420. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/config/protocols.py +0 -0
  421. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/datasets/__init__.py +0 -0
  422. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/datasets/lichess_puzzles.py +0 -0
  423. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/deploy.py +0 -0
  424. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/docs/ASYNC_RUNTIME.md +0 -0
  425. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/dtypes.py +0 -0
  426. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/__init__.py +0 -0
  427. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/_formatting.py +0 -0
  428. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/_subprocess.py +0 -0
  429. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/ask_user.py +0 -0
  430. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/base.py +0 -0
  431. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/binary_search.py +0 -0
  432. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/browsing.py +0 -0
  433. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/calculator.py +0 -0
  434. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/chess_puzzle.py +0 -0
  435. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/compose.py +0 -0
  436. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/cuda_grep.py +0 -0
  437. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/git_worktree.py +0 -0
  438. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/handoff.py +0 -0
  439. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/localfs.py +0 -0
  440. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/no_tools.py +0 -0
  441. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/oracle.py +0 -0
  442. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/repl.py +0 -0
  443. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/screenspot.py +0 -0
  444. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/swe_grep.py +0 -0
  445. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/environments/terminal_bench.py +0 -0
  446. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/eval_helpers.py +0 -0
  447. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/evaluation.py +0 -0
  448. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/examples/eval/cuda_grep/__init__.py +0 -0
  449. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/examples/eval/cuda_grep/config_all_tools.py +0 -0
  450. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/examples/eval/cuda_grep/config_grep_glob.py +0 -0
  451. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/examples/eval/cuda_grep/config_search_only.py +0 -0
  452. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/examples/eval/cuda_grep/cuda_questions.jsonl +0 -0
  453. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/examples/eval/cuda_grep/eval_cuda_grep.py +0 -0
  454. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/examples/eval/cuda_grep/scoring.py +0 -0
  455. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/export.py +0 -0
  456. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/feedback.py +0 -0
  457. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/fingerprint.py +0 -0
  458. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/DESIGN.md +0 -0
  459. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/README.md +0 -0
  460. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/REFACTOR_PLAN.md +0 -0
  461. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/UI_IMPROVEMENTS.md +0 -0
  462. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/__init__.py +0 -0
  463. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/__main__.py +0 -0
  464. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/dev.sh +0 -0
  465. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/index.html +0 -0
  466. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/index_old.html +0 -0
  467. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/run.py +0 -0
  468. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontend/server.py +0 -0
  469. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/__init__.py +0 -0
  470. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/headless_json.py +0 -0
  471. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/json_frontend.py +0 -0
  472. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/none.py +0 -0
  473. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/protocol.py +0 -0
  474. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/runner.py +0 -0
  475. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/textual_frontend.py +0 -0
  476. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/INTEGRATION.md +0 -0
  477. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/README.md +0 -0
  478. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/REFACTOR_DESIGN.md +0 -0
  479. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/TUI_TODO.md +0 -0
  480. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/__init__.py +0 -0
  481. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/agent_renderer.py +0 -0
  482. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/__init__.py +0 -0
  483. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/assistant_message.py +0 -0
  484. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/error_display.py +0 -0
  485. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/input.py +0 -0
  486. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/loader.py +0 -0
  487. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/loader_container.py +0 -0
  488. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/markdown.py +0 -0
  489. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/question_selector.py +0 -0
  490. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/spacer.py +0 -0
  491. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/status_line.py +0 -0
  492. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/system_message.py +0 -0
  493. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/text.py +0 -0
  494. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/tool_execution.py +0 -0
  495. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/components/user_message.py +0 -0
  496. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/control_flow_types.py +0 -0
  497. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/demo.py +0 -0
  498. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/example_usage.py +0 -0
  499. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/interactive_agent.py +0 -0
  500. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/oauth.py +0 -0
  501. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/slash_commands.py +0 -0
  502. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/terminal.py +0 -0
  503. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/test_rendering.py +0 -0
  504. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/theme.py +0 -0
  505. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/tui.py +0 -0
  506. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui/utils.py +0 -0
  507. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/frontends/tui_frontend.py +0 -0
  508. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/import_cc.py +0 -0
  509. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/__init__.py +0 -0
  510. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/attention/__init__.py +0 -0
  511. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/attention/config.py +0 -0
  512. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/attention/example.py +0 -0
  513. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/attention/flex_backend.py +0 -0
  514. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/attention/layer.py +0 -0
  515. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/attention/mask.py +0 -0
  516. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/attention/protocol.py +0 -0
  517. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/backends/__init__.py +0 -0
  518. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/backends/generate.py +0 -0
  519. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/backends/tokenize.py +0 -0
  520. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/cache/__init__.py +0 -0
  521. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/cache/paged.py +0 -0
  522. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/cache/protocol.py +0 -0
  523. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/cache/radix.py +0 -0
  524. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/context.py +0 -0
  525. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/engine.py +0 -0
  526. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/sampling.py +0 -0
  527. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/scheduler.py +0 -0
  528. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/testing.py +0 -0
  529. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/inference/types.py +0 -0
  530. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/integrations/__init__.py +0 -0
  531. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/logging_utils.py +0 -0
  532. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/models.py +0 -0
  533. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/paths.py +0 -0
  534. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/pipeline.py +0 -0
  535. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/progress.py +0 -0
  536. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt.py +0 -0
  537. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/__init__.py +0 -0
  538. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/adapter.py +0 -0
  539. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/adapters/__init__.py +0 -0
  540. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/adapters/system_prompt.py +0 -0
  541. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/adapters/system_user_prompt.py +0 -0
  542. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/adapters/terminal_bench.py +0 -0
  543. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/evaluation.py +0 -0
  544. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/evolutionary.py +0 -0
  545. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/formatting.py +0 -0
  546. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/operations.py +0 -0
  547. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/reflective.py +0 -0
  548. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/state.py +0 -0
  549. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/prompt_optimization/types.py +0 -0
  550. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/providers/__init__.py +0 -0
  551. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/providers/anthropic.py +0 -0
  552. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/providers/base.py +0 -0
  553. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/providers/google.py +0 -0
  554. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/providers/openai_completions.py +0 -0
  555. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/providers/openai_responses.py +0 -0
  556. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/providers/sglang.py +0 -0
  557. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/providers.py +0 -0
  558. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/remote.py +0 -0
  559. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/search.py +0 -0
  560. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/skills.py +0 -0
  561. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/slice.py +0 -0
  562. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/store.py +0 -0
  563. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/templates/__init__.py +0 -0
  564. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/templates/base.py +0 -0
  565. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/templates/loader.py +0 -0
  566. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tests/test_slice.py +0 -0
  567. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/__init__.py +0 -0
  568. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/decorator.py +0 -0
  569. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/__init__.py +0 -0
  570. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/analysis_tools.py +0 -0
  571. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/config.py +0 -0
  572. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/configs/__init__.py +0 -0
  573. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/configs/qwen3_0_6b.py +0 -0
  574. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/configs/qwen3_next_80b.py +0 -0
  575. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/debug_mask.py +0 -0
  576. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/debug_qwen.py +0 -0
  577. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/debug_qwen3_next.py +0 -0
  578. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/debug_sdpa.py +0 -0
  579. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/debug_swa.py +0 -0
  580. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/debug_toolkit.py +0 -0
  581. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/debug_with_tools.py +0 -0
  582. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/explore_gemma.py +0 -0
  583. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/explore_qwen.py +0 -0
  584. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/explore_qwen3_dense.py +0 -0
  585. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/explore_qwen3_next.py +0 -0
  586. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/llama_functional.py +0 -0
  587. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/qwen3_next_functional.py +0 -0
  588. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/qwen_functional.py +0 -0
  589. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/test_llama.py +0 -0
  590. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/test_qwen.py +0 -0
  591. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/test_template.py +0 -0
  592. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/tools.py +0 -0
  593. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/trace_hf.py +0 -0
  594. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/functional_extractor/verify.py +0 -0
  595. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tools/oracle.py +0 -0
  596. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/__init__.py +0 -0
  597. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/agent_integration.py +0 -0
  598. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/backends/__init__.py +0 -0
  599. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/backends/fsdp.py +0 -0
  600. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/backends/jax_backend.py +0 -0
  601. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/backends/protocol.py +0 -0
  602. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/backends/pytorch.py +0 -0
  603. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/backends/pytorch_factory.py +0 -0
  604. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/backends/torch_func.py +0 -0
  605. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/backends/torchax_backend.py +0 -0
  606. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/datasets/__init__.py +0 -0
  607. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/datasets/data_buffer.py +0 -0
  608. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/datasets/dataset_loaders.py +0 -0
  609. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/datasets/sft.py +0 -0
  610. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/distributed_utils.py +0 -0
  611. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/filters.py +0 -0
  612. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/grpo.py +0 -0
  613. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/loops/__init__.py +0 -0
  614. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/loops/rl_loop.py +0 -0
  615. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/loops/sft_loop.py +0 -0
  616. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/losses.py +0 -0
  617. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/metrics.py +0 -0
  618. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/rollout_gen/__init__.py +0 -0
  619. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/rollout_gen/async_rollout_manager.py +0 -0
  620. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/rollout_gen/rollout_generation.py +0 -0
  621. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/rollout_gen/rollout_manager.py +0 -0
  622. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/types.py +0 -0
  623. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/weight_sync.py +0 -0
  624. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/training/worker.py +0 -0
  625. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/transform_messages.py +0 -0
  626. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tui/DESIGN.md +0 -0
  627. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tui/__init__.py +0 -0
  628. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tui/__main__.py +0 -0
  629. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tui/demo.py +0 -0
  630. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tui/monitor.py +0 -0
  631. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tui/remote_runner.py +0 -0
  632. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tui/terminal.py +0 -0
  633. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/tui/traces.py +0 -0
  634. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/rollouts/upload.py +0 -0
  635. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/roofline/__init__.py +0 -0
  636. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/roofline/analysis.py +0 -0
  637. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/roofline/gpu_specs.py +0 -0
  638. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/sandbox/__init__.py +0 -0
  639. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/sandbox/executor.py +0 -0
  640. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/sandbox/landlock.py +0 -0
  641. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/sandbox/policy.py +0 -0
  642. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/sandbox/seatbelt.py +0 -0
  643. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/sessions/__init__.py +0 -0
  644. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/sessions/agent.py +0 -0
  645. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/sessions/dtypes.py +0 -0
  646. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/sessions/hooks.py +0 -0
  647. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/ssh.py +0 -0
  648. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/__init__.py +0 -0
  649. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/digitalocean.py +0 -0
  650. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/pool.py +0 -0
  651. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/probe.py +0 -0
  652. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/providers/__init__.py +0 -0
  653. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/providers/baremetal.py +0 -0
  654. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/providers/digitalocean.py +0 -0
  655. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/providers/runpod.py +0 -0
  656. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/reconcile.py +0 -0
  657. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/runpod.py +0 -0
  658. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/spec_store.py +0 -0
  659. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/state_cache.py +0 -0
  660. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/targets/types.py +0 -0
  661. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/__init__.py +0 -0
  662. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/BENCHMARKING.md +0 -0
  663. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/__init__.py +0 -0
  664. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/aggregation.py +0 -0
  665. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/core.py +0 -0
  666. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/dtypes.py +0 -0
  667. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/metrics.py +0 -0
  668. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/scoring.py +0 -0
  669. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/search.py +0 -0
  670. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/storage.py +0 -0
  671. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/streaming.py +0 -0
  672. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/tests/__init__.py +0 -0
  673. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/autotuner/tests/test_autotuner.py +0 -0
  674. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/bash_tool.py +0 -0
  675. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/capture_tool/__init__.py +0 -0
  676. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/capture_tool/artifacts.py +0 -0
  677. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/capture_tool/context.py +0 -0
  678. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/capture_tool/core.py +0 -0
  679. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/capture_tool/dtypes.py +0 -0
  680. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/capture_tool/executor.py +0 -0
  681. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/capture_tool/metrics.py +0 -0
  682. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/__init__.py +0 -0
  683. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/benchmark.py +0 -0
  684. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/compiler.py +0 -0
  685. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/modal_compile.py +0 -0
  686. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/tests/__init__.py +0 -0
  687. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/tests/test_compiler.py +0 -0
  688. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/tests/test_data/utils.cuh +0 -0
  689. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/tests/test_data/vector_add.cu +0 -0
  690. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/tests/test_data/with_header.cu +0 -0
  691. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/tests/test_modal_integration.py +0 -0
  692. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/compile/types.py +0 -0
  693. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/dispatch_baseline/__init__.py +0 -0
  694. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/dispatch_baseline/analyzer.py +0 -0
  695. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/dispatch_baseline/client.py +0 -0
  696. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/dispatch_baseline/codegen.py +0 -0
  697. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/dispatch_baseline/dtypes.py +0 -0
  698. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/dispatch_baseline/executor.py +0 -0
  699. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/dispatch_baseline/roofline.py +0 -0
  700. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/file_tools/__init__.py +0 -0
  701. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/file_tools/edit_tool.py +0 -0
  702. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/file_tools/glob_tool.py +0 -0
  703. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/file_tools/grep_tool.py +0 -0
  704. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/file_tools/read_tool.py +0 -0
  705. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/file_tools/utils.py +0 -0
  706. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/file_tools/write_tool.py +0 -0
  707. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/glob_tool.py +0 -0
  708. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/grep_tool.py +0 -0
  709. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/isa_analysis_tools/__init__.py +0 -0
  710. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/isa_analysis_tools/isa_analysis_tool.py +0 -0
  711. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/isa_analysis_tools/types.py +0 -0
  712. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/nsys_tools/__init__.py +0 -0
  713. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/nsys_tools/discovery.py +0 -0
  714. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/nsys_tools/models.py +0 -0
  715. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/nsys_tools/parser.py +0 -0
  716. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_compute_tools/__init__.py +0 -0
  717. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_compute_tools/rocprof_compute_analyze_tool.py +0 -0
  718. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_compute_tools/rocprof_compute_profile_tool.py +0 -0
  719. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_sdk_tools/__init__.py +0 -0
  720. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_sdk_tools/rocprof_sdk_analyze_tool.py +0 -0
  721. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_sdk_tools/rocprof_sdk_profile_tool.py +0 -0
  722. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_systems_tools/__init__.py +0 -0
  723. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_instrument_tool.py +0 -0
  724. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_profile_tool.py +0 -0
  725. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_query_tool.py +0 -0
  726. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_sample_tool.py +0 -0
  727. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/skill_tool.py +0 -0
  728. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/tracelens_tools/__init__.py +0 -0
  729. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/tracelens_tools/tracelens_collective_tool.py +0 -0
  730. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/tracelens_tools/tracelens_compare_tool.py +0 -0
  731. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/tracelens_tools/tracelens_report_tool.py +0 -0
  732. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/wafer_tool.py +0 -0
  733. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/tools/write_kernel_tool.py +0 -0
  734. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/__init__.py +0 -0
  735. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/backend.py +0 -0
  736. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/code_validation.py +0 -0
  737. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/environment_serialization.py +0 -0
  738. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/exceptions.py +0 -0
  739. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/execution_types.py +0 -0
  740. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/gpu_environment_utils.py +0 -0
  741. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/__init__.py +0 -0
  742. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/backends.py +0 -0
  743. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/defense.py +0 -0
  744. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/deployment.py +0 -0
  745. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/evaluate.py +0 -0
  746. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/gpu_validation.py +0 -0
  747. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/reference_cache.py +0 -0
  748. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/results.py +0 -0
  749. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/static_checker.py +0 -0
  750. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/targets/__init__.py +0 -0
  751. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/targets/config.py +0 -0
  752. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/targets/execution.py +0 -0
  753. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/targets/selection.py +0 -0
  754. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/task.py +0 -0
  755. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/test_reward_hacks.py +0 -0
  756. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/kernel_utils/utils.py +0 -0
  757. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/modal_execution/__init__.py +0 -0
  758. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/modal_execution/modal_app.py +0 -0
  759. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/modal_execution/modal_config.py +0 -0
  760. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/modal_execution/modal_execution.py +0 -0
  761. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/modal_execution/test_modal.py +0 -0
  762. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/ncu_profile_tools.py +0 -0
  763. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/path_utils.py +0 -0
  764. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/remote_execution.py +0 -0
  765. {wafer_core-0.1.45 → wafer_core-0.1.47}/wafer_core/utils/submission_selection.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wafer-core
3
- Version: 0.1.45
3
+ Version: 0.1.47
4
4
  Summary: Core utilities and environments for Wafer GPU kernel optimization
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: aiohttp>=3.9.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "wafer-core"
3
- version = "0.1.45"
3
+ version = "0.1.47"
4
4
  description = "Core utilities and environments for Wafer GPU kernel optimization"
5
5
  requires-python = ">=3.10"
6
6
  dependencies = [
@@ -13,7 +13,7 @@ import pandas as pd
13
13
 
14
14
  from wafer_core.lib.trace_compare import (
15
15
  analyze_traces,
16
- analyze_trace_pair,
16
+ # analyze_trace_pair, # TODO: not yet implemented
17
17
  detect_architecture,
18
18
  ArchitectureType,
19
19
  Op,
@@ -21,11 +21,15 @@ from wafer_core.lib.trace_compare import (
21
21
  )
22
22
  from wafer_core.lib.trace_compare.loader import (
23
23
  load_trace,
24
- load_trace_streaming,
25
- StreamingMetadata,
26
- _extract_metadata_fast,
27
24
  )
28
25
 
26
+ # TODO: These streaming functions are not yet implemented
27
+ # from wafer_core.lib.trace_compare.loader import (
28
+ # load_trace_streaming,
29
+ # StreamingMetadata,
30
+ # _extract_metadata_fast,
31
+ # )
32
+
29
33
 
30
34
  TRACE_EXAMPLES_DIR = Path("/root/wafer/experiments/ian/vllm-trace-compare/examples")
31
35
  AMD_LLAMA_TRACE = TRACE_EXAMPLES_DIR / "amd_llama.json"
@@ -70,9 +74,10 @@ def amd_trace_result():
70
74
  @pytest.fixture(scope="session")
71
75
  def amd_trace_streaming_result():
72
76
  """Load AMD trace with streaming loader once per test session."""
73
- if not _path_exists_safe(AMD_LLAMA_TRACE):
74
- pytest.skip(f"Trace file not found: {AMD_LLAMA_TRACE}")
75
- return load_trace_streaming(AMD_LLAMA_TRACE, include_stacks=True)
77
+ pytest.skip("load_trace_streaming not yet implemented")
78
+ # if not _path_exists_safe(AMD_LLAMA_TRACE):
79
+ # pytest.skip(f"Trace file not found: {AMD_LLAMA_TRACE}")
80
+ # return load_trace_streaming(AMD_LLAMA_TRACE, include_stacks=True)
76
81
 
77
82
 
78
83
  @pytest.fixture(scope="session")
@@ -175,13 +180,14 @@ def test_streaming_loader_matches_regular_loader(amd_trace_result, amd_trace_str
175
180
  assert int(df1["dur_us"].sum()) == int(df2["dur_us"].sum())
176
181
 
177
182
 
183
+ @pytest.mark.skip(reason="_extract_metadata_fast not yet implemented")
178
184
  def test_metadata_extraction_matches_full_load(amd_trace_result) -> None:
179
185
  """Test that fast metadata extraction matches full load metadata."""
180
186
  if not _path_exists_safe(AMD_LLAMA_TRACE):
181
187
  pytest.skip(f"Trace file not found: {AMD_LLAMA_TRACE}")
182
-
188
+
183
189
  # Extract metadata fast (~2ms)
184
- metadata = _extract_metadata_fast(AMD_LLAMA_TRACE)
190
+ # metadata = _extract_metadata_fast(AMD_LLAMA_TRACE)
185
191
 
186
192
  # Use cached result
187
193
  platform, gpu, dev_props, _, _, _ = amd_trace_result
@@ -196,13 +202,14 @@ def test_metadata_extraction_matches_full_load(amd_trace_result) -> None:
196
202
  assert metadata.device_props["warp_size"] == dev_props["warp_size"]
197
203
 
198
204
 
205
+ @pytest.mark.skip(reason="_extract_metadata_fast not yet implemented")
199
206
  def test_streaming_metadata_callback_fires() -> None:
200
207
  """Test that streaming loader fires metadata callback (fast, no full load)."""
201
208
  if not _path_exists_safe(AMD_LLAMA_TRACE):
202
209
  pytest.skip(f"Trace file not found: {AMD_LLAMA_TRACE}")
203
-
210
+
204
211
  # Only test the metadata callback - don't do full load
205
- metadata = _extract_metadata_fast(AMD_LLAMA_TRACE)
212
+ # metadata = _extract_metadata_fast(AMD_LLAMA_TRACE)
206
213
 
207
214
  assert metadata.platform in ("AMD", "NVIDIA"), f"Invalid platform: {metadata.platform}"
208
215
  assert len(metadata.gpu_name) > 0, "GPU name should not be empty"
@@ -339,14 +346,15 @@ def test_architecture_detection_unknown() -> None:
339
346
  # =============================================================================
340
347
 
341
348
 
349
+ @pytest.mark.skip(reason="_extract_metadata_fast not yet implemented")
342
350
  def test_analyze_trace_pair_metadata_callback() -> None:
343
351
  """Test that metadata extraction works for both traces (fast, no full analysis)."""
344
352
  if not _path_exists_safe(AMD_LLAMA_TRACE) or not _path_exists_safe(NVIDIA_LLAMA_TRACE):
345
353
  pytest.skip("Trace files not found")
346
-
354
+
347
355
  # Just test metadata extraction - much faster than full analysis
348
- meta1 = _extract_metadata_fast(AMD_LLAMA_TRACE)
349
- meta2 = _extract_metadata_fast(NVIDIA_LLAMA_TRACE)
356
+ # meta1 = _extract_metadata_fast(AMD_LLAMA_TRACE)
357
+ # meta2 = _extract_metadata_fast(NVIDIA_LLAMA_TRACE)
350
358
 
351
359
  # Verify metadata is valid
352
360
  assert meta1.platform in ("AMD", "NVIDIA")
@@ -423,6 +431,7 @@ def test_architecture_detection_empty_list() -> None:
423
431
  # =============================================================================
424
432
 
425
433
 
434
+ @pytest.mark.skip(reason="load_trace_full and LoadedTrace not yet implemented")
426
435
  def test_loaded_trace_contains_all_data() -> None:
427
436
  """Test that LoadedTrace contains all required fields."""
428
437
  from wafer_core.lib.trace_compare.loader import load_trace_full, LoadedTrace
@@ -448,6 +457,7 @@ def test_loaded_trace_contains_all_data() -> None:
448
457
  assert len(loaded.correlation_groups) > 0
449
458
 
450
459
 
460
+ @pytest.mark.skip(reason="load_trace_full not yet implemented")
451
461
  def test_analyze_from_loaded_matches_path_api() -> None:
452
462
  """Test that analyze_traces_from_loaded produces identical results to analyze_traces."""
453
463
  from wafer_core.lib.trace_compare.loader import load_trace_full
@@ -5,6 +5,8 @@ identifying kernel-level performance differences and fusion opportunities.
5
5
  """
6
6
 
7
7
  from .analyzer import analyze_traces
8
+ # from .api import analyze_trace_pair # TODO: api.py has unimplemented dependencies
9
+ from .architecture import ArchitectureType, detect_architecture
8
10
  from .classifier import Op, classify
9
11
  from .formatter import (
10
12
  format_csv,
@@ -15,6 +17,9 @@ from .formatter import (
15
17
  format_text,
16
18
  )
17
19
  from .fusion_analyzer import analyze_fusion_differences
20
+ from .graph_formatter import format_graph_comparison_json, format_graph_comparison_text
21
+ from .graph_formatter_detailed import format_graph_comparison_detailed
22
+ from .graph_matcher import match_traces
18
23
  from .loader import load_trace
19
24
 
20
25
  __all__ = [
@@ -22,6 +27,9 @@ __all__ = [
22
27
  "classify",
23
28
  "load_trace",
24
29
  "analyze_traces",
30
+ # "analyze_trace_pair", # TODO: not yet implemented
31
+ "detect_architecture",
32
+ "ArchitectureType",
25
33
  "analyze_fusion_differences",
26
34
  "format_text",
27
35
  "format_csv",
@@ -29,4 +37,8 @@ __all__ = [
29
37
  "format_fusion_text",
30
38
  "format_fusion_csv",
31
39
  "format_fusion_json",
40
+ "match_traces",
41
+ "format_graph_comparison_text",
42
+ "format_graph_comparison_json",
43
+ "format_graph_comparison_detailed",
32
44
  ]
@@ -0,0 +1,263 @@
1
+ """Graph-based pattern-focused formatter for trace comparison.
2
+
3
+ Presents results grouped by CUDA graph execution patterns, reducing cognitive load
4
+ by showing 1-7 unique patterns instead of thousands of individual kernel executions.
5
+ """
6
+
7
+ from collections import Counter, defaultdict
8
+ from typing import Any
9
+
10
+
11
+ def format_graph_comparison_text(result: dict[str, Any], show_all: bool = False) -> str:
12
+ """Format graph matching results as pattern-focused text report.
13
+
14
+ Args:
15
+ result: Results from graph_matcher.match_traces()
16
+ show_all: Show all patterns without truncation
17
+
18
+ Returns:
19
+ Formatted text report with pattern-focused UX
20
+ """
21
+ lines = []
22
+ summary = result['summary']
23
+ graph_pairs = result['graph_pairs']
24
+
25
+ # Header
26
+ lines.append("=" * 80)
27
+ lines.append("TRACE COMPARISON - GRAPH-BASED ANALYSIS")
28
+ lines.append("=" * 80)
29
+ lines.append("")
30
+
31
+ # Overview section
32
+ lines.append("┌" + "─" * 78 + "┐")
33
+ lines.append("│ OVERVIEW" + " " * 69 + "│")
34
+ lines.append("├" + "─" * 78 + "┤")
35
+
36
+ # Calculate total time from graph pairs
37
+ amd_total_ms = sum(
38
+ sum(k.get('dur', 0) for k in pair['amd_kernels'])
39
+ for pair in graph_pairs
40
+ ) / 1000
41
+ nv_total_ms = sum(
42
+ sum(k.get('dur', 0) for k in pair['nv_kernels'])
43
+ for pair in graph_pairs
44
+ ) / 1000
45
+
46
+ amd_kernels = summary['total_kernel_pairs'] # Actually shows unique positions
47
+ nv_kernels = summary['total_kernel_pairs']
48
+
49
+ lines.append(f"│ AMD: {amd_kernels:>6,} kernel positions {amd_total_ms:>8.1f}ms" + " " * 25 + "│")
50
+ lines.append(f"│ NVIDIA: {nv_kernels:>6,} kernel positions {nv_total_ms:>8.1f}ms" + " " * 25 + "│")
51
+ lines.append(f"│" + " " * 78 + "│")
52
+ lines.append(f"│ Match rate: {summary['match_rate']:.1f}% "
53
+ f"({summary['matched']:,} matched, "
54
+ f"{summary['amd_only']:,} AMD-only, "
55
+ f"{summary['nv_only']:,} NV-only)" + " " * 5 + "│")
56
+ lines.append("└" + "─" * 78 + "┘")
57
+ lines.append("")
58
+
59
+ # CUDA Graph Patterns section
60
+ lines.append("┌" + "─" * 78 + "┐")
61
+ lines.append("│ CUDA GRAPH PATTERNS (Transformer Layers)" + " " * 36 + "│")
62
+ lines.append("├" + "─" * 78 + "┤")
63
+ lines.append(f"│ Total graph executions: {summary['num_graph_pairs']:,}" + " " * 50 + "│")
64
+
65
+ # Group patterns by kernel sequence
66
+ amd_patterns = _group_by_pattern(graph_pairs, 'amd')
67
+ nv_patterns = _group_by_pattern(graph_pairs, 'nv')
68
+
69
+ lines.append(f"│ Unique AMD patterns: {len(amd_patterns)}" + " " * 50 + "│")
70
+ lines.append(f"│ Unique NVIDIA patterns: {len(nv_patterns)}" + " " * 50 + "│")
71
+ lines.append("└" + "─" * 78 + "┘")
72
+ lines.append("")
73
+
74
+ # Pattern Details
75
+ lines.append("=" * 80)
76
+ lines.append("PATTERN DETAILS")
77
+ lines.append("=" * 80)
78
+ lines.append("")
79
+
80
+ # Show AMD patterns
81
+ lines.append("AMD Patterns:")
82
+ max_patterns = len(amd_patterns) if show_all else min(5, len(amd_patterns))
83
+ for i, (pattern, executions) in enumerate(list(amd_patterns.items())[:max_patterns], 1):
84
+ kernel_count = len(executions[0]['amd_kernels'])
85
+ lines.append(f" Pattern {i}: {len(executions):>4} executions ({kernel_count} kernels each)")
86
+
87
+ if i == 1: # Show detail for main pattern
88
+ lines.append(f" First few kernels:")
89
+ first_kernels = sorted(executions[0]['amd_kernels'], key=lambda x: x.get('ts', 0))[:5]
90
+ for k in first_kernels:
91
+ name = k.get('name', '')[:60]
92
+ lines.append(f" - {name}")
93
+
94
+ if not show_all and len(amd_patterns) > 5:
95
+ lines.append(f" ... ({len(amd_patterns) - 5} more patterns)")
96
+ lines.append("")
97
+
98
+ # Show NVIDIA patterns
99
+ lines.append("NVIDIA Patterns:")
100
+ max_patterns = len(nv_patterns) if show_all else min(5, len(nv_patterns))
101
+ for i, (pattern, executions) in enumerate(list(nv_patterns.items())[:max_patterns], 1):
102
+ kernel_count = len(executions[0]['nv_kernels'])
103
+ lines.append(f" Pattern {i}: {len(executions):>4} executions ({kernel_count} kernels each)")
104
+
105
+ if i == 1: # Show detail for main pattern
106
+ lines.append(f" First few kernels:")
107
+ first_kernels = sorted(executions[0]['nv_kernels'], key=lambda x: x.get('ts', 0))[:5]
108
+ for k in first_kernels:
109
+ name = k.get('name', '')[:60]
110
+ lines.append(f" - {name}")
111
+
112
+ if not show_all and len(nv_patterns) > 5:
113
+ lines.append(f" ... ({len(nv_patterns) - 5} more patterns)")
114
+ lines.append("")
115
+
116
+ # Drilling down into main pattern
117
+ lines.append("=" * 80)
118
+ lines.append("MAIN PATTERN COMPARISON (Pattern 1)")
119
+ lines.append("=" * 80)
120
+ lines.append("")
121
+
122
+ if amd_patterns and nv_patterns:
123
+ # Get first execution of main patterns
124
+ amd_main_executions = list(amd_patterns.values())[0]
125
+ nv_main_executions = list(nv_patterns.values())[0]
126
+
127
+ amd_main = amd_main_executions[0]
128
+ nv_main = nv_main_executions[0]
129
+
130
+ # Get kernel type distribution from matches
131
+ amd_types = Counter()
132
+ nv_types = Counter()
133
+
134
+ for match in amd_main['matches']:
135
+ if match['status'] in ['MATCH', 'AMD_ONLY']:
136
+ amd_types[match['amd_type']] += 1
137
+ if match['status'] in ['MATCH', 'NV_ONLY']:
138
+ nv_types[match['nv_type']] += 1
139
+
140
+ lines.append("Kernel Type Distribution (per execution):")
141
+ lines.append(f"{'Type':<20} {'AMD':>8} {'NVIDIA':>8} {'Diff':>8}")
142
+ lines.append("-" * 50)
143
+
144
+ all_types = sorted(set(amd_types.keys()) | set(nv_types.keys()))
145
+ differences = []
146
+
147
+ for ktype in all_types:
148
+ amd_count = amd_types.get(ktype, 0)
149
+ nv_count = nv_types.get(ktype, 0)
150
+ diff = amd_count - nv_count
151
+ diff_str = f"+{diff}" if diff > 0 else str(diff) if diff < 0 else "="
152
+ lines.append(f"{ktype:<20} {amd_count:>8} {nv_count:>8} {diff_str:>8}")
153
+
154
+ if diff != 0:
155
+ differences.append((ktype, diff))
156
+
157
+ lines.append("")
158
+ lines.append("-" * 80)
159
+ lines.append("Key Findings:")
160
+
161
+ if differences:
162
+ # Sort by absolute difference
163
+ differences.sort(key=lambda x: abs(x[1]), reverse=True)
164
+
165
+ for ktype, diff in differences[:3]:
166
+ total_extra = abs(diff) * len(amd_main_executions)
167
+ if diff > 0:
168
+ lines.append(f" • AMD runs {diff:+d} extra {ktype} per execution")
169
+ lines.append(f" → {total_extra:,} extra operations across all executions")
170
+ else:
171
+ lines.append(f" • NVIDIA runs {abs(diff)} extra {ktype} per execution")
172
+ lines.append(f" → {total_extra:,} extra operations across all executions")
173
+ else:
174
+ lines.append(" • Perfect match - kernel types align exactly!")
175
+
176
+ lines.append("")
177
+
178
+ # Aggregate Statistics
179
+ lines.append("=" * 80)
180
+ lines.append("AGGREGATE STATISTICS")
181
+ lines.append("=" * 80)
182
+ lines.append("")
183
+
184
+ if amd_patterns and nv_patterns:
185
+ amd_main_executions = list(amd_patterns.values())[0]
186
+ nv_main_executions = list(nv_patterns.values())[0]
187
+
188
+ amd_main_count = len(amd_main_executions)
189
+ nv_main_count = len(nv_main_executions)
190
+
191
+ lines.append(f"Main Pattern (appears {min(amd_main_count, nv_main_count)}x on both platforms):")
192
+
193
+ amd_kernels_per = len(amd_main_executions[0]['amd_kernels'])
194
+ nv_kernels_per = len(nv_main_executions[0]['nv_kernels'])
195
+
196
+ lines.append(f" AMD: {amd_kernels_per} kernels × {amd_main_count} executions = {amd_kernels_per * amd_main_count:,} total kernels")
197
+ lines.append(f" NVIDIA: {nv_kernels_per} kernels × {nv_main_count} executions = {nv_kernels_per * nv_main_count:,} total kernels")
198
+
199
+ # Calculate time for main pattern
200
+ amd_time = sum(
201
+ sum(k.get('dur', 0) for k in exec['amd_kernels'])
202
+ for exec in amd_main_executions
203
+ )
204
+ nv_time = sum(
205
+ sum(k.get('dur', 0) for k in exec['nv_kernels'])
206
+ for exec in nv_main_executions
207
+ )
208
+
209
+ lines.append(f"")
210
+ lines.append(f" Total time in main pattern:")
211
+ lines.append(f" AMD: {amd_time/1000:.1f}ms ({amd_time/amd_total_ms/10:.1f}% of total)")
212
+ lines.append(f" NVIDIA: {nv_time/1000:.1f}ms ({nv_time/nv_total_ms/10:.1f}% of total)")
213
+
214
+ lines.append("")
215
+ return "\n".join(lines)
216
+
217
+
218
+ def _group_by_pattern(
219
+ graph_pairs: list[dict[str, Any]],
220
+ platform: str
221
+ ) -> dict[tuple, list[dict[str, Any]]]:
222
+ """Group graph executions by their kernel sequence pattern.
223
+
224
+ Args:
225
+ graph_pairs: List of graph pair dictionaries
226
+ platform: 'amd' or 'nv'
227
+
228
+ Returns:
229
+ Dictionary mapping pattern signatures to list of executions
230
+ """
231
+ patterns: dict[tuple, list[dict[str, Any]]] = defaultdict(list)
232
+
233
+ kernels_key = f'{platform}_kernels'
234
+
235
+ for pair in graph_pairs:
236
+ kernels = pair[kernels_key]
237
+ sorted_kernels = sorted(kernels, key=lambda x: x.get('ts', 0))
238
+
239
+ # Pattern signature: tuple of kernel names in order
240
+ signature = tuple(k.get('name', '') for k in sorted_kernels)
241
+ patterns[signature].append(pair)
242
+
243
+ # Sort by frequency (most common first)
244
+ sorted_patterns = dict(sorted(
245
+ patterns.items(),
246
+ key=lambda x: len(x[1]),
247
+ reverse=True
248
+ ))
249
+
250
+ return sorted_patterns
251
+
252
+
253
+ def format_graph_comparison_json(result: dict[str, Any]) -> str:
254
+ """Format graph matching results as JSON.
255
+
256
+ Args:
257
+ result: Results from graph_matcher.match_traces()
258
+
259
+ Returns:
260
+ JSON string
261
+ """
262
+ import json
263
+ return json.dumps(result, indent=2)
@@ -0,0 +1,225 @@
1
+ """Detailed kernel-to-kernel formatter for graph matching results.
2
+
3
+ Shows individual kernel pairs in position order (default) or grouped by operation type.
4
+ """
5
+
6
+ from collections import Counter, defaultdict
7
+ from typing import Any
8
+
9
+
10
+ def format_graph_comparison_detailed(
11
+ result: dict[str, Any],
12
+ show_all: bool = False,
13
+ group_by_op: bool = False,
14
+ max_graphs: int = 3,
15
+ ) -> str:
16
+ """Format graph matching results with kernel-to-kernel details.
17
+
18
+ Args:
19
+ result: Results from graph_matcher.match_traces()
20
+ show_all: Show all kernel pairs without truncation
21
+ group_by_op: Group kernels by operation type instead of position order
22
+ max_graphs: Maximum number of graph pairs to show in detail (default: 3)
23
+
24
+ Returns:
25
+ Formatted text report with kernel-to-kernel matching
26
+ """
27
+ lines = []
28
+ summary = result['summary']
29
+ graph_pairs = result['graph_pairs']
30
+
31
+ # Header
32
+ lines.append("=" * 80)
33
+ lines.append("TRACE COMPARISON - AMD vs NVIDIA")
34
+ lines.append("=" * 80)
35
+ lines.append("")
36
+
37
+ # Section 1: Overview
38
+ lines.append("┏" + "━" * 78 + "┓")
39
+ lines.append("┃ SECTION 1: OVERVIEW" + " " * 58 + "┃")
40
+ lines.append("┣" + "━" * 78 + "┫")
41
+
42
+ total_graphs = summary['num_graph_pairs']
43
+ amd_total_kernels = sum(len(pair['amd_kernels']) for pair in graph_pairs)
44
+ nv_total_kernels = sum(len(pair['nv_kernels']) for pair in graph_pairs)
45
+
46
+ lines.append(f"┃ Transformer layer graphs: AMD: {total_graphs} NVIDIA: {total_graphs}" + " " * 27 + "┃")
47
+ lines.append(f"┃ Graph pairs to compare: {total_graphs}" + " " * 50 + "┃")
48
+ lines.append(f"┃ Total kernels in graphs: AMD: {amd_total_kernels} NVIDIA: {nv_total_kernels}" + " " * 23 + "┃")
49
+ lines.append("┗" + "━" * 78 + "┛")
50
+ lines.append("")
51
+
52
+ # Section 2: Non-graph kernels (placeholder - always 0 for transformer layers)
53
+ lines.append("┏" + "━" * 78 + "┓")
54
+ lines.append("┃ SECTION 2: NON-GRAPH KERNELS" + " " * 48 + "┃")
55
+ lines.append("┣" + "━" * 78 + "┫")
56
+ lines.append("┃ ✓ All kernels are in CUDA graphs" + " " * 44 + "┃")
57
+ lines.append("┗" + "━" * 78 + "┛")
58
+ lines.append("")
59
+
60
+ # Section 3: Unique patterns count
61
+ amd_patterns = _group_by_pattern(graph_pairs, 'amd')
62
+ nv_patterns = _group_by_pattern(graph_pairs, 'nv')
63
+
64
+ lines.append("┏" + "━" * 78 + "┓")
65
+ lines.append("┃ SECTION 3: CUDA GRAPH PATTERNS (Transformer Layers)" + " " * 25 + "┃")
66
+ lines.append("┣" + "━" * 78 + "┫")
67
+ lines.append(f"┃ Unique patterns: AMD: {len(amd_patterns)}, NVIDIA: {len(nv_patterns)}" + " " * 42 + "┃")
68
+ lines.append(f"┃ Total executions: AMD: {total_graphs}, NVIDIA: {total_graphs}" + " " * 32 + "┃")
69
+ lines.append("┗" + "━" * 78 + "┛")
70
+ lines.append("")
71
+
72
+ # Show representative patterns
73
+ lines.append("=" * 80)
74
+ lines.append(f"UNIQUE GRAPH PATTERNS (showing up to {max_graphs})")
75
+ lines.append("=" * 80)
76
+ lines.append("")
77
+
78
+ num_patterns_to_show = min(max_graphs, len(amd_patterns)) if not show_all else len(amd_patterns)
79
+
80
+ for pattern_idx, (amd_pattern, amd_executions) in enumerate(list(amd_patterns.items())[:num_patterns_to_show], 1):
81
+ lines.append(f"┌─ Pattern {pattern_idx} " + "─" * (73 - len(f"Pattern {pattern_idx}")) + "┐")
82
+
83
+ # Find corresponding NVIDIA pattern
84
+ nv_pattern_idx = min(pattern_idx - 1, len(nv_patterns) - 1)
85
+ nv_executions = list(nv_patterns.values())[nv_pattern_idx]
86
+
87
+ amd_kernels_per = len(amd_executions[0]['amd_kernels'])
88
+ nv_kernels_per = len(nv_executions[0]['nv_kernels'])
89
+
90
+ lines.append(f"│ AMD: {len(amd_executions)} executions × {amd_kernels_per} kernels each" + " " * 35 + "│")
91
+ lines.append(f"│ NVIDIA: {len(nv_executions)} executions × {nv_kernels_per} kernels each" + " " * 35 + "│")
92
+ lines.append("└" + "─" * 78 + "┘")
93
+ lines.append("")
94
+
95
+ # Show match quality for this pattern
96
+ matches = amd_executions[0]['matches']
97
+ matched = sum(1 for m in matches if m['status'] == 'MATCH')
98
+ amd_only = sum(1 for m in matches if m['status'] == 'AMD_ONLY')
99
+ nv_only = sum(1 for m in matches if m['status'] == 'NV_ONLY')
100
+ mismatch = sum(1 for m in matches if m['status'] == 'MISMATCH')
101
+
102
+ match_rate = (matched / len(matches) * 100) if matches else 0
103
+
104
+ lines.append(f"Match Quality: {match_rate:.1f}%")
105
+ lines.append(f" ✓ Matched: {matched}")
106
+ lines.append(f" ⚠ AMD only: {amd_only} (fusion differences)")
107
+ lines.append(f" ⚠ NVIDIA only: {nv_only} (fusion differences)")
108
+ if mismatch > 0:
109
+ lines.append(f" ✗ Mismatched: {mismatch}")
110
+ lines.append("")
111
+
112
+ # Show kernel details
113
+ if group_by_op:
114
+ lines.extend(_format_kernels_grouped_by_op(matches, show_all))
115
+ else:
116
+ lines.extend(_format_kernels_in_order(matches, show_all))
117
+
118
+ lines.append("")
119
+
120
+ return "\n".join(lines)
121
+
122
+
123
+ def _format_kernels_in_order(matches: list[dict[str, Any]], show_all: bool) -> list[str]:
124
+ """Format kernels in position order."""
125
+ lines = []
126
+ lines.append("Kernel-to-Kernel Comparison (representative execution):")
127
+ lines.append("")
128
+ lines.append(f"{'Pos':<4} {'AMD Kernel':<45} {'NVIDIA Kernel':<45} {'Status':<8}")
129
+ lines.append("-" * 110)
130
+
131
+ max_pairs = len(matches) if show_all else min(20, len(matches))
132
+
133
+ for idx, match in enumerate(matches[:max_pairs], 1):
134
+ status_icon = {
135
+ 'MATCH': '✓',
136
+ 'AMD_ONLY': '⚠ AMD',
137
+ 'NV_ONLY': '⚠ NV',
138
+ 'MISMATCH': '✗',
139
+ }.get(match['status'], '?')
140
+
141
+ # Add operation type label
142
+ if idx == 1 or (idx > 1 and match['amd_type'] != matches[idx-2]['amd_type']):
143
+ op_type = match['amd_type'] if match['amd_type'] != '-' else match['nv_type']
144
+ lines.append("")
145
+ lines.append(f"[{op_type}]")
146
+
147
+ amd_name = match['amd_name'][:44] if match['amd_name'] != '-' else '-'
148
+ nv_name = match['nv_name'][:44] if match['nv_name'] != '-' else '-'
149
+
150
+ lines.append(f"{idx:<4} {amd_name:<45} {nv_name:<45} {status_icon:<8}")
151
+
152
+ if not show_all and len(matches) > 20:
153
+ lines.append(f" ... ({len(matches) - 20} more kernel pairs)")
154
+
155
+ return lines
156
+
157
+
158
+ def _format_kernels_grouped_by_op(matches: list[dict[str, Any]], show_all: bool) -> list[str]:
159
+ """Format kernels grouped by operation type."""
160
+ lines = []
161
+ lines.append("Kernel-to-Kernel Comparison (representative execution):")
162
+ lines.append("")
163
+
164
+ # Group matches by operation type
165
+ by_op: dict[str, list[tuple[int, dict[str, Any]]]] = defaultdict(list)
166
+ for idx, match in enumerate(matches, 1):
167
+ op_type = match['amd_type'] if match['amd_type'] != '-' else match['nv_type']
168
+ by_op[op_type].append((idx, match))
169
+
170
+ # Sort operations by first appearance
171
+ sorted_ops = sorted(by_op.items(), key=lambda x: x[1][0][0])
172
+
173
+ for op_type, op_matches in sorted_ops:
174
+ lines.append(f"── {op_type} ({len(op_matches)} kernel pairs) " + "─" * (80 - len(f"── {op_type} ({len(op_matches)} kernel pairs) ")))
175
+ lines.append(f"{'Pos':<4} {'AMD Kernel':<45} {'NVIDIA Kernel':<45} {'Status':<8}")
176
+ lines.append("-" * 110)
177
+
178
+ max_to_show = len(op_matches) if show_all else min(3, len(op_matches))
179
+
180
+ for idx, match in op_matches[:max_to_show]:
181
+ status_icon = {
182
+ 'MATCH': '✓',
183
+ 'AMD_ONLY': '⚠ AMD',
184
+ 'NV_ONLY': '⚠ NV',
185
+ 'MISMATCH': '✗',
186
+ }.get(match['status'], '?')
187
+
188
+ amd_name = match['amd_name'][:44] if match['amd_name'] != '-' else '-'
189
+ nv_name = match['nv_name'][:44] if match['nv_name'] != '-' else '-'
190
+
191
+ lines.append(f"{idx:<4} {amd_name:<45} {nv_name:<45} {status_icon:<8}")
192
+
193
+ if not show_all and len(op_matches) > 3:
194
+ lines.append(f" ... ({len(op_matches) - 3} more {op_type} pairs)")
195
+
196
+ lines.append("")
197
+
198
+ return lines
199
+
200
+
201
+ def _group_by_pattern(
202
+ graph_pairs: list[dict[str, Any]],
203
+ platform: str
204
+ ) -> dict[tuple, list[dict[str, Any]]]:
205
+ """Group graph executions by their kernel sequence pattern."""
206
+ patterns: dict[tuple, list[dict[str, Any]]] = defaultdict(list)
207
+
208
+ kernels_key = f'{platform}_kernels'
209
+
210
+ for pair in graph_pairs:
211
+ kernels = pair[kernels_key]
212
+ sorted_kernels = sorted(kernels, key=lambda x: x.get('ts', 0))
213
+
214
+ # Pattern signature: tuple of kernel names in order
215
+ signature = tuple(k.get('name', '') for k in sorted_kernels)
216
+ patterns[signature].append(pair)
217
+
218
+ # Sort by frequency (most common first)
219
+ sorted_patterns = dict(sorted(
220
+ patterns.items(),
221
+ key=lambda x: len(x[1]),
222
+ reverse=True
223
+ ))
224
+
225
+ return sorted_patterns