wafer-core 0.1.27__tar.gz → 0.1.28__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 (734) hide show
  1. {wafer_core-0.1.27 → wafer_core-0.1.28}/PKG-INFO +1 -1
  2. {wafer_core-0.1.27 → wafer_core-0.1.28}/pyproject.toml +1 -1
  3. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/aligner.py +13 -6
  4. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/analyzer.py +12 -3
  5. wafer_core-0.1.28/wafer_core/lib/trace_compare/fusion_analyzer.py +464 -0
  6. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/targets/__init__.py +47 -21
  7. wafer_core-0.1.28/wafer_core/targets/pool.py +181 -0
  8. wafer_core-0.1.28/wafer_core/targets/probe.py +113 -0
  9. wafer_core-0.1.28/wafer_core/targets/providers/__init__.py +46 -0
  10. wafer_core-0.1.28/wafer_core/targets/providers/baremetal.py +72 -0
  11. wafer_core-0.1.28/wafer_core/targets/providers/digitalocean.py +164 -0
  12. wafer_core-0.1.28/wafer_core/targets/providers/runpod.py +250 -0
  13. wafer_core-0.1.28/wafer_core/targets/reconcile.py +90 -0
  14. wafer_core-0.1.28/wafer_core/targets/spec_store.py +200 -0
  15. wafer_core-0.1.28/wafer_core/targets/state_cache.py +150 -0
  16. wafer_core-0.1.28/wafer_core/targets/types.py +141 -0
  17. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/targets/config.py +8 -24
  18. wafer_core-0.1.27/wafer_core/lib/trace_compare/fusion_analyzer.py +0 -356
  19. {wafer_core-0.1.27 → wafer_core-0.1.28}/.gitignore +0 -0
  20. {wafer_core-0.1.27 → wafer_core-0.1.28}/README.md +0 -0
  21. {wafer_core-0.1.27 → wafer_core-0.1.28}/pyproject.toml.bak +0 -0
  22. {wafer_core-0.1.27 → wafer_core-0.1.28}/run_cuda_grep.py +0 -0
  23. {wafer_core-0.1.27 → wafer_core-0.1.28}/test_gpu_e2e.py +0 -0
  24. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/__init__.py +0 -0
  25. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/perfetto/README.md +0 -0
  26. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/perfetto/__init__.py +0 -0
  27. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/perfetto/test_perfetto_integration.py +0 -0
  28. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/perfetto/test_perfetto_tool.py +0 -0
  29. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/perfetto/test_trace_manager.py +0 -0
  30. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/perfetto/test_trace_processor.py +0 -0
  31. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_async_ssh_upload.py +0 -0
  32. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_capture_tool.py +0 -0
  33. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_config.py +0 -0
  34. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_eval_interrupt_resume.py +0 -0
  35. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_isa_analysis_tools.py +0 -0
  36. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_kernel_scope.py +0 -0
  37. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_nested_progress.py +0 -0
  38. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_rocprof_tools.py +0 -0
  39. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_rocprofiler_compute.py +0 -0
  40. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_roofline.py +0 -0
  41. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_sandbox.py +0 -0
  42. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/test_tracelens_tools.py +0 -0
  43. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/trace_compare/__init__.py +0 -0
  44. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/trace_compare/benchmark_trace_compare.py +0 -0
  45. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/trace_compare/expected_output_amd_llama.json +0 -0
  46. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/trace_compare/generate_golden_file.py +0 -0
  47. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/trace_compare/test_trace_compare_correctness.py +0 -0
  48. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/tracelens/__init__.py +0 -0
  49. {wafer_core-0.1.27 → wafer_core-0.1.28}/tests/tracelens/test_finder.py +0 -0
  50. {wafer_core-0.1.27 → wafer_core-0.1.28}/uv.lock +0 -0
  51. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/__init__.py +0 -0
  52. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/async_ssh.py +0 -0
  53. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/auth.py +0 -0
  54. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/config/__init__.py +0 -0
  55. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/config/loader.py +0 -0
  56. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/config/schema.py +0 -0
  57. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/environments/__init__.py +0 -0
  58. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/environments/coding.py +0 -0
  59. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/environments/gpumode.py +0 -0
  60. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/gpu.py +0 -0
  61. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/gpu_detect.py +0 -0
  62. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/__init__.py +0 -0
  63. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/__init__.py +0 -0
  64. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/amdgcn/__init__.py +0 -0
  65. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/amdgcn/analyzer.py +0 -0
  66. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/amdgcn/instruction_db.py +0 -0
  67. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/amdgcn/parser.py +0 -0
  68. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/amdgcn/types.py +0 -0
  69. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/api.py +0 -0
  70. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/correlation/__init__.py +0 -0
  71. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/correlation/mapper.py +0 -0
  72. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/llvm_ir/__init__.py +0 -0
  73. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/llvm_ir/analyzer.py +0 -0
  74. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/llvm_ir/parser.py +0 -0
  75. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/llvm_ir/types.py +0 -0
  76. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/metrics/__init__.py +0 -0
  77. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/metrics/occupancy.py +0 -0
  78. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/targets/__init__.py +0 -0
  79. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/targets/specs.py +0 -0
  80. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/ttgir/__init__.py +0 -0
  81. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/ttgir/analyzer.py +0 -0
  82. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/ttgir/parser.py +0 -0
  83. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/kernel_scope/ttgir/types.py +0 -0
  84. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/nsys/__init__.py +0 -0
  85. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/nsys/analysis.py +0 -0
  86. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/nsys/discovery.py +0 -0
  87. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/nsys/export.py +0 -0
  88. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/nsys/extraction.py +0 -0
  89. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/nsys/main.py +0 -0
  90. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/nsys/parsing.py +0 -0
  91. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/perfetto/__init__.py +0 -0
  92. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/perfetto/build_trace_processor.py +0 -0
  93. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/perfetto/perfetto_tool.py +0 -0
  94. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/perfetto/trace_manager.py +0 -0
  95. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/perfetto/trace_processor.py +0 -0
  96. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/__init__.py +0 -0
  97. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/__init__.py +0 -0
  98. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/analyzer.py +0 -0
  99. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/finder.py +0 -0
  100. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/VERSION +0 -0
  101. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/__init__.py +0 -0
  102. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/__main__.py +0 -0
  103. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/analysis_base.py +0 -0
  104. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/analysis_webui.py +0 -0
  105. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/default.css +0 -0
  106. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/favicon.ico +0 -0
  107. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/css/font-awesome.css +0 -0
  108. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/css/font-awesome.min.css +0 -0
  109. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/FontAwesome.otf +0 -0
  110. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  111. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.svg +0 -0
  112. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  113. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  114. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/bordered-pulled.less +0 -0
  115. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/core.less +0 -0
  116. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/fixed-width.less +0 -0
  117. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/font-awesome.less +0 -0
  118. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/icons.less +0 -0
  119. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/larger.less +0 -0
  120. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/list.less +0 -0
  121. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/mixins.less +0 -0
  122. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/path.less +0 -0
  123. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/rotated-flipped.less +0 -0
  124. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/spinning.less +0 -0
  125. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/stacked.less +0 -0
  126. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/less/variables.less +0 -0
  127. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_bordered-pulled.scss +0 -0
  128. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_core.scss +0 -0
  129. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_fixed-width.scss +0 -0
  130. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_icons.scss +0 -0
  131. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_larger.scss +0 -0
  132. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_list.scss +0 -0
  133. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_mixins.scss +0 -0
  134. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_path.scss +0 -0
  135. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_rotated-flipped.scss +0 -0
  136. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_spinning.scss +0 -0
  137. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_stacked.scss +0 -0
  138. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/_variables.scss +0 -0
  139. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/font-awesome/scss/font-awesome.scss +0 -0
  140. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/animation.css +0 -0
  141. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-codes.css +0 -0
  142. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-embedded.css +0 -0
  143. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-ie7-codes.css +0 -0
  144. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello-ie7.css +0 -0
  145. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/css/fontello.css +0 -0
  146. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.eot +0 -0
  147. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.svg +0 -0
  148. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.ttf +0 -0
  149. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fontello/font/fontello.woff +0 -0
  150. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.eot +0 -0
  151. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.svg +0 -0
  152. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.ttf +0 -0
  153. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-bold-webfont.woff +0 -0
  154. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.eot +0 -0
  155. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.svg +0 -0
  156. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.ttf +0 -0
  157. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-italic-webfont.woff +0 -0
  158. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.eot +0 -0
  159. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.svg +0 -0
  160. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.ttf +0 -0
  161. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/librebaskerville/librebaskerville-regular-webfont.woff +0 -0
  162. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.eot +0 -0
  163. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.svg +0 -0
  164. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.ttf +0 -0
  165. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Bold-webfont.woff +0 -0
  166. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.eot +0 -0
  167. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.svg +0 -0
  168. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.ttf +0 -0
  169. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-BoldItalic-webfont.woff +0 -0
  170. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.eot +0 -0
  171. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.svg +0 -0
  172. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.ttf +0 -0
  173. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBold-webfont.woff +0 -0
  174. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.eot +0 -0
  175. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.svg +0 -0
  176. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.ttf +0 -0
  177. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-ExtraBoldItalic-webfont.woff +0 -0
  178. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.eot +0 -0
  179. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.svg +0 -0
  180. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.ttf +0 -0
  181. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Italic-webfont.woff +0 -0
  182. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.eot +0 -0
  183. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.svg +0 -0
  184. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.ttf +0 -0
  185. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Light-webfont.woff +0 -0
  186. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.eot +0 -0
  187. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.svg +0 -0
  188. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.ttf +0 -0
  189. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-LightItalic-webfont.woff +0 -0
  190. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.eot +0 -0
  191. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.svg +0 -0
  192. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.ttf +0 -0
  193. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Regular-webfont.woff +0 -0
  194. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.eot +0 -0
  195. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.svg +0 -0
  196. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.ttf +0 -0
  197. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-Semibold-webfont.woff +0 -0
  198. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.eot +0 -0
  199. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.svg +0 -0
  200. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.ttf +0 -0
  201. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts/opensans/OpenSans-SemiboldItalic-webfont.woff +0 -0
  202. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/fonts.css +0 -0
  203. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/layout.css +0 -0
  204. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/magnific-popup.css +0 -0
  205. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/assets/media-queries.css +0 -0
  206. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/config.py +0 -0
  207. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/launcher.py +0 -0
  208. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0000_top_stats.yaml +0 -0
  209. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0100_system_info.yaml +0 -0
  210. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml +0 -0
  211. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0300_mem_chart.yaml +0 -0
  212. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0500_command-processor.yaml +0 -0
  213. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0600_shader-processor-input.yaml +0 -0
  214. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/0700_wavefront-launch.yaml +0 -0
  215. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1000_compute-unit-instruction-mix.yaml +0 -0
  216. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml +0 -0
  217. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1200_lds.yaml +0 -0
  218. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1300_instruction-cache.yaml +0 -0
  219. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1400_constant-cache.yaml +0 -0
  220. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1500_TA_and_TD.yaml +0 -0
  221. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1600_L1_cache.yaml +0 -0
  222. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1700_L2_cache.yaml +0 -0
  223. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/1800_L2_cache_per_channel.yaml +0 -0
  224. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx908/2100_pc_sampling.yaml +0 -0
  225. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0000_top_stats.yaml +0 -0
  226. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0100_system_info.yaml +0 -0
  227. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml +0 -0
  228. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0300_mem_chart.yaml +0 -0
  229. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0400_roofline_info.yaml +0 -0
  230. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0500_command-processor.yaml +0 -0
  231. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0600_shader-processor-input.yaml +0 -0
  232. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/0700_wavefront-launch.yaml +0 -0
  233. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1000_compute-unit-instruction-mix.yaml +0 -0
  234. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml +0 -0
  235. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1200_lds.yaml +0 -0
  236. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1300_instruction-cache.yaml +0 -0
  237. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1400_constant-cache.yaml +0 -0
  238. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1500_TA_and_TD.yaml +0 -0
  239. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1600_L1_cache.yaml +0 -0
  240. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1700_L2_cache.yaml +0 -0
  241. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/1800_L2_cache_per_channel.yaml +0 -0
  242. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx90a/2100_pc_sampling.yaml +0 -0
  243. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0000_top_stats.yaml +0 -0
  244. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0100_system_info.yaml +0 -0
  245. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml +0 -0
  246. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0300_mem_chart.yaml +0 -0
  247. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0400_roofline_info.yaml +0 -0
  248. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0500_command-processor.yaml +0 -0
  249. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0600_shader-processor-input.yaml +0 -0
  250. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/0700_wavefront-launch.yaml +0 -0
  251. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1000_compute-unit-instruction-mix.yaml +0 -0
  252. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml +0 -0
  253. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1200_lds.yaml +0 -0
  254. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1300_instruction-cache.yaml +0 -0
  255. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1400_constant-cache.yaml +0 -0
  256. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1500_TA_and_TD.yaml +0 -0
  257. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1600_L1_cache.yaml +0 -0
  258. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1700_L2_cache.yaml +0 -0
  259. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/1800_L2_cache_per_channel.yaml +0 -0
  260. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx940/2100_pc_sampling.yaml +0 -0
  261. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0000_top_stats.yaml +0 -0
  262. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0100_system_info.yaml +0 -0
  263. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml +0 -0
  264. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0300_mem_chart.yaml +0 -0
  265. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0400_roofline_info.yaml +0 -0
  266. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0500_command-processor.yaml +0 -0
  267. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0600_shader-processor-input.yaml +0 -0
  268. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/0700_wavefront-launch.yaml +0 -0
  269. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1000_compute-unit-instruction-mix.yaml +0 -0
  270. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml +0 -0
  271. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1200_lds.yaml +0 -0
  272. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1300_instruction-cache.yaml +0 -0
  273. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1400_constant-cache.yaml +0 -0
  274. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1500_TA_and_TD.yaml +0 -0
  275. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1600_L1_cache.yaml +0 -0
  276. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1700_L2_cache.yaml +0 -0
  277. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/1800_L2_cache_per_channel.yaml +0 -0
  278. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx941/2100_pc_sampling.yaml +0 -0
  279. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0000_top_stats.yaml +0 -0
  280. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0100_system_info.yaml +0 -0
  281. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml +0 -0
  282. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0300_mem_chart.yaml +0 -0
  283. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0400_roofline_info.yaml +0 -0
  284. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0500_command-processor.yaml +0 -0
  285. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0600_shader-processor-input.yaml +0 -0
  286. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/0700_wavefront-launch.yaml +0 -0
  287. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1000_compute-unit-instruction-mix.yaml +0 -0
  288. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml +0 -0
  289. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1200_lds.yaml +0 -0
  290. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1300_instruction-cache.yaml +0 -0
  291. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1400_constant-cache.yaml +0 -0
  292. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1500_TA_and_TD.yaml +0 -0
  293. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1600_L1_cache.yaml +0 -0
  294. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1700_L2_cache.yaml +0 -0
  295. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/1800_L2_cache_per_channel.yaml +0 -0
  296. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx942/2100_pc_sampling.yaml +0 -0
  297. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0000_top_stats.yaml +0 -0
  298. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0100_system_info.yaml +0 -0
  299. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0200_system-speed-of-light.yaml +0 -0
  300. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0300_mem_chart.yaml +0 -0
  301. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0400_roofline_info.yaml +0 -0
  302. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0500_command-processor.yaml +0 -0
  303. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0600_shader-processor-input.yaml +0 -0
  304. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/0700_wavefront-launch.yaml +0 -0
  305. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1000_compute-unit-instruction-mix.yaml +0 -0
  306. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1100_compute-unit-compute-pipeline.yaml +0 -0
  307. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1200_lds.yaml +0 -0
  308. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1300_instruction-cache.yaml +0 -0
  309. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1400_constant-cache.yaml +0 -0
  310. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1500_TA_and_TD.yaml +0 -0
  311. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1600_L1_cache.yaml +0 -0
  312. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1700_L2_cache.yaml +0 -0
  313. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/1800_L2_cache_per_channel.yaml +0 -0
  314. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/gfx950/2100_pc_sampling.yaml +0 -0
  315. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/analysis_configs/panel_config_template.yaml +0 -0
  316. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_base.py +0 -0
  317. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx908.py +0 -0
  318. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx90a.py +0 -0
  319. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx940.py +0 -0
  320. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx941.py +0 -0
  321. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx942.py +0 -0
  322. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/rocprof_compute_soc/soc_gfx950.py +0 -0
  323. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/__init__.py +0 -0
  324. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/db_connector.py +0 -0
  325. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/file_io.py +0 -0
  326. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/gui.py +0 -0
  327. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/gui_components/__init__.py +0 -0
  328. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/gui_components/header.py +0 -0
  329. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/gui_components/memchart.py +0 -0
  330. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/kernel_name_shortener.py +0 -0
  331. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/logger.py +0 -0
  332. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/mem_chart.py +0 -0
  333. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/mi_gpu_spec.py +0 -0
  334. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/mi_gpu_spec.yaml +0 -0
  335. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/parser.py +0 -0
  336. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/roofline.py +0 -0
  337. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/roofline_calc.py +0 -0
  338. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/schema.py +0 -0
  339. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/specs.py +0 -0
  340. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/tty.py +0 -0
  341. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui/utils/utils.py +0 -0
  342. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/gui_server.py +0 -0
  343. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/profiler.py +0 -0
  344. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/compute/types.py +0 -0
  345. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/sdk/__init__.py +0 -0
  346. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/sdk/analyzer.py +0 -0
  347. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/sdk/finder.py +0 -0
  348. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/sdk/parser.py +0 -0
  349. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/sdk/profiler.py +0 -0
  350. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/sdk/types.py +0 -0
  351. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/__init__.py +0 -0
  352. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/avail/__init__.py +0 -0
  353. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/avail/query.py +0 -0
  354. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/finder.py +0 -0
  355. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/instrument/__init__.py +0 -0
  356. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/instrument/profiler.py +0 -0
  357. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/parsers/__init__.py +0 -0
  358. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/parsers/json_parser.py +0 -0
  359. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/parsers/text_parser.py +0 -0
  360. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/run/__init__.py +0 -0
  361. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/run/analyzer.py +0 -0
  362. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/run/profiler.py +0 -0
  363. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/sample/__init__.py +0 -0
  364. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/sample/profiler.py +0 -0
  365. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/rocprofiler/systems/types.py +0 -0
  366. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/PERFORMANCE.md +0 -0
  367. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/__init__.py +0 -0
  368. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/api.py +0 -0
  369. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/architecture.py +0 -0
  370. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/classifier.py +0 -0
  371. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/formatter.py +0 -0
  372. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/kernel_registry.yaml +0 -0
  373. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/layer_segmentation.py +0 -0
  374. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/loader.py +0 -0
  375. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/same_kernel_analyzer.py +0 -0
  376. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/trace_compare/warnings.py +0 -0
  377. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/tracelens/__init__.py +0 -0
  378. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/tracelens/comparator.py +0 -0
  379. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/tracelens/finder.py +0 -0
  380. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/tracelens/report_generator.py +0 -0
  381. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/lib/tracelens/types.py +0 -0
  382. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/logging/__init__.py +0 -0
  383. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/logging/bridge.py +0 -0
  384. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/logging/color_formatter.py +0 -0
  385. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/logging/json_formatter.py +0 -0
  386. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/logging/logging_config.py +0 -0
  387. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/problem_config.py +0 -0
  388. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/remote_env.py +0 -0
  389. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/remote_jobs.py +0 -0
  390. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/retry.py +0 -0
  391. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/__init__.py +0 -0
  392. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/__main__.py +0 -0
  393. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/_logging/__init__.py +0 -0
  394. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/_logging/color_formatter.py +0 -0
  395. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/_logging/json_formatter.py +0 -0
  396. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/_logging/logging_config.py +0 -0
  397. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/_rate_limit.py +0 -0
  398. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/_retry.py +0 -0
  399. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agent_presets/README.md +0 -0
  400. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agent_presets/__init__.py +0 -0
  401. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agent_presets/base_preset.py +0 -0
  402. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agent_presets/gpt_5_1_codex_04_04.py +0 -0
  403. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agent_presets/gpt_5_2_03_03.py +0 -0
  404. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agent_presets/loader.py +0 -0
  405. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agent_presets/opus_4_01_01.py +0 -0
  406. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agent_presets/rlm_01_01.py +0 -0
  407. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agent_presets/sonnet_4_02_02.py +0 -0
  408. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agent_presets/sonnet_4_subagent_03_02.py +0 -0
  409. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/agents.py +0 -0
  410. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/cli.py +0 -0
  411. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/cli_agents.py +0 -0
  412. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/config/README.md +0 -0
  413. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/config/__init__.py +0 -0
  414. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/config/base.py +0 -0
  415. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/config/loader.py +0 -0
  416. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/config/protocols.py +0 -0
  417. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/datasets/__init__.py +0 -0
  418. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/datasets/lichess_puzzles.py +0 -0
  419. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/deploy.py +0 -0
  420. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/docs/ASYNC_RUNTIME.md +0 -0
  421. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/dtypes.py +0 -0
  422. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/__init__.py +0 -0
  423. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/_formatting.py +0 -0
  424. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/_subprocess.py +0 -0
  425. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/ask_user.py +0 -0
  426. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/base.py +0 -0
  427. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/binary_search.py +0 -0
  428. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/browsing.py +0 -0
  429. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/calculator.py +0 -0
  430. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/chess_puzzle.py +0 -0
  431. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/compose.py +0 -0
  432. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/cuda_grep.py +0 -0
  433. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/git_worktree.py +0 -0
  434. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/handoff.py +0 -0
  435. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/localfs.py +0 -0
  436. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/no_tools.py +0 -0
  437. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/oracle.py +0 -0
  438. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/repl.py +0 -0
  439. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/screenspot.py +0 -0
  440. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/swe_grep.py +0 -0
  441. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/environments/terminal_bench.py +0 -0
  442. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/eval_helpers.py +0 -0
  443. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/evaluation.py +0 -0
  444. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/events.py +0 -0
  445. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/examples/eval/cuda_grep/__init__.py +0 -0
  446. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/examples/eval/cuda_grep/config_all_tools.py +0 -0
  447. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/examples/eval/cuda_grep/config_grep_glob.py +0 -0
  448. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/examples/eval/cuda_grep/config_search_only.py +0 -0
  449. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/examples/eval/cuda_grep/cuda_questions.jsonl +0 -0
  450. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/examples/eval/cuda_grep/eval_cuda_grep.py +0 -0
  451. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/examples/eval/cuda_grep/scoring.py +0 -0
  452. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/export.py +0 -0
  453. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/feedback.py +0 -0
  454. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/fingerprint.py +0 -0
  455. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/DESIGN.md +0 -0
  456. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/README.md +0 -0
  457. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/REFACTOR_PLAN.md +0 -0
  458. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/UI_IMPROVEMENTS.md +0 -0
  459. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/__init__.py +0 -0
  460. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/__main__.py +0 -0
  461. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/dev.sh +0 -0
  462. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/index.html +0 -0
  463. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/index_old.html +0 -0
  464. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/run.py +0 -0
  465. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontend/server.py +0 -0
  466. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/__init__.py +0 -0
  467. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/headless_json.py +0 -0
  468. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/json_frontend.py +0 -0
  469. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/none.py +0 -0
  470. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/protocol.py +0 -0
  471. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/runner.py +0 -0
  472. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/textual_frontend.py +0 -0
  473. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/INTEGRATION.md +0 -0
  474. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/README.md +0 -0
  475. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/REFACTOR_DESIGN.md +0 -0
  476. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/TUI_TODO.md +0 -0
  477. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/__init__.py +0 -0
  478. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/agent_renderer.py +0 -0
  479. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/__init__.py +0 -0
  480. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/assistant_message.py +0 -0
  481. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/error_display.py +0 -0
  482. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/input.py +0 -0
  483. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/loader.py +0 -0
  484. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/loader_container.py +0 -0
  485. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/markdown.py +0 -0
  486. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/question_selector.py +0 -0
  487. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/spacer.py +0 -0
  488. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/status_line.py +0 -0
  489. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/system_message.py +0 -0
  490. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/text.py +0 -0
  491. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/tool_execution.py +0 -0
  492. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/components/user_message.py +0 -0
  493. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/control_flow_types.py +0 -0
  494. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/demo.py +0 -0
  495. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/example_usage.py +0 -0
  496. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/interactive_agent.py +0 -0
  497. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/oauth.py +0 -0
  498. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/slash_commands.py +0 -0
  499. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/terminal.py +0 -0
  500. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/test_rendering.py +0 -0
  501. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/theme.py +0 -0
  502. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/tui.py +0 -0
  503. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui/utils.py +0 -0
  504. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/frontends/tui_frontend.py +0 -0
  505. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/import_cc.py +0 -0
  506. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/__init__.py +0 -0
  507. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/attention/__init__.py +0 -0
  508. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/attention/config.py +0 -0
  509. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/attention/example.py +0 -0
  510. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/attention/flex_backend.py +0 -0
  511. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/attention/layer.py +0 -0
  512. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/attention/mask.py +0 -0
  513. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/attention/protocol.py +0 -0
  514. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/backends/__init__.py +0 -0
  515. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/backends/generate.py +0 -0
  516. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/backends/tokenize.py +0 -0
  517. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/cache/__init__.py +0 -0
  518. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/cache/paged.py +0 -0
  519. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/cache/protocol.py +0 -0
  520. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/cache/radix.py +0 -0
  521. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/context.py +0 -0
  522. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/engine.py +0 -0
  523. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/sampling.py +0 -0
  524. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/scheduler.py +0 -0
  525. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/testing.py +0 -0
  526. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/inference/types.py +0 -0
  527. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/integrations/__init__.py +0 -0
  528. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/logging_utils.py +0 -0
  529. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/models.py +0 -0
  530. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/paths.py +0 -0
  531. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/pipeline.py +0 -0
  532. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/progress.py +0 -0
  533. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/progress_display.py +0 -0
  534. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt.py +0 -0
  535. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/__init__.py +0 -0
  536. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/adapter.py +0 -0
  537. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/adapters/__init__.py +0 -0
  538. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/adapters/system_prompt.py +0 -0
  539. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/adapters/system_user_prompt.py +0 -0
  540. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/adapters/terminal_bench.py +0 -0
  541. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/evaluation.py +0 -0
  542. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/evolutionary.py +0 -0
  543. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/formatting.py +0 -0
  544. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/operations.py +0 -0
  545. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/reflective.py +0 -0
  546. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/state.py +0 -0
  547. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/prompt_optimization/types.py +0 -0
  548. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/providers/__init__.py +0 -0
  549. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/providers/anthropic.py +0 -0
  550. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/providers/base.py +0 -0
  551. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/providers/google.py +0 -0
  552. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/providers/openai_completions.py +0 -0
  553. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/providers/openai_responses.py +0 -0
  554. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/providers/sglang.py +0 -0
  555. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/providers.py +0 -0
  556. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/remote.py +0 -0
  557. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/scoring.py +0 -0
  558. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/search.py +0 -0
  559. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/skills.py +0 -0
  560. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/slice.py +0 -0
  561. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/store.py +0 -0
  562. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/templates/__init__.py +0 -0
  563. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/templates/base.py +0 -0
  564. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/templates/loader.py +0 -0
  565. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tests/test_slice.py +0 -0
  566. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/__init__.py +0 -0
  567. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/decorator.py +0 -0
  568. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/__init__.py +0 -0
  569. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/analysis_tools.py +0 -0
  570. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/config.py +0 -0
  571. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/configs/__init__.py +0 -0
  572. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/configs/qwen3_0_6b.py +0 -0
  573. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/configs/qwen3_next_80b.py +0 -0
  574. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/debug_mask.py +0 -0
  575. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/debug_qwen.py +0 -0
  576. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/debug_qwen3_next.py +0 -0
  577. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/debug_sdpa.py +0 -0
  578. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/debug_swa.py +0 -0
  579. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/debug_toolkit.py +0 -0
  580. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/debug_with_tools.py +0 -0
  581. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/explore_gemma.py +0 -0
  582. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/explore_qwen.py +0 -0
  583. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/explore_qwen3_dense.py +0 -0
  584. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/explore_qwen3_next.py +0 -0
  585. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/llama_functional.py +0 -0
  586. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/qwen3_next_functional.py +0 -0
  587. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/qwen_functional.py +0 -0
  588. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/test_llama.py +0 -0
  589. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/test_qwen.py +0 -0
  590. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/test_template.py +0 -0
  591. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/tools.py +0 -0
  592. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/trace_hf.py +0 -0
  593. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/functional_extractor/verify.py +0 -0
  594. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tools/oracle.py +0 -0
  595. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/__init__.py +0 -0
  596. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/agent_integration.py +0 -0
  597. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/backends/__init__.py +0 -0
  598. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/backends/fsdp.py +0 -0
  599. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/backends/jax_backend.py +0 -0
  600. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/backends/protocol.py +0 -0
  601. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/backends/pytorch.py +0 -0
  602. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/backends/pytorch_factory.py +0 -0
  603. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/backends/torch_func.py +0 -0
  604. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/backends/torchax_backend.py +0 -0
  605. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/datasets/__init__.py +0 -0
  606. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/datasets/data_buffer.py +0 -0
  607. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/datasets/dataset_loaders.py +0 -0
  608. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/datasets/sft.py +0 -0
  609. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/distributed_utils.py +0 -0
  610. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/filters.py +0 -0
  611. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/grpo.py +0 -0
  612. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/loops/__init__.py +0 -0
  613. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/loops/rl_loop.py +0 -0
  614. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/loops/sft_loop.py +0 -0
  615. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/losses.py +0 -0
  616. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/metrics.py +0 -0
  617. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/rollout_gen/__init__.py +0 -0
  618. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/rollout_gen/async_rollout_manager.py +0 -0
  619. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/rollout_gen/rollout_generation.py +0 -0
  620. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/rollout_gen/rollout_manager.py +0 -0
  621. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/types.py +0 -0
  622. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/weight_sync.py +0 -0
  623. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/training/worker.py +0 -0
  624. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/transform_messages.py +0 -0
  625. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tui/DESIGN.md +0 -0
  626. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tui/__init__.py +0 -0
  627. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tui/__main__.py +0 -0
  628. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tui/demo.py +0 -0
  629. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tui/monitor.py +0 -0
  630. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tui/remote_runner.py +0 -0
  631. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tui/terminal.py +0 -0
  632. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/tui/traces.py +0 -0
  633. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/rollouts/upload.py +0 -0
  634. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/roofline/__init__.py +0 -0
  635. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/roofline/analysis.py +0 -0
  636. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/roofline/gpu_specs.py +0 -0
  637. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/sandbox/__init__.py +0 -0
  638. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/sandbox/executor.py +0 -0
  639. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/sandbox/landlock.py +0 -0
  640. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/sandbox/policy.py +0 -0
  641. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/sandbox/seatbelt.py +0 -0
  642. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/sessions/__init__.py +0 -0
  643. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/sessions/agent.py +0 -0
  644. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/sessions/dtypes.py +0 -0
  645. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/sessions/hooks.py +0 -0
  646. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/ssh.py +0 -0
  647. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/targets/digitalocean.py +0 -0
  648. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/targets/runpod.py +0 -0
  649. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/__init__.py +0 -0
  650. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/BENCHMARKING.md +0 -0
  651. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/__init__.py +0 -0
  652. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/aggregation.py +0 -0
  653. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/core.py +0 -0
  654. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/dtypes.py +0 -0
  655. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/metrics.py +0 -0
  656. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/scoring.py +0 -0
  657. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/search.py +0 -0
  658. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/storage.py +0 -0
  659. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/streaming.py +0 -0
  660. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/tests/__init__.py +0 -0
  661. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/autotuner/tests/test_autotuner.py +0 -0
  662. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/bash_tool.py +0 -0
  663. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/capture_tool/__init__.py +0 -0
  664. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/capture_tool/artifacts.py +0 -0
  665. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/capture_tool/context.py +0 -0
  666. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/capture_tool/core.py +0 -0
  667. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/capture_tool/dtypes.py +0 -0
  668. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/capture_tool/executor.py +0 -0
  669. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/capture_tool/metrics.py +0 -0
  670. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/file_tools/__init__.py +0 -0
  671. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/file_tools/edit_tool.py +0 -0
  672. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/file_tools/glob_tool.py +0 -0
  673. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/file_tools/grep_tool.py +0 -0
  674. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/file_tools/read_tool.py +0 -0
  675. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/file_tools/utils.py +0 -0
  676. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/file_tools/write_tool.py +0 -0
  677. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/glob_tool.py +0 -0
  678. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/grep_tool.py +0 -0
  679. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/isa_analysis_tools/__init__.py +0 -0
  680. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/isa_analysis_tools/isa_analysis_tool.py +0 -0
  681. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/isa_analysis_tools/types.py +0 -0
  682. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/nsys_tools/__init__.py +0 -0
  683. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/nsys_tools/discovery.py +0 -0
  684. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/nsys_tools/models.py +0 -0
  685. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/nsys_tools/parser.py +0 -0
  686. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_compute_tools/__init__.py +0 -0
  687. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_compute_tools/rocprof_compute_analyze_tool.py +0 -0
  688. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_compute_tools/rocprof_compute_profile_tool.py +0 -0
  689. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_sdk_tools/__init__.py +0 -0
  690. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_sdk_tools/rocprof_sdk_analyze_tool.py +0 -0
  691. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_sdk_tools/rocprof_sdk_profile_tool.py +0 -0
  692. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_systems_tools/__init__.py +0 -0
  693. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_instrument_tool.py +0 -0
  694. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_profile_tool.py +0 -0
  695. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_query_tool.py +0 -0
  696. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/rocprof_systems_tools/rocprof_systems_sample_tool.py +0 -0
  697. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/skill_tool.py +0 -0
  698. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/tracelens_tools/__init__.py +0 -0
  699. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/tracelens_tools/tracelens_collective_tool.py +0 -0
  700. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/tracelens_tools/tracelens_compare_tool.py +0 -0
  701. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/tracelens_tools/tracelens_report_tool.py +0 -0
  702. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/wafer_tool.py +0 -0
  703. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/tools/write_kernel_tool.py +0 -0
  704. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/__init__.py +0 -0
  705. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/backend.py +0 -0
  706. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/code_validation.py +0 -0
  707. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/environment_serialization.py +0 -0
  708. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/event_streaming.py +0 -0
  709. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/exceptions.py +0 -0
  710. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/execution_types.py +0 -0
  711. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/gpu_environment_utils.py +0 -0
  712. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/__init__.py +0 -0
  713. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/backends.py +0 -0
  714. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/defense.py +0 -0
  715. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/deployment.py +0 -0
  716. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/evaluate.py +0 -0
  717. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/gpu_validation.py +0 -0
  718. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/reference_cache.py +0 -0
  719. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/results.py +0 -0
  720. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/static_checker.py +0 -0
  721. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/targets/__init__.py +0 -0
  722. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/targets/execution.py +0 -0
  723. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/targets/selection.py +0 -0
  724. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/task.py +0 -0
  725. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/kernel_utils/utils.py +0 -0
  726. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/modal_execution/__init__.py +0 -0
  727. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/modal_execution/modal_app.py +0 -0
  728. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/modal_execution/modal_config.py +0 -0
  729. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/modal_execution/modal_execution.py +0 -0
  730. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/modal_execution/test_modal.py +0 -0
  731. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/ncu_profile_tools.py +0 -0
  732. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/path_utils.py +0 -0
  733. {wafer_core-0.1.27 → wafer_core-0.1.28}/wafer_core/utils/remote_execution.py +0 -0
  734. {wafer_core-0.1.27 → wafer_core-0.1.28}/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.27
3
+ Version: 0.1.28
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.27"
3
+ version = "0.1.28"
4
4
  description = "Core utilities and environments for Wafer GPU kernel optimization"
5
5
  requires-python = ">=3.10"
6
6
  dependencies = [
@@ -214,21 +214,28 @@ def align_kernels_within_layer(
214
214
  # The platform that HAS the kernel IS fusing; the other runs components separately
215
215
  is_fused_op = "+" in op_str
216
216
 
217
+ # Operations that can't be "fused away" - absence means alignment issue, not fusion
218
+ non_fusable_ops = {
219
+ "Attention (Prefill)", "Attention (Decode)", "Dense GEMM",
220
+ "KV Cache", "MoE GEMM", "MoE Routing"
221
+ }
222
+ is_non_fusable = op_str in non_fusable_ops
223
+
217
224
  fusion_note = None
218
225
  if amd_count > 0 and nvidia_count == 0:
219
226
  if is_fused_op:
220
227
  # AMD has a fused kernel like "RMSNorm+GEMM" → AMD IS fusing
221
228
  fusion_note = f"AMD fuses {op_str} into {amd_kernel_name}"
222
- else:
223
- # AMD has a regular kernel that NVIDIA doesn't need → NVIDIA fuses it elsewhere
224
- fusion_note = f"AMD runs {amd_kernel_name}, NVIDIA fuses into another kernel"
229
+ elif not is_non_fusable:
230
+ # Only mark as fusion for ops that can legitimately be fused
231
+ fusion_note = f"AMD runs {amd_kernel_name}, NVIDIA may fuse into another kernel"
225
232
  elif amd_count == 0 and nvidia_count > 0:
226
233
  if is_fused_op:
227
234
  # NVIDIA has a fused kernel → NVIDIA IS fusing
228
235
  fusion_note = f"NVIDIA fuses {op_str} into {nvidia_kernel_name}"
229
- else:
230
- # NVIDIA has a regular kernel that AMD doesn't need → AMD fuses it elsewhere
231
- fusion_note = f"NVIDIA runs {nvidia_kernel_name}, AMD fuses into another kernel"
236
+ elif not is_non_fusable:
237
+ # Only mark as fusion for ops that can legitimately be fused
238
+ fusion_note = f"NVIDIA runs {nvidia_kernel_name}, AMD may fuse into another kernel"
232
239
  elif amd_count > nvidia_count * 1.5 and nvidia_count > 0:
233
240
  # AMD runs more kernels = NVIDIA is fusing some
234
241
  fusion_note = f"AMD runs {amd_kernel_name} {amd_count / nvidia_count:.1f}x more → NVIDIA fuses"
@@ -429,13 +429,22 @@ def analyze_traces_aligned(
429
429
  "kernel_pairs": kernel_pairs,
430
430
  })
431
431
 
432
- fusion_result = analyze_fusion_from_alignment(alignment.layer_alignments)
433
- same_kernel_result = analyze_same_kernels_from_alignment(alignment.layer_alignments)
434
-
432
+ # Determine which trace is AMD vs NVIDIA for fusion analysis
435
433
  if trace1.platform == "AMD":
436
434
  amd_trace, nvidia_trace = trace1, trace2
435
+ fusion_amd_kernels = amd_kernels
436
+ fusion_nvidia_kernels = nvidia_kernels
437
437
  else:
438
438
  amd_trace, nvidia_trace = trace2, trace1
439
+ fusion_amd_kernels = nvidia_kernels
440
+ fusion_nvidia_kernels = amd_kernels
441
+
442
+ fusion_result = analyze_fusion_from_alignment(
443
+ alignment.layer_alignments,
444
+ amd_kernels=fusion_amd_kernels,
445
+ nvidia_kernels=fusion_nvidia_kernels,
446
+ )
447
+ same_kernel_result = analyze_same_kernels_from_alignment(alignment.layer_alignments)
439
448
 
440
449
  return {
441
450
  "metadata": {
@@ -0,0 +1,464 @@
1
+ """Fusion analysis for detecting kernel fusion differences between platforms.
2
+
3
+ Detects fusion differences between AMD and NVIDIA by analyzing:
4
+ 1. Kernel types unique to each platform (one platform fuses them away)
5
+ 2. Sequence patterns (what comes before/after unique kernels)
6
+ 3. Count imbalances (one platform has significantly more calls)
7
+
8
+ This is the pattern-based approach which is more reliable than alignment-based detection.
9
+ """
10
+
11
+ from collections import Counter, defaultdict
12
+ from dataclasses import dataclass, field
13
+ from typing import Any
14
+
15
+ from .classifier import classify, Op
16
+
17
+
18
+ @dataclass
19
+ class FusionPattern:
20
+ """A detected fusion pattern."""
21
+
22
+ layer: int
23
+ operation: str # The fused operation name (e.g., "RMSNorm+GEMM")
24
+ fused_platform: str # Platform that fuses (has fewer kernels)
25
+ fused_kernel: str # The actual fused kernel name
26
+ unfused_kernels: list[str] # List of separate kernels on the other platform
27
+ count: int
28
+ evidence: str
29
+
30
+
31
+ @dataclass
32
+ class FusionAnalysis:
33
+ """Complete fusion analysis result."""
34
+
35
+ patterns: list[FusionPattern] = field(default_factory=list)
36
+ summary: dict[str, Any] = field(default_factory=dict)
37
+
38
+
39
+ def _classify_kernel(name: str, platform: str = "AMD") -> str:
40
+ """Classify a kernel name to its operation type."""
41
+ op, _pattern = classify(name, platform)
42
+ return op.value
43
+
44
+
45
+ def _find_fusion_mappings(
46
+ trace1_kernels: list[dict],
47
+ trace2_kernels: list[dict],
48
+ trace1_name: str = "Trace1",
49
+ trace2_name: str = "Trace2",
50
+ trace1_platform: str = "AMD",
51
+ ) -> list[dict]:
52
+ """Find fusion mappings by analyzing kernel execution sequence patterns.
53
+
54
+ This function identifies when one platform runs multiple kernels separately
55
+ while the other platform fuses them into a single kernel.
56
+
57
+ Args:
58
+ trace1_kernels: List of kernel events from first trace
59
+ trace2_kernels: List of kernel events from second trace
60
+ trace1_name: Name of first platform (e.g., "AMD")
61
+ trace2_name: Name of second platform (e.g., "NVIDIA")
62
+ trace1_platform: Platform string for classification ("AMD" or "NVIDIA")
63
+
64
+ Returns:
65
+ List of mapping dictionaries with fusion details
66
+ """
67
+ mappings = []
68
+ trace2_platform = "NVIDIA" if trace1_platform == "AMD" else "AMD"
69
+
70
+ # Sort kernels by timestamp
71
+ trace1_sorted = sorted(trace1_kernels, key=lambda k: k.get("ts", 0))
72
+ trace2_sorted = sorted(trace2_kernels, key=lambda k: k.get("ts", 0))
73
+
74
+ # Classify all kernels
75
+ trace1_types = [_classify_kernel(k.get("name", ""), trace1_platform) for k in trace1_sorted]
76
+ trace2_types = [_classify_kernel(k.get("name", ""), trace2_platform) for k in trace2_sorted]
77
+
78
+ # Find kernel types unique to each trace
79
+ trace1_type_set = set(trace1_types)
80
+ trace2_type_set = set(trace2_types)
81
+
82
+ trace1_only = trace1_type_set - trace2_type_set
83
+ trace2_only = trace2_type_set - trace1_type_set
84
+
85
+ # For each unique type in trace1, find common sequence patterns
86
+ for unique_type in trace1_only:
87
+ # Skip "Other" since it's too generic
88
+ if unique_type == "Other":
89
+ continue
90
+
91
+ # Find all occurrences of this type
92
+ indices = [i for i, t in enumerate(trace1_types) if t == unique_type]
93
+
94
+ if len(indices) < 5: # Need enough samples to be meaningful
95
+ continue
96
+
97
+ # Analyze what comes before each occurrence
98
+ before_types: dict[str, int] = defaultdict(int)
99
+
100
+ for idx in indices:
101
+ if idx > 0:
102
+ before_types[trace1_types[idx - 1]] += 1
103
+
104
+ # Find the most common pattern
105
+ if not before_types:
106
+ continue
107
+ most_common_before = max(before_types.items(), key=lambda x: x[1])
108
+
109
+ # If there's a strong pattern (>80% of occurrences)
110
+ if most_common_before[1] / len(indices) > 0.8:
111
+ fusion_candidate = most_common_before[0]
112
+
113
+ # Verify trace2 has this type
114
+ if fusion_candidate in trace2_type_set:
115
+ trace1_fusion_count = trace1_types.count(fusion_candidate)
116
+ trace2_fusion_count = trace2_types.count(fusion_candidate)
117
+
118
+ mappings.append({
119
+ "fused_platform": trace2_name,
120
+ "fused_kernel_type": fusion_candidate,
121
+ "fused_count": trace2_fusion_count,
122
+ "unfused_platform": trace1_name,
123
+ "unfused_sequence": [fusion_candidate, unique_type],
124
+ "unfused_count_per_type": {
125
+ fusion_candidate: trace1_fusion_count,
126
+ unique_type: len(indices),
127
+ },
128
+ "pattern_count": len(indices),
129
+ "pattern_confidence": most_common_before[1] / len(indices),
130
+ "evidence": f"{trace1_name} runs {fusion_candidate}+{unique_type} separately, {trace2_name} fuses into {fusion_candidate}",
131
+ })
132
+
133
+ # Also check trace2-only types
134
+ for unique_type in trace2_only:
135
+ if unique_type == "Other":
136
+ continue
137
+
138
+ indices = [i for i, t in enumerate(trace2_types) if t == unique_type]
139
+
140
+ if len(indices) < 5:
141
+ continue
142
+
143
+ before_types = defaultdict(int)
144
+
145
+ for idx in indices:
146
+ if idx > 0:
147
+ before_types[trace2_types[idx - 1]] += 1
148
+
149
+ if not before_types:
150
+ continue
151
+ most_common_before = max(before_types.items(), key=lambda x: x[1])
152
+
153
+ if most_common_before[1] / len(indices) > 0.8:
154
+ fusion_candidate = most_common_before[0]
155
+
156
+ if fusion_candidate in trace1_type_set:
157
+ trace1_fusion_count = trace1_types.count(fusion_candidate)
158
+ trace2_fusion_count = trace2_types.count(fusion_candidate)
159
+
160
+ mappings.append({
161
+ "fused_platform": trace1_name,
162
+ "fused_kernel_type": fusion_candidate,
163
+ "fused_count": trace1_fusion_count,
164
+ "unfused_platform": trace2_name,
165
+ "unfused_sequence": [fusion_candidate, unique_type],
166
+ "unfused_count_per_type": {
167
+ fusion_candidate: trace2_fusion_count,
168
+ unique_type: len(indices),
169
+ },
170
+ "pattern_count": len(indices),
171
+ "pattern_confidence": most_common_before[1] / len(indices),
172
+ "evidence": f"{trace2_name} runs {fusion_candidate}+{unique_type} separately, {trace1_name} fuses into {fusion_candidate}",
173
+ })
174
+
175
+ return mappings
176
+
177
+
178
+ def _find_count_imbalance_fusions(
179
+ trace1_kernels: list[dict],
180
+ trace2_kernels: list[dict],
181
+ trace1_name: str = "Trace1",
182
+ trace2_name: str = "Trace2",
183
+ trace1_platform: str = "AMD",
184
+ ) -> list[dict]:
185
+ """Find fusions by looking for significant count imbalances.
186
+
187
+ When one platform has significantly more kernel calls of a type (>1.5x),
188
+ it suggests the other platform fuses those operations.
189
+ """
190
+ mappings = []
191
+ trace2_platform = "NVIDIA" if trace1_platform == "AMD" else "AMD"
192
+
193
+ # Classify all kernels
194
+ trace1_types = [_classify_kernel(k.get("name", ""), trace1_platform) for k in trace1_kernels]
195
+ trace2_types = [_classify_kernel(k.get("name", ""), trace2_platform) for k in trace2_kernels]
196
+
197
+ # Count by type
198
+ trace1_counts = Counter(trace1_types)
199
+ trace2_counts = Counter(trace2_types)
200
+
201
+ # Find common types with significant differences
202
+ common_types = set(trace1_counts.keys()) & set(trace2_counts.keys())
203
+
204
+ for ktype in common_types:
205
+ if ktype == "Other":
206
+ continue
207
+
208
+ trace1_count = trace1_counts[ktype]
209
+ trace2_count = trace2_counts[ktype]
210
+
211
+ # Skip trivial counts
212
+ if trace1_count + trace2_count < 50:
213
+ continue
214
+
215
+ # Check if there's a significant imbalance (>1.5x)
216
+ if trace1_count == 0 or trace2_count == 0:
217
+ continue
218
+
219
+ ratio = max(trace1_count, trace2_count) / min(trace1_count, trace2_count)
220
+
221
+ if ratio < 1.5:
222
+ continue
223
+
224
+ # Determine which platform has more (unfused) and which has fewer (fused)
225
+ if trace1_count > trace2_count:
226
+ unfused_platform = trace1_name
227
+ fused_platform = trace2_name
228
+ unfused_count = trace1_count
229
+ fused_count = trace2_count
230
+ else:
231
+ unfused_platform = trace2_name
232
+ fused_platform = trace1_name
233
+ unfused_count = trace2_count
234
+ fused_count = trace1_count
235
+
236
+ mappings.append({
237
+ "fused_platform": fused_platform,
238
+ "fused_kernel_type": ktype,
239
+ "fused_count": fused_count,
240
+ "unfused_platform": unfused_platform,
241
+ "unfused_sequence": [ktype],
242
+ "unfused_count_per_type": {ktype: unfused_count},
243
+ "pattern_count": unfused_count - fused_count,
244
+ "pattern_confidence": (unfused_count - fused_count) / unfused_count,
245
+ "evidence": f"{unfused_platform} calls {ktype} {ratio:.1f}x more ({unfused_count} vs {fused_count}), {fused_platform} likely fuses",
246
+ })
247
+
248
+ return mappings
249
+
250
+
251
+ def _find_explicit_fused_operations(
252
+ trace1_kernels: list[dict],
253
+ trace2_kernels: list[dict],
254
+ trace1_name: str = "Trace1",
255
+ trace2_name: str = "Trace2",
256
+ trace1_platform: str = "AMD",
257
+ ) -> list[dict]:
258
+ """Find explicit fused operations (kernels with '+' in their classification).
259
+
260
+ These are operations like 'RMSNorm+GEMM' that are explicitly classified as fused.
261
+ """
262
+ mappings = []
263
+ trace2_platform = "NVIDIA" if trace1_platform == "AMD" else "AMD"
264
+
265
+ def get_fused_ops(kernels: list[dict], platform: str) -> dict[str, list[str]]:
266
+ """Get fused operations and their kernel names."""
267
+ fused_ops: dict[str, list[str]] = defaultdict(list)
268
+ for k in kernels:
269
+ name = k.get("name", "")
270
+ op, _pattern = classify(name, platform)
271
+ if "+" in op.value or op == Op.FUSED_UNKNOWN:
272
+ fused_ops[op.value].append(name)
273
+ return dict(fused_ops)
274
+
275
+ trace1_fused = get_fused_ops(trace1_kernels, trace1_platform)
276
+ trace2_fused = get_fused_ops(trace2_kernels, trace2_platform)
277
+
278
+ # Find fused operations unique to trace1
279
+ for fused_op, kernels in trace1_fused.items():
280
+ if fused_op not in trace2_fused:
281
+ # Parse components from the fused op name
282
+ if "+" in fused_op:
283
+ components = [c.strip() for c in fused_op.split("+")]
284
+ else:
285
+ components = [fused_op]
286
+
287
+ mappings.append({
288
+ "fused_platform": trace1_name,
289
+ "fused_kernel_type": fused_op,
290
+ "fused_count": len(kernels),
291
+ "unfused_platform": trace2_name,
292
+ "unfused_sequence": components,
293
+ "unfused_count_per_type": {c: 0 for c in components}, # Unknown
294
+ "pattern_count": len(kernels),
295
+ "pattern_confidence": 1.0,
296
+ "evidence": f"{trace1_name} fuses {' + '.join(components)} into {fused_op} ({len(kernels)} calls)",
297
+ "fused_kernel_names": kernels[:3], # Sample of kernel names
298
+ })
299
+
300
+ # Find fused operations unique to trace2
301
+ for fused_op, kernels in trace2_fused.items():
302
+ if fused_op not in trace1_fused:
303
+ if "+" in fused_op:
304
+ components = [c.strip() for c in fused_op.split("+")]
305
+ else:
306
+ components = [fused_op]
307
+
308
+ mappings.append({
309
+ "fused_platform": trace2_name,
310
+ "fused_kernel_type": fused_op,
311
+ "fused_count": len(kernels),
312
+ "unfused_platform": trace1_name,
313
+ "unfused_sequence": components,
314
+ "unfused_count_per_type": {c: 0 for c in components},
315
+ "pattern_count": len(kernels),
316
+ "pattern_confidence": 1.0,
317
+ "evidence": f"{trace2_name} fuses {' + '.join(components)} into {fused_op} ({len(kernels)} calls)",
318
+ "fused_kernel_names": kernels[:3],
319
+ })
320
+
321
+ return mappings
322
+
323
+
324
+ def detect_fusion_patterns(
325
+ amd_kernels: list[dict],
326
+ nvidia_kernels: list[dict],
327
+ ) -> FusionAnalysis:
328
+ """Detect fusion patterns using pattern-based analysis.
329
+
330
+ This is the main entry point for fusion detection. It combines:
331
+ 1. Explicit fused operations (kernels classified with '+' in name)
332
+ 2. Sequence pattern analysis (unique kernel types with consistent patterns)
333
+ 3. Count imbalance analysis (one platform has significantly more calls)
334
+
335
+ Args:
336
+ amd_kernels: List of AMD kernel events
337
+ nvidia_kernels: List of NVIDIA kernel events
338
+
339
+ Returns:
340
+ FusionAnalysis with detected patterns
341
+ """
342
+ all_mappings: list[dict] = []
343
+
344
+ # 1. Find explicit fused operations (highest confidence)
345
+ explicit_fusions = _find_explicit_fused_operations(
346
+ amd_kernels, nvidia_kernels,
347
+ trace1_name="AMD", trace2_name="NVIDIA",
348
+ trace1_platform="AMD",
349
+ )
350
+ all_mappings.extend(explicit_fusions)
351
+
352
+ # 2. Find sequence-based fusions
353
+ sequence_fusions = _find_fusion_mappings(
354
+ amd_kernels, nvidia_kernels,
355
+ trace1_name="AMD", trace2_name="NVIDIA",
356
+ trace1_platform="AMD",
357
+ )
358
+ # Deduplicate: skip if same fused_kernel_type already found
359
+ existing_types = {m["fused_kernel_type"] for m in all_mappings}
360
+ for fusion in sequence_fusions:
361
+ if fusion["fused_kernel_type"] not in existing_types:
362
+ all_mappings.append(fusion)
363
+ existing_types.add(fusion["fused_kernel_type"])
364
+
365
+ # 3. Find count-imbalance fusions
366
+ count_fusions = _find_count_imbalance_fusions(
367
+ amd_kernels, nvidia_kernels,
368
+ trace1_name="AMD", trace2_name="NVIDIA",
369
+ trace1_platform="AMD",
370
+ )
371
+ # Deduplicate
372
+ for fusion in count_fusions:
373
+ if fusion["fused_kernel_type"] not in existing_types:
374
+ all_mappings.append(fusion)
375
+ existing_types.add(fusion["fused_kernel_type"])
376
+
377
+ # Convert to FusionPattern objects
378
+ patterns: list[FusionPattern] = []
379
+ for mapping in all_mappings:
380
+ fused_kernel_names = mapping.get("fused_kernel_names", [])
381
+ fused_kernel = fused_kernel_names[0] if fused_kernel_names else mapping["fused_kernel_type"]
382
+
383
+ patterns.append(
384
+ FusionPattern(
385
+ layer=0, # Pattern-based analysis doesn't track layers
386
+ operation=mapping["fused_kernel_type"],
387
+ fused_platform=mapping["fused_platform"],
388
+ fused_kernel=fused_kernel,
389
+ unfused_kernels=mapping["unfused_sequence"],
390
+ count=mapping["pattern_count"],
391
+ evidence=mapping["evidence"],
392
+ )
393
+ )
394
+
395
+ amd_fuses = sum(1 for p in patterns if p.fused_platform == "AMD")
396
+ nvidia_fuses = sum(1 for p in patterns if p.fused_platform == "NVIDIA")
397
+
398
+ return FusionAnalysis(
399
+ patterns=patterns,
400
+ summary={
401
+ "amd_fuses": amd_fuses,
402
+ "nvidia_fuses": nvidia_fuses,
403
+ "total_fusion_opportunities": len(patterns),
404
+ },
405
+ )
406
+
407
+
408
+ def analyze_fusion_from_alignment(
409
+ layer_alignments: list[Any],
410
+ amd_kernels: list[dict] | None = None,
411
+ nvidia_kernels: list[dict] | None = None,
412
+ ) -> dict[str, Any]:
413
+ """Analyze fusion from kernel data (for API compatibility).
414
+
415
+ Args:
416
+ layer_alignments: List of aligned layers (unused - kept for API compatibility)
417
+ amd_kernels: Optional list of AMD kernel events for pattern-based analysis
418
+ nvidia_kernels: Optional list of NVIDIA kernel events for pattern-based analysis
419
+
420
+ Returns:
421
+ Dictionary with fusion analysis results
422
+ """
423
+ # If raw kernels provided, use pattern-based analysis (preferred)
424
+ if amd_kernels is not None and nvidia_kernels is not None:
425
+ fusion_analysis = detect_fusion_patterns(amd_kernels, nvidia_kernels)
426
+ else:
427
+ # Fallback: empty analysis if no kernel data
428
+ fusion_analysis = FusionAnalysis(
429
+ patterns=[],
430
+ summary={"amd_fuses": 0, "nvidia_fuses": 0, "total_fusion_opportunities": 0},
431
+ )
432
+
433
+ fusion_opportunities = []
434
+ fusion_mappings = []
435
+
436
+ for pattern in fusion_analysis.patterns:
437
+ unfused_platform = "NVIDIA" if pattern.fused_platform == "AMD" else "AMD"
438
+
439
+ fusion_opportunities.append({
440
+ "kernel_type": pattern.operation,
441
+ "layer": pattern.layer,
442
+ "fused_by": pattern.fused_platform,
443
+ "fused_kernel": pattern.fused_kernel,
444
+ "unfused_kernels": pattern.unfused_kernels,
445
+ "count": pattern.count,
446
+ "evidence": pattern.evidence,
447
+ })
448
+
449
+ fusion_mappings.append({
450
+ "fused_platform": pattern.fused_platform,
451
+ "fused_kernel_type": pattern.operation,
452
+ "fused_kernel_name": pattern.fused_kernel,
453
+ "unfused_platform": unfused_platform,
454
+ "unfused_sequence": pattern.unfused_kernels,
455
+ "pattern_count": pattern.count,
456
+ "evidence": pattern.evidence,
457
+ "layer": pattern.layer,
458
+ })
459
+
460
+ return {
461
+ "fusion_opportunities": fusion_opportunities,
462
+ "fusion_mappings": fusion_mappings,
463
+ "summary": fusion_analysis.summary,
464
+ }
@@ -1,5 +1,43 @@
1
- """Re-export targets from utils for convenience."""
1
+ """Target system: specs (config) + targets (live resources) + reconciliation.
2
2
 
3
+ New API (preferred):
4
+ from wafer_core.targets import Target, TargetSpec, ReconcileResult
5
+ from wafer_core.targets.providers import get_provider
6
+ from wafer_core.targets.reconcile import reconcile
7
+ from wafer_core.targets.spec_store import load_spec, list_spec_names
8
+ from wafer_core.targets.state_cache import get_binding_hints
9
+
10
+ Legacy API (still works, will be deprecated):
11
+ from wafer_core.targets import RunPodTarget, runpod_ssh_context, ...
12
+ """
13
+
14
+ # ── New types ────────────────────────────────────────────────────────────────
15
+ from wafer_core.targets.digitalocean import (
16
+ DigitalOceanError,
17
+ DigitalOceanSSHInfo,
18
+ cleanup_all_droplets,
19
+ cleanup_digitalocean_target,
20
+ digitalocean_ssh_context,
21
+ get_droplet_state,
22
+ list_running_droplets,
23
+ )
24
+ from wafer_core.targets.runpod import (
25
+ RunPodError,
26
+ RunPodSSHInfo,
27
+ cleanup_all_pods,
28
+ cleanup_target,
29
+ get_pod_state,
30
+ list_running_pods,
31
+ runpod_ssh_context,
32
+ )
33
+ from wafer_core.targets.types import (
34
+ ReconcileResult,
35
+ Target,
36
+ TargetProvider,
37
+ TargetSpec,
38
+ )
39
+
40
+ # ── Legacy re-exports (unchanged, for backwards compatibility) ───────────────
3
41
  from wafer_core.utils.kernel_utils.targets import (
4
42
  BaremetalTarget,
5
43
  DigitalOceanTarget,
@@ -18,26 +56,14 @@ from wafer_core.utils.kernel_utils.targets import (
18
56
  select_target_for_operation,
19
57
  target_to_deployment_config,
20
58
  )
21
- from wafer_core.targets.runpod import (
22
- RunPodError,
23
- RunPodSSHInfo,
24
- cleanup_all_pods,
25
- cleanup_target,
26
- get_pod_state,
27
- list_running_pods,
28
- runpod_ssh_context,
29
- )
30
- from wafer_core.targets.digitalocean import (
31
- DigitalOceanError,
32
- DigitalOceanSSHInfo,
33
- cleanup_all_droplets,
34
- cleanup_digitalocean_target,
35
- digitalocean_ssh_context,
36
- get_droplet_state,
37
- list_running_droplets,
38
- )
39
59
 
40
60
  __all__ = [
61
+ # New API
62
+ "Target",
63
+ "TargetSpec",
64
+ "TargetProvider",
65
+ "ReconcileResult",
66
+ # Legacy: target config types
41
67
  "BaremetalTarget",
42
68
  "VMTarget",
43
69
  "ModalTarget",
@@ -54,7 +80,7 @@ __all__ = [
54
80
  "check_target_available",
55
81
  "find_free_gpu",
56
82
  "run_operation_on_target",
57
- # RunPod provisioning
83
+ # Legacy: RunPod provisioning
58
84
  "RunPodError",
59
85
  "RunPodSSHInfo",
60
86
  "runpod_ssh_context",
@@ -62,7 +88,7 @@ __all__ = [
62
88
  "cleanup_all_pods",
63
89
  "list_running_pods",
64
90
  "get_pod_state",
65
- # DigitalOcean provisioning
91
+ # Legacy: DigitalOcean provisioning
66
92
  "DigitalOceanError",
67
93
  "DigitalOceanSSHInfo",
68
94
  "digitalocean_ssh_context",