vulkan: add INTEL_XE1 arch enum and enable coopmat1 on Intel Xe-LPG Plus - #24404
Conversation
|
Hi @fish-jiang, thanks for your contribution! Per our contribution guidelines, the automated PR checker found the following issue(s) that need your attention:
Please note that maintainers reserve the right to make final decisions on PRs. If you believe there is a mistake, please comment below. |
|
I've performed a micro benchmark test between b9588 and f7477c0 using WindowsWorst case 0.9x, Best case 17x, 1.6% of the benchmarks show regression (5% or more perf drop)
LinuxWorst case 0.17x, best case 26x, 25% of the cases show regression (5% or more perf drop)
Benchmark Environment
Benchmark Results
|
acd8de3 to
66f6372
Compare
|
Currently we are still seeing severe regressions with A770 when coopmat is enabled. A770 Benchmark results using 66f6372 w/ coopmat enabled for XeWorst case 0.00069x, best case 20x, 26% of the cases show 5% or more regression. Environment
diff --git a/ggml/src/ggml-vulkan/ggml-vulkan.cpp b/ggml/src/ggml-vulkan/ggml-vulkan.cpp
index ed71af85e..4ea9fed2a 100644
--- a/ggml/src/ggml-vulkan/ggml-vulkan.cpp
+++ b/ggml/src/ggml-vulkan/ggml-vulkan.cpp
@@ -17426,7 +17431,7 @@ static bool ggml_vk_khr_cooperative_matrix_support(const vk::PhysicalDevicePrope
case VK_VENDOR_ID_INTEL:
// Only allowing Xe2/Xe3 GPU and integrated Xe GPUs at the moment since older hardware (ex. Arc A770) has performance regressions.
return (arch == vk_device_architecture::INTEL_XE2) ||
- (arch == vk_device_architecture::INTEL_PRE_XE2 && props.deviceType == vk::PhysicalDeviceType::eIntegratedGpu);
+ (arch == vk_device_architecture::INTEL_PRE_XE2);
case VK_VENDOR_ID_AMD:
if (driver_props.driverID == vk::DriverId::eAmdProprietary || driver_props.driverID == vk::DriverId::eAmdOpenSource) {
// Workaround for AMD proprietary driver reporting support on all GPUsBenchmark Data
|
|
Performed the same benchmark as #24404 (comment) between b9588 and b14e33b and the results were mostly similar as previous results. The driver workaround should only affect Windows ( As for the Linux regressions, we've notified our Linux driver team though it will probably take time for a fix to get deployed. In the meantime we may need to disable coopmat on Linux Xe-LPG Plus systems (currently only ArrowLake-H) but how do you think of this @0cc4m? WindowsWorst case 0.88x, best case 17x, 2% of the cases show 5% or more regression. LinuxWorst case 0.16x, best case 42x, 25% of the cases show 5% or more regression. Environment
Benchmark Data
|
is this tracked somewhere? i am one of the owner of arl-h laptop on linux and eagerly awaiting for these patches :) |
Yes, but it is tracked internally so unfortunately you won't be able to view the status. |
I lost track of all the different architecture variants of Xe and which has any chance of running coopmat performantly. Why would this only apply to ArrowLake-H and not e.g. MeteorLake-H, also why H and not U? |
This is because ArrowLake-H is the only Xe-LPG variant with XMX (coopmat hardware), hence the Xe-LPG "Plus". MeteorLake-H's GPU is the normal Xe-LPG without XMX, which is the same with U series for both MTL/ARL. BTW I noticed that the following page's information is wrong about MeteorLake-H having XMX support. MeteorLake-H does not support XMX. You can view vulkaninfo from U7-155H and it does not support coopmat. |
|
Okay, but that just means you have to disable coopmat on Xe on Linux, which is already the current state. |
|
Exactly, so actually no change on Linux. We should be able to enable coopmat on ArrowLake-H Linux as well once the fixes are in. |
…PG Plus (1/3, Xe1-ARLH) Co-authored-by: Xia, Jie <jie.xia@intel.com> Co-authored-by: Liu, Russell <russell.liu@intel.com>
a27c1d2 to
570b341
Compare
|
Performed the same microbenchmark as #24404 (comment) again for b9763 vs 570b341. Results are as expected for both Windows/Linux with no major regressions. WindowsWorst case 0.8x, best case 16.9x, 2.6% of the cases show 5% or more regression LinuxWorst case 0.88x, best case 1.13x, 2.3% of the cases show 5% or more regression Environment
Benchmark Data
|
|
@0cc4m Hi Ruben, may I know if there is anything else to move the PR forward? |
|
Just another approval by a maintainer @ggml-org/maintainers |
…lus (ggml-org#24404) * vulkan: add INTEL_PRE_XE2 arch enum and enable coopmat1 on Intel Xe-LPG Plus (1/3, Xe1-ARLH) Co-authored-by: Xia, Jie <jie.xia@intel.com> Co-authored-by: Liu, Russell <russell.liu@intel.com> * Address comments of bf16 and trailing whitespace * Rename INTEL_PRE_XE2 to INTEL_XE1 and remove driver workaround * Add Windows driver check --------- Co-authored-by: Xia, Jie <jie.xia@intel.com> Co-authored-by: Liu, Russell <russell.liu@intel.com>
…lus (ggml-org#24404) * vulkan: add INTEL_PRE_XE2 arch enum and enable coopmat1 on Intel Xe-LPG Plus (1/3, Xe1-ARLH) Co-authored-by: Xia, Jie <jie.xia@intel.com> Co-authored-by: Liu, Russell <russell.liu@intel.com> * Address comments of bf16 and trailing whitespace * Rename INTEL_PRE_XE2 to INTEL_XE1 and remove driver workaround * Add Windows driver check --------- Co-authored-by: Xia, Jie <jie.xia@intel.com> Co-authored-by: Liu, Russell <russell.liu@intel.com>
…lus (ggml-org#24404) * vulkan: add INTEL_PRE_XE2 arch enum and enable coopmat1 on Intel Xe-LPG Plus (1/3, Xe1-ARLH) Co-authored-by: Xia, Jie <jie.xia@intel.com> Co-authored-by: Liu, Russell <russell.liu@intel.com> * Address comments of bf16 and trailing whitespace * Rename INTEL_PRE_XE2 to INTEL_XE1 and remove driver workaround * Add Windows driver check --------- Co-authored-by: Xia, Jie <jie.xia@intel.com> Co-authored-by: Liu, Russell <russell.liu@intel.com>







Overview
Target platforms: Xe-LPG Plus (Arrow Lake-H iGPU)
INTEL_XE1enum variant tovk_device_architecturePerformance (Intel Xe1-ARLH + Windows OS)
Requirements