sycl : fix test-backend-ops CI break && restore Kronecker product FWHT support (#28016) - #28254
Conversation
…, 768, 12…" (ggml-org#28184) This reverts commit c845263.
|
Running the workflows this time :p xd |
|
@philip-jingxin can you fix the trailing whitespace at the end of |
arthw
left a comment
There was a problem hiding this comment.
It's good job!
I test it on Arc770 and it's passed.
Thank you!
|
@philip-jingxin Could you fix them? Thank you! |
Hi @arthw I just fixed the bug. Thanks for reviewing! |
@Titaniumtown Sorry for the delay, was quite busy during the day. I've cleaned up the trailing space. Thanks for pointing it out! |
|
Thank you for following through and fixing it! |
@Titaniumtown Thanks! Happy to contribute! |
ggerganov
left a comment
There was a problem hiding this comment.
@Titaniumtown For changes in non-SYCL code like here in test-backend-ops.cpp wait for an additional review from another maintainer before merging.
| #ifdef GGML_USE_SYCL | ||
| const bool is_kronecker = | ||
| ((n_cols % 12 == 0) && is_pow2(n_cols / 12)) || ((n_cols % 20 == 0) && is_pow2(n_cols / 20)); | ||
| #else | ||
| const bool is_kronecker = false; | ||
| #endif |
There was a problem hiding this comment.
Special-casing the backends like this is not allowed - the user logic should not depend on what ggml backend has been compiled. Please follow-up with a PR that removes all #ifdef GGML_USE_SYCL directives from test-backend-ops.cpp.
There was a problem hiding this comment.
Hi @ggerganov, just followed up in #28490. Removed the test special-casing and implemented Kronecker operations for CPU.
|
@ggerganov Alright. sorry. I will make sure to wait on you next time. |
…T support (ggml-org#28016) (ggml-org#28254) * Reapply "sycl : add Kronecker product FWHT support for sizes 384, 640, 768, 12…" (ggml-org#28184) This reverts commit c845263. * tests : fix unused variable M in test-backend-ops * tests: fix trailing space error and isolate kronecker tests for sycl backend only
…T support (ggml-org#28016) (ggml-org#28254) * Reapply "sycl : add Kronecker product FWHT support for sizes 384, 640, 768, 12…" (ggml-org#28184) This reverts commit 79dc68c. * tests : fix unused variable M in test-backend-ops * tests: fix trailing space error and isolate kronecker tests for sycl backend only
…T support (ggml-org#28016) (ggml-org#28254) * Reapply "sycl : add Kronecker product FWHT support for sizes 384, 640, 768, 12…" (ggml-org#28184) This reverts commit c845263. * tests : fix unused variable M in test-backend-ops * tests: fix trailing space error and isolate kronecker tests for sycl backend only
…T support (ggml-org#28016) (ggml-org#28254) * Reapply "sycl : add Kronecker product FWHT support for sizes 384, 640, 768, 12…" (ggml-org#28184) This reverts commit c845263. * tests : fix unused variable M in test-backend-ops * tests: fix trailing space error and isolate kronecker tests for sycl backend only
…gml-org#28254, ggml-org#29243) (#302) * sycl : fix test-backend-ops CI break && restore Kronecker product FWHT support (ggml-org#28016) (ggml-org#28254) * Reapply "sycl : add Kronecker product FWHT support for sizes 384, 640, 768, 12…" (ggml-org#28184) This reverts commit c845263. * tests : fix unused variable M in test-backend-ops * tests: fix trailing space error and isolate kronecker tests for sycl backend only (cherry picked from commit 4d91760) * sycl: FWHT kernels for block widths above 512 (ggml-org#29243) The SYCL FWHT covers 64 to 512 via the standard butterfly network, plus 384/640/768/1280 via the Kronecker/Paley construction added separately in Hadamard hint can produce (1024, 2048, 4096, 8192); those still fall through to the default case and run as a dense GEMM against the materialized rotation tensor, correct but O(n^2) instead of O(n log n). fwht_kernel_wide runs one row per work-group instead of per sub-group, so each work-item keeps N/NT values rather than N/WARP_SIZE. Butterflies below the sub-group width still shuffle; those up to the work-group width go through work-group local memory; the rest stay in registers. Same butterfly and sign convention as the existing narrow kernel. ggml's SYCL backend registration (dpct::dev_mgr) unconditionally requires a GPU-labeled platform to exist and throws before any op-level test can run, so test-backend-ops could not be exercised on this box (a GPU-less pod) even via the CPU device. Verified instead with a standalone harness: the same kernel body run through a real SYCL CPU device (Intel oneAPI DPC++ 2026.1, OpenCL CPU backend), checked against an independent recursive-doubling Hadamard reference, cross-validated by first running the existing unmodified narrow kernel through the identical harness and confirming it passes (rules out a reference-convention bug before trusting a pass on the new code). Random-input results for all four widths, single- and multi-row: N=1024 NT=256 rows=1 max_abs_err=1.7e-07 max_rel_err=4.9e-04 PASS N=2048 NT=256 rows=1 max_abs_err=1.9e-07 max_rel_err=2.0e-04 PASS N=4096 NT=256 rows=1 max_abs_err=2.0e-07 max_rel_err=1.4e-04 PASS N=8192 NT=256 rows=1 max_abs_err=2.5e-07 max_rel_err=3.8e-03 PASS N=1024 NT=256 rows=7 max_abs_err=2.4e-07 max_rel_err=1.0e-03 PASS N=2048 NT=256 rows=5 max_abs_err=3.0e-07 max_rel_err=9.4e-04 PASS N=4096 NT=256 rows=3 max_abs_err=2.7e-07 max_rel_err=1.7e-03 PASS N=8192 NT=256 rows=2 max_abs_err=2.5e-07 max_rel_err=1.9e-03 PASS This covers the kernel algorithm itself; it does not exercise the ggml dispatch/supports_op integration end to end, which needs a real GPU (or a SYCL GPU plugin) to get past backend registration. test-backend-ops build is verified: fwht.cpp recompiles with zero warnings as part of ggml-sycl. (cherry picked from commit c829670) --------- Co-authored-by: Jingxin (Philip) Li <philipaslee@gmail.com>
…T support (ggml-org#28016) (ggml-org#28254) * Reapply "sycl : add Kronecker product FWHT support for sizes 384, 640, 768, 12…" (ggml-org#28184) This reverts commit c845263. * tests : fix unused variable M in test-backend-ops * tests: fix trailing space error and isolate kronecker tests for sycl backend only
Overview
Reintroduces the sycl Kronecker product FWHT support originally merged in #28016 (and reverted in #28184 due to CI build failure).
The failure was due to
tests/test-backend-ops.cppcontaining an unused variable warning (unused variable 'M'), becoming an error with LLAMA_FATAL_WARNINGS=ONAdditional information
Requirements