yum-archive/TaSTT-Whisper

High-performance GPGPU inference of OpenAI's Whisper automatic speech recognition (ASR) model

git clone https://git.yummers.dev/yum-archive/TaSTT-Whisper

KonstantinSource codes8c4603c

master
1.3 KiB54 linesraw
1#include "stdafx.h"
2#include "mulMat.h"
3#include "mulMatImpl.h"
4using namespace CpuCompute;
5
6namespace
7{
8	template<uint8_t panelHeightRegs, uint8_t tileWidthFloats>
9	static HRESULT mulMatImpl( Tensor& result, const Tensor& a, const Tensor& b, ParallelForRunner& pfor )
10	{
11		MulMatImpl<panelHeightRegs, tileWidthFloats> impl{ result, a, b, pfor };
12		return impl.run( pfor );
13	}
14}
15
16HRESULT CpuCompute::mulMat( Tensor& result, const Tensor& a, const Tensor& b, ParallelForRunner& pfor )
17{
18	if( a.type() != eDataType::FP16 )
19		return E_NOTIMPL;
20	if( b.type() != eDataType::FP32 )
21		return E_NOTIMPL;
22
23	// return mulMatImpl<1, 1>( result, a, b, pfor );
24
25	if( b.ne[ 1 ] == 1 )
26	{
27		// Multiplying by a single row
28		if( a.ne[ 1 ] >= 32 )
29			return mulMatImpl<4, 1>( result, a, b, pfor );
30		else
31			return mulMatImpl<1, 1>( result, a, b, pfor );
32	}
33	else if( b.ne[ 1 ] == 2 )
34	{
35		if( a.ne[ 1 ] >= 32 )
36			return mulMatImpl<4, 2>( result, a, b, pfor );
37		else
38			return mulMatImpl<1, 2>( result, a, b, pfor );
39	}
40	else if( b.ne[ 1 ] == 3 )
41	{
42		if( a.ne[ 1 ] >= 16 )
43			return mulMatImpl<2, 3>( result, a, b, pfor );
44		else
45			return mulMatImpl<1, 3>( result, a, b, pfor );
46	}
47	else
48	{
49		if( a.ne[ 1 ] >= 16 )
50			return mulMatImpl<2, 4>( result, a, b, pfor );
51		else
52			return mulMatImpl<1, 4>( result, a, b, pfor );
53	}
54}