Repository navigation
KernelInterface: check a work-group's total size first, and without division - #938
Conversation
Benchmark resultsCompared with c42b1f458, the merge base. Times are the minimum time of every benchmark. A change is unusual when it exceeds both three times the benchmark's typical change between consecutive runs on the default branch and a minimum per category (performance 3%, latency 5%, applications 3%, other 3%). A benchmark that starts or stops allocating is listed however few the allocations. A single run can still be a fluke, so rerun before drawing conclusions.
No unusual changes. All benchmarks
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #938 +/- ##
==========================================
- Coverage 84.80% 83.99% -0.81%
==========================================
Files 31 31
Lines 2593 2543 -50
==========================================
- Hits 2199 2136 -63
- Misses 394 407 +13 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Linearized launches put all work-items in the first dimension, so an oversized (96, 48) work-group was reported as a per-dimension error for (4608, 1, 1). Check the total first, which reports the kernel's limit of 4096 work-items instead.
`prod_exceeds` runs on every launch. Checked multiplication avoids a 64-bit division per dimension, which costs tens of cycles on CPUs such as Skylake.
02c474e to
81fe6df
Compare
Split out of #906; neither change needs PoCL host kernels.
(96, 48)work-group was reported asWork-group size (4608, 1, 1) exceeds the maximum of (4096, 4096, 4096) per dimension. The total is now checked first:... has more than 4096 work-items, the maximum for this kernel.prod_exceeds, which runs on every launch, uses checked multiplication instead of a 64-bit division per dimension (tens of cycles on CPUs such as Skylake). Not measurable on PoCL's queue (~20k instructions per launch); it is part of POCL: run kernels on Julia's threads with PoCL host kernels #906's launch-cost work, where a launch takes ~70 ns.