@@ -659,6 +659,7 @@ struct vk_device_struct {
659659 vk_pipeline pipeline_sigmoid[2];
660660 vk_pipeline pipeline_hardsigmoid[2];
661661 vk_pipeline pipeline_hardswish[2];
662+ vk_pipeline pipeline_abs[2];
662663
663664 vk_pipeline pipeline_geglu[2];
664665 vk_pipeline pipeline_reglu[2];
@@ -3735,6 +3736,7 @@ static void ggml_vk_load_shaders(vk_device& device) {
37353736 CREATE_UNARY(sigmoid)
37363737 CREATE_UNARY(hardsigmoid)
37373738 CREATE_UNARY(hardswish)
3739+ CREATE_UNARY(abs)
37383740#undef CREATE_UNARY
37393741
37403742#define CREATE_UNARY_RTE(name) \
@@ -8334,6 +8336,8 @@ static vk_pipeline ggml_vk_op_get_pipeline(ggml_backend_vk_context * ctx, const
83348336 return ctx->device->pipeline_hardsigmoid[dst->type == GGML_TYPE_F16];
83358337 case GGML_UNARY_OP_HARDSWISH:
83368338 return ctx->device->pipeline_hardswish[dst->type == GGML_TYPE_F16];
8339+ case GGML_UNARY_OP_ABS:
8340+ return ctx->device->pipeline_abs[dst->type == GGML_TYPE_F16];
83378341 default:
83388342 break;
83398343 }
@@ -11286,6 +11290,7 @@ static bool ggml_vk_build_graph(ggml_backend_vk_context * ctx, ggml_cgraph * cgr
1128611290 case GGML_UNARY_OP_SIGMOID:
1128711291 case GGML_UNARY_OP_HARDSIGMOID:
1128811292 case GGML_UNARY_OP_HARDSWISH:
11293+ case GGML_UNARY_OP_ABS:
1128911294 break;
1129011295 default:
1129111296 return false;
@@ -11617,6 +11622,7 @@ static bool ggml_vk_build_graph(ggml_backend_vk_context * ctx, ggml_cgraph * cgr
1161711622 case GGML_UNARY_OP_SIGMOID:
1161811623 case GGML_UNARY_OP_HARDSIGMOID:
1161911624 case GGML_UNARY_OP_HARDSWISH:
11625+ case GGML_UNARY_OP_ABS:
1162011626 ggml_vk_unary(ctx, compute_ctx, src0, node);
1162111627 break;
1162211628 default:
@@ -11888,6 +11894,7 @@ static bool ggml_vk_compute_forward(ggml_backend_vk_context * ctx, ggml_cgraph *
1188811894 case GGML_UNARY_OP_SIGMOID:
1188911895 case GGML_UNARY_OP_HARDSIGMOID:
1189011896 case GGML_UNARY_OP_HARDSWISH:
11897+ case GGML_UNARY_OP_ABS:
1189111898 buf = tensor->buffer;
1189211899 break;
1189311900 default:
@@ -13383,6 +13390,7 @@ static bool ggml_backend_vk_device_supports_op(ggml_backend_dev_t dev, const ggm
1338313390 case GGML_UNARY_OP_SIGMOID:
1338413391 case GGML_UNARY_OP_HARDSIGMOID:
1338513392 case GGML_UNARY_OP_HARDSWISH:
13393+ case GGML_UNARY_OP_ABS:
1338613394 return ggml_is_contiguous(op->src[0]) &&
1338713395 (op->src[0]->type == GGML_TYPE_F32 || op->src[0]->type == GGML_TYPE_F16) &&
1338813396 (op->type == GGML_TYPE_F32 || op->type == GGML_TYPE_F16) &&
0 commit comments