float min,
float max);
+ // TODO: implement general-purpose convolutions
+ // GGML_API struct ggml_tensor * ggml_conv_1d(
+ // struct ggml_context * ctx,
+ // struct ggml_tensor * a,
+ // struct ggml_tensor * b,
+ // int s0
+ // int p0,
+ // int d0);
+ //
+ // GGML_API struct ggml_tensor * ggml_conv_2d(
+ // struct ggml_context * ctx,
+ // struct ggml_tensor * a,
+ // struct ggml_tensor * b,
+ // int s0,
+ // int s1,
+ // int p0,
+ // int p1,
+ // int d0,
+ // int d1);
+
// padding = half
// TODO: we don't support extra parameters for now
// that's why we are hard-coding the stride, padding, and dilation
// not great ..
- GGML_API struct ggml_tensor * ggml_conv_1d_1s_ph(
+ // example:
+ // a: 3 80 768 1
+ // b: 3000 80 1 1
+ // res: 3000 768 1 1
+ // used in whisper
+ GGML_API struct ggml_tensor * ggml_conv_1d_s1_ph(
struct ggml_context * ctx,
struct ggml_tensor * a,
struct ggml_tensor * b);
- GGML_API struct ggml_tensor * ggml_conv_1d_2s_ph(
+ // used in whisper
+ GGML_API struct ggml_tensor * ggml_conv_1d_s2_ph(
struct ggml_context * ctx,
struct ggml_tensor * a,
struct ggml_tensor * b);
"rope_back(x)",
"alibi(x)",
"clamp(x)",
- "conv_1d_1s_ph(x)",
- "conv_1d_2s_ph(x)",
+ "conv_1d_s1_ph(x)",
+ "conv_1d_s2_ph(x)",
"flash_attn(x)",
"flash_ff(x)",
return result;
}
-// ggml_conv_1d_1s_ph
+// ggml_conv_1d_s1_ph
-struct ggml_tensor * ggml_conv_1d_1s_ph(
+struct ggml_tensor * ggml_conv_1d_s1_ph(
struct ggml_context * ctx,
struct ggml_tensor * a,
struct ggml_tensor * b) {
return result;
}
-// ggml_conv_1d_2s_ph
+// ggml_conv_1d_s2_ph
-struct ggml_tensor * ggml_conv_1d_2s_ph(
+struct ggml_tensor * ggml_conv_1d_s2_ph(
struct ggml_context * ctx,
struct ggml_tensor * a,
struct ggml_tensor * b) {
}
}
-// ggml_compute_forward_conv_1d_1s_ph
+// ggml_compute_forward_conv_1d_s1_ph
-static void ggml_compute_forward_conv_1d_1s_ph_f16_f32(
+static void ggml_compute_forward_conv_1d_s1_ph_f16_f32(
const struct ggml_compute_params * params,
const struct ggml_tensor * src0,
const struct ggml_tensor * src1,
}
}
-static void ggml_compute_forward_conv_1d_1s_ph_f32(
+static void ggml_compute_forward_conv_1d_s1_ph_f32(
const struct ggml_compute_params * params,
const struct ggml_tensor * src0,
const struct ggml_tensor * src1,
}
}
-static void ggml_compute_forward_conv_1d_1s_ph(
+static void ggml_compute_forward_conv_1d_s1_ph(
const struct ggml_compute_params * params,
const struct ggml_tensor * src0,
const struct ggml_tensor * src1,
switch (src0->type) {
case GGML_TYPE_F16:
{
- ggml_compute_forward_conv_1d_1s_ph_f16_f32(params, src0, src1, dst);
+ ggml_compute_forward_conv_1d_s1_ph_f16_f32(params, src0, src1, dst);
} break;
case GGML_TYPE_F32:
{
- ggml_compute_forward_conv_1d_1s_ph_f32(params, src0, src1, dst);
+ ggml_compute_forward_conv_1d_s1_ph_f32(params, src0, src1, dst);
} break;
default:
{
}
}
-// ggml_compute_forward_conv_1d_2s_ph
+// ggml_compute_forward_conv_1d_s2_ph
-static void ggml_compute_forward_conv_1d_2s_ph_f16_f32(
+static void ggml_compute_forward_conv_1d_s2_ph_f16_f32(
const struct ggml_compute_params * params,
const struct ggml_tensor * src0,
const struct ggml_tensor * src1,
}
}
-static void ggml_compute_forward_conv_1d_2s_ph_f32(
+static void ggml_compute_forward_conv_1d_s2_ph_f32(
const struct ggml_compute_params * params,
const struct ggml_tensor * src0,
const struct ggml_tensor * src1,
}
}
-static void ggml_compute_forward_conv_1d_2s_ph(
+static void ggml_compute_forward_conv_1d_s2_ph(
const struct ggml_compute_params * params,
const struct ggml_tensor * src0,
const struct ggml_tensor * src1,
switch (src0->type) {
case GGML_TYPE_F16:
{
- ggml_compute_forward_conv_1d_2s_ph_f16_f32(params, src0, src1, dst);
+ ggml_compute_forward_conv_1d_s2_ph_f16_f32(params, src0, src1, dst);
} break;
case GGML_TYPE_F32:
{
- ggml_compute_forward_conv_1d_2s_ph_f32(params, src0, src1, dst);
+ ggml_compute_forward_conv_1d_s2_ph_f32(params, src0, src1, dst);
} break;
default:
{
} break;
case GGML_OP_CONV_1D_1S:
{
- ggml_compute_forward_conv_1d_1s_ph(params, tensor->src0, tensor->src1, tensor);
+ ggml_compute_forward_conv_1d_s1_ph(params, tensor->src0, tensor->src1, tensor);
} break;
case GGML_OP_CONV_1D_2S:
{
- ggml_compute_forward_conv_1d_2s_ph(params, tensor->src0, tensor->src1, tensor);
+ ggml_compute_forward_conv_1d_s2_ph(params, tensor->src0, tensor->src1, tensor);
} break;
case GGML_OP_FLASH_ATTN:
{