8000 WIP MI300 experiments by kvark · Pull Request #405 · kvark/blade · GitHub
[go: up one dir, main page]

Skip to content

WIP MI300 experiments - #405

Draft
kvark wants to merge 1 commit into
mainfrom
mi300
Draft

kvark wants to merge 1 commit into
mainfrom
mi300

Conversation

@kvark
@kvark kvark commented Oct 7, 2026
Copy link
Copy Markdown
Owner

No description provided.

kvark pushed a commit that referenced this pull request Oct 9, 2026
Naga declares StorageBuffer16BitAccess and UniformAndStorageBuffer16BitAccess
for any f16 type, but the Vulkan backend enabled the matching device
features only when cooperative matrix reported f16 shapes. Devices with
shaderFloat16 and no f16 cooperative matrix (MI300X on RADV, lavapipe) got
f16 shaders declaring features that were never enabled.

Report shader_float16 only when both 16-bit storage features are present,
and enable them whenever shader_float16 is. The cooperative matrix f16
shapes now key off the same flag, so the old auto-enable is redundant.

Taken from the MI300 experiments in #405.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W9jSvpnbXEXmoHFuUVFdUN
@kvark kvark left a comment
Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Slop-focused review of 0dcb01c.

  1. Keep FP16 arithmetic capability separate from FP16 storage capability. In vulkan/init.rs, shader_float16 now requires shaderFloat16 and both 16-bit storage-buffer features. That changes the meaning of a capability named/documented as shader FP16 support into "FP16 plus this storage layout happens to work." Those are different contracts. Please expose arithmetic/type support independently and gate storage-using shaders on the storage feature they actually need. Cooperative-matrix discovery can then depend on the precise combination required instead of redefining the base capability.

  2. Keep MI300 bring-up machinery out of the generic project surface. This PR adds ~800 lines of hardware-specific smoke/throughput programs plus scripts with MI300 device ID 0x74b5, RADV_EXPERIMENTAL_CDNA, XCC controls, and default /root/... Mesa/libdrm paths. That is useful bring-up evidence, but it reads like temporary lab infrastructure rather than durable Blade examples. Please keep the reusable correctness probes small/generic and move MI300-specific orchestration/configuration into a dedicated hardware bring-up/test area (or external experiment harness) so normal examples remain representative of the API rather than one machine.

  3. Isolate the crash-marker barrier if it is a driver workaround. command.rs now emits a TRANSFER→TRANSFER buffer barrier before every marker write. If this is needed for AMD marker ordering or a specific driver, document the exact hazard and gate it as narrowly as possible. An unconditional synchronization point in the generic command path is the kind of workaround that becomes permanent and hard to reason about later.

The goal here is not to remove the MI300 work; it is to prevent one bring-up target from redefining core capability semantics and generic command behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0