@@ -32,7 +32,7 @@ void ze_kernel_builder::init_ocl_builder() const {
3232 m_ocl_builder = std::make_shared<ocl_kernel_builder>(*m_ocl_device);
3333}
3434
35- bool ze_kernel_builder::check_l0_build_support () const {
35+ bool ze_kernel_builder::check_l0_build_support (const std::string& options ) const {
3636 static std::unordered_map<ze_device_handle_t , bool > cache;
3737 static std::mutex m;
3838 // Prevent multiple threads from checking support at the same time
@@ -44,7 +44,7 @@ bool ze_kernel_builder::check_l0_build_support() const {
4444 return cache.at (dev_handle);
4545 }
4646 try {
47- build_module_l0 (src, src_bytes, KernelFormat::SOURCE, " " );
47+ build_module_l0 (src, src_bytes, KernelFormat::SOURCE, options );
4848 cache[dev_handle] = true ;
4949 } catch (std::exception&) {
5050 GPU_DEBUG_INFO << " [GPU] Device(" << dev_handle << " ) does not support kernel compilation from source through L0" << std::endl;
@@ -115,7 +115,12 @@ void ze_kernel_builder::build_kernels(const void *src, size_t src_bytes, KernelF
115115 }
116116 module_holder = build_module_ocl (src, src_bytes, src_format, options);
117117 } else {
118- module_holder = build_module_l0 (src, src_bytes, src_format, options);
118+ if ((check_l0_build_support (" -ze-exp-register-file-size 128" ))
119+ && (options.find (" -ze-exp-register-file-size 128" ) == std::string::npos)) {
120+ module_holder = build_module_l0 (src, src_bytes, src_format, options + " -ze-exp-register-file-size 128" );
121+ } else {
122+ module_holder = build_module_l0 (src, src_bytes, src_format, options);
123+ }
119124 }
120125 ze_kernel::create_kernels_from_module (module_holder, out);
121126}
0 commit comments