Repository navigation
[Bench] Add liboffload memcpy, allocation and fill benchmarks to CI - #23699
Merged
Merged
Conversation
Contributor
Author
Full testing params matrix
A. Memcpy:
|
| Runtime | src -> dst | size | profilers | status |
|---|---|---|---|---|
| SYCL | Device -> Device | 1024 | T+C | existing |
| OL | Device -> Device | 1024 | T+C | new |
QueueInOrderMemcpy. --iterations=10000 --IsCopyOnly=0 --count=100 --withCopyOffload=0 --profilerType, plus --doNotPrintBandwidth on L0.
| Runtime | src -> dst | size | profilers | status |
|---|---|---|---|---|
| SYCL | Device -> Device | 1024 | T+C | existing |
| SYCL | Host -> Device | 1024 | T+C | existing |
| L0 | Device -> Device | 1024 | TIMER | new |
| L0 | Host -> Device | 1024 | TIMER | new |
| OL | Device -> Device | 1024 | T+C | new |
| OL | Host -> Device | 1024 | T+C | new |
Total: 14 instances, 8 new.
B. Alloc: api_overhead_benchmark_{ur,l0,ol}
UsmMemoryAllocation: --iterations=10000 --measureMode=Both --strategy=sync.
| Runtime | type | size | status |
|---|---|---|---|
| UR | Device | 256, 262144 | existing |
| L0 | Device | 256, 262144 | new |
| OL | Device | 256, 262144 | new |
UsmBatchMemoryAllocation: --iterations=1000 --measureMode=Both. No L0 implementation.
| Runtime | type | allocationCount | size | status |
|---|---|---|---|---|
| UR | Device | 128 | 256, 16384, 131072 | existing |
| OL | Device | 128 | 256, 16384, 131072 | new |
Total: 12 instances, 7 new. Groups: UsmMemoryAllocation, UsmBatchMemoryAllocation.
C. Fill: memory_benchmark_{l0,ol} UsmFillImmediate
All rows: --memory=Device --contents=Zeros --patternContents=Random --forceBlitter=0 --useEvents=0. Small rows also pass --doNotPrintBandwidth.
| Variant | Runtime | patternSize | small (nominal 4096) | large (nominal 536870912) | liboffload path |
|---|---|---|---|---|---|
| L0 | L0 | 4 | 4096 | 536870912 | n/a (native L0) |
| OL | OL | 4 | 4096 | 536870912 | native fill |
| OL non-pow2 | OL | 3 | 4095 (truncate 1) | 536870913 (pad 1) | replicate |
| size class | --iterations |
metric | unit | better | group |
|---|---|---|---|---|---|
| small | 10000 | time per fill (host-timed, incl. sync) | µs | lower | UsmFillImmediate Device, small fill |
| large | 100 | fill bandwidth (size / host time) | GB/s | higher | UsmFillImmediate Device, large fill |
Total: 6 instances, all new.
311Volt
marked this pull request as ready for review
November 2, 2026 16:21
PatKamin
reviewed
Nov 3, 2026
PatKamin
reviewed
Nov 3, 2026
PatKamin
approved these changes
Nov 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Liboffload implementations of
QueueMemcpy,QueueInOrderMemcpy,UsmFillImmediate,UsmMemoryAllocationandUsmBatchMemoryAllocationhave been merged to Compute Benchmarks. Run the newly-merged liboffload implementations of the memcpy, USM allocation and USM fill Compute Benchmarks in the "SYCL Run Benchmarks" nightly job, next to their existing baselines if applicable.For the fill and memcpy benchmarks, add Offload instances against existing SYCL/UR baselines where possible. Additionally, add L0 instances for
UsmMemoryAllocationandQueueInOrderMemcpy, leveraging previously existing Compute Benchmarks implementations, to better gauge API overhead of the other higher-level APIs. Rewrite the memcpy classes to no longer hardcode SYCL and be parametrized on the API instead.Add benchmark instances for UsmFillImmediate - L0 and OL with a 4-byte pattern, and OL with a 3-byte pattern, on a 4 KiB and a 512 MiB device buffer. The intent is to exercise liboffload's non-pow2 pattern support, which may use a slow path underneath (on L0 plugin it appends O(log n) memcpy commands). Small fills report time in µs, large fills report bandwidth in GB/s.
Bump Compute Benchmarks to de729a5340ac (Oct 30, 2026) to pick up the new liboffload benchmarks. The new version requires
--strategyforUsmMemoryAllocation. Pass--strategy=sync, to preserve pre-bump behavior.Full testing matrix for affected benchmarks after the patch is provided as a PR comment.