mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-04-27 06:20:07 +00:00
sycl: Support sycl_ext_oneapi_limited_graph (llama/12873)
The current usage of the SYCL-Graph extension checks for the `sycl_ext_oneapi_graph` device aspect. However, it is also possible to support `sycl_ext_oneapi_limied_graph` devices that don't support update
This commit is contained in:
parent
e9ce285135
commit
e8ee32d12d
@ -3653,7 +3653,8 @@ static ggml_status ggml_backend_sycl_graph_compute(ggml_backend_t backend, ggml_
|
|||||||
|
|
||||||
#ifdef GGML_SYCL_GRAPH
|
#ifdef GGML_SYCL_GRAPH
|
||||||
if (!g_ggml_sycl_disable_graph) {
|
if (!g_ggml_sycl_disable_graph) {
|
||||||
if (!sycl_ctx->exec_graph && !dpct::get_device(sycl_ctx->device).has(sycl::aspect::ext_oneapi_graph)) {
|
const bool graph_support = dpct::get_device(sycl_ctx->device).has(sycl::aspect::ext_oneapi_limited_graph);
|
||||||
|
if (!graph_support) {
|
||||||
GGML_SYCL_DEBUG("[SYCL-GRAPH] can not use graphs on device:%d\n", sycl_ctx->device);
|
GGML_SYCL_DEBUG("[SYCL-GRAPH] can not use graphs on device:%d\n", sycl_ctx->device);
|
||||||
ggml_backend_sycl_graph_compute_impl(sycl_ctx, cgraph);
|
ggml_backend_sycl_graph_compute_impl(sycl_ctx, cgraph);
|
||||||
return GGML_STATUS_SUCCESS;
|
return GGML_STATUS_SUCCESS;
|
||||||
@ -3664,8 +3665,10 @@ static ggml_status ggml_backend_sycl_graph_compute(ggml_backend_t backend, ggml_
|
|||||||
ggml_backend_sycl_graph_compute_impl(sycl_ctx, cgraph);
|
ggml_backend_sycl_graph_compute_impl(sycl_ctx, cgraph);
|
||||||
model_sycl_graph.end_recording();
|
model_sycl_graph.end_recording();
|
||||||
|
|
||||||
if (!sycl_ctx->exec_graph) {
|
const bool graph_update_support = dpct::get_device(sycl_ctx->device).has(sycl::aspect::ext_oneapi_graph);
|
||||||
auto exec_graph = model_sycl_graph.finalize({sycl_ex::property::graph::updatable{}});
|
if (!sycl_ctx->exec_graph || !graph_update_support) {
|
||||||
|
auto exec_graph = graph_update_support ? model_sycl_graph.finalize(sycl_ex::property::graph::updatable{}) :
|
||||||
|
model_sycl_graph.finalize();
|
||||||
sycl_ctx->exec_graph = std::make_unique<
|
sycl_ctx->exec_graph = std::make_unique<
|
||||||
sycl_ex::command_graph<sycl_ex::graph_state::executable>>(exec_graph);
|
sycl_ex::command_graph<sycl_ex::graph_state::executable>>(exec_graph);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user