Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add XeTile block operation fallback pass #991

Merged
merged 1 commit into from
Dec 20, 2024

Conversation

silee2
Copy link
Contributor

@silee2 silee2 commented Dec 20, 2024

Certain block operation legal at XeTile dialect level cannot be supported by matching XeGPU dialect op due to not meeting HW restriction.
This PR adds a new pass that provide a fallback for some cases. Pass can be called with command line arg --xetile-blockop-fallback The cases covered are:
Source of Tile is a static shaped row major memref but

  • pitch is not a multiple of 16 bytes or less than 64 bytes
  • or memory space indicates SLM memory

For such fitting case, this pass turns

  • block tile to scatter tile
  • load_tile to load
  • store_tile to store
  • update_tile_offset to use tile shaped indices instead of X, Y offset
  • impacted scf.for arguments from block tile type to scatter tile type

Please review these guidelines to help with the review process:

  • Have you provided a meaningful PR description?
  • Have you added a test, a reproducer, or a reference to an issue with a reproducer?
  • Have you tested your changes locally for CPU and GPU devices?
  • Have you made sure that new changes do not introduce compiler warnings?
  • If this PR is a work in progress, are you filing the PR as a draft?
  • Have you organized your commits logically and ensured each can be built by itself?

Certain block operation legal at XeTile dialect level cannot be
supported by matching XeGPU dialect op due to not meeting HW
restriction.
This PR adds a new pass that provide a fallback for some cases.
Pass can be called with command line arg --xetile-blockop-fallback
The cases covered are:
Source of Tile is a static shaped row major memref but
- pitch is not a multiple of 16 bytes or less than 64 bytes
- or memory space indicates SLM memory

For such fitting case, this pass turns
- block tile to scatter tile
- load_tile to load
- store_tile to store
- update_tile_offset to use tile shaped indices instead of X, Y offset
- impacted scf.for arguments from block tile type to scatter tile type
@silee2 silee2 requested review from chencha3 and Garra1980 December 20, 2024 20:25
@silee2 silee2 merged commit ff51594 into intel:main Dec 20, 2024
2 checks passed
@silee2 silee2 deleted the XeTileBlockFallback_for_upstream branch December 20, 2024 20:58
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.

2 participants