Răsfoiți Sursa

metal : remove contiguous assertion for src0 in IM2COL (#15577)

* remove contiguous assertion for src0 in IM2COL

* add contiguous check in supports_op
Sigbjørn Skjæret 4 luni în urmă
părinte
comite
0fd90db585
1 a modificat fișierele cu 1 adăugiri și 2 ștergeri
  1. 1 2
      ggml/src/ggml-metal/ggml-metal.m

+ 1 - 2
ggml/src/ggml-metal/ggml-metal.m

@@ -1876,7 +1876,7 @@ static bool ggml_metal_supports_op(const struct ggml_backend_metal_device_contex
         case GGML_OP_ROPE:
         case GGML_OP_ROPE:
             return true;
             return true;
         case GGML_OP_IM2COL:
         case GGML_OP_IM2COL:
-            return op->src[1]->type == GGML_TYPE_F32 && (op->type == GGML_TYPE_F16 || op->type == GGML_TYPE_F32);
+            return ggml_is_contiguous(op->src[1]) && op->src[1]->type == GGML_TYPE_F32 && (op->type == GGML_TYPE_F16 || op->type == GGML_TYPE_F32);
         case GGML_OP_POOL_1D:
         case GGML_OP_POOL_1D:
             return false;
             return false;
         case GGML_OP_UPSCALE:
         case GGML_OP_UPSCALE:
@@ -4731,7 +4731,6 @@ static int ggml_metal_encode_node(
             } break;
             } break;
         case GGML_OP_IM2COL:
         case GGML_OP_IM2COL:
             {
             {
-                GGML_ASSERT(ggml_is_contiguous(src0));
                 GGML_ASSERT(ggml_is_contiguous(src1));
                 GGML_ASSERT(ggml_is_contiguous(src1));
                 GGML_ASSERT(src1->type == GGML_TYPE_F32);
                 GGML_ASSERT(src1->type == GGML_TYPE_F32);
                 GGML_ASSERT( dst->type == GGML_TYPE_F16 || dst->type == GGML_TYPE_F32);
                 GGML_ASSERT( dst->type == GGML_TYPE_F16 || dst->type == GGML_TYPE_F32);