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.5 KiB70 linesraw
1#pragma once
2#include <memory>
3#include "../../D3D/enums.h"
4
5namespace DirectCompute
6{
7	class Tensor;
8}
9namespace CpuCompute
10{
11	class Tensor;
12}
13
14struct ggml_tensor;
15
16namespace Tracing
17{
18	using DirectCompute::eDataType;
19
20	struct ItemName
21	{
22		const char* pointer;
23		std::array<uint32_t, 4> args;
24		uint8_t countArgs;
25
26		ItemName( const char* str )
27		{
28			pointer = str;
29			_mm_storeu_si128( ( __m128i* )args.data(), _mm_setzero_si128() );
30			countArgs = 0;
31		}
32		ItemName( const char* str, int a0 )
33		{
34			pointer = str;
35			__m128i v = _mm_cvtsi32_si128( a0 );
36			_mm_storeu_si128( ( __m128i* )args.data(), v );
37			countArgs = 1;
38		}
39		ItemName( const char* str, uint32_t a0 )
40		{
41			pointer = str;
42			__m128i v = _mm_cvtsi32_si128( (int)a0 );
43			_mm_storeu_si128( ( __m128i* )args.data(), v );
44			countArgs = 1;
45		}
46		ItemName( const char* str, size_t a0 )
47		{
48			pointer = str;
49			__m128i v = _mm_cvtsi32_si128( (int)a0 );
50			_mm_storeu_si128( ( __m128i* )args.data(), v );
51			countArgs = 1;
52		}
53	};
54
55	class iTraceWriter
56	{
57	public:
58		virtual ~iTraceWriter() {}
59
60		static std::unique_ptr<iTraceWriter> create( LPCTSTR path );
61
62		virtual HRESULT buffer( const ItemName& name, const void* rsi, size_t length, eDataType dt ) = 0;
63
64		virtual HRESULT tensor( const ItemName& name, const void* rsi, __m128i size, __m128i strides, eDataType dt ) = 0;
65
66		HRESULT tensor( const ItemName& name, const DirectCompute::Tensor& tensor );
67		HRESULT tensor( const ItemName& name, const CpuCompute::Tensor& tensor );
68		HRESULT tensor( const ItemName& name, const ggml_tensor& tensor );
69	};
70}