| 1841 | } |
| 1842 | |
| 1843 | void ggml_cl_mul_mat(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst, void * wdata, size_t wsize) { |
| 1844 | GGML_ASSERT(ggml_cl_can_mul_mat(src0, src1, dst)); |
| 1845 | |
| 1846 | if (src0->type == GGML_TYPE_F32) { |
| 1847 | ggml_cl_mul_mat_f32(src0, src1, dst); |
| 1848 | } |
| 1849 | else if (src0->type == GGML_TYPE_F16) { |
| 1850 | if (ggml_cl_mul_mat_use_f16(src0, src1, dst)) { |
| 1851 | ggml_cl_mul_mat_f16(src0, src1, dst, wdata, wsize); |
| 1852 | } |
| 1853 | else { |
| 1854 | ggml_cl_mul_mat_q_f32(src0, src1, dst); |
| 1855 | } |
| 1856 | } |
| 1857 | else if (ggml_is_quantized(src0->type)) { |
| 1858 | ggml_cl_mul_mat_q_f32(src0, src1, dst); |
| 1859 | } |
| 1860 | else { |
| 1861 | GGML_ASSERT(false); |
| 1862 | } |
| 1863 | } |
| 1864 | |
| 1865 | size_t ggml_cl_mul_mat_get_wsize(const struct ggml_tensor * src0, const struct ggml_tensor * src1, struct ggml_tensor * dst) { |
| 1866 | if (src0->type == GGML_TYPE_F16 && ggml_cl_mul_mat_use_f16(src0, src1, dst)) { |
no test coverage detected