• B
    add support of matmul with multiple head even different width and height (#19708) · c670058a
    Bob Zhu 提交于
    * add support of matmul with multiple head even different width and height
    
    Original matmul with multiple head supports only the mat_a.width == mat_b.height,
    in that case, mat_b will be horizontally split. In this patch, we extend the
    support when mat_a.width != mat_b.height but mat_a.width/head_number == mat_b.height,
    in this case, mab_b will be vertically split.
    
    One example is A is [3, 8], B is [2, 16], head_number is 4. In this
    case, A will be split as [3, 2], B will be (vertically) split as
    [2, 4]. The final result will be 4 matrix of 4 matrix of [3,4], i.e. [3, 16]
    
    test=develop
    
    * add support of matmul with multiple head even different width and height
    
    Original matmul with multiple head supports only the mat_a.width == mat_b.height,
    in that case, mat_b will be horizontally split. In this patch, we extend the
    support when mat_a.width != mat_b.height but mat_a.width/head_number == mat_b.height,
    in this case, mab_b will be vertically split.
    
    One example is A is [3, 8], B is [2, 16], head_number is 4. In this
    case, A will be split as [3, 2], B will be (vertically) split as
    [2, 4]. The final result will be 4 matrix of 4 matrix of [3,4], i.e. [3, 16]
    
    test=develop
    
    * refactor the code of matmul with multiple head even different width and height
    
    test=develop
    c670058a
blas_impl.h 26.5 KB