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
2.1 KiB67 linesraw
1#pragma once
2#include "TraceWriter.h"
3
4namespace Tracing
5{
6#if SAVE_DEBUG_TRACE
7	void traceCreate( LPCTSTR path );
8	void traceClose();
9
10	iTraceWriter* getWriter();
11
12	inline HRESULT tensor( const ItemName& name, const DirectCompute::Tensor& tensor )
13	{
14		iTraceWriter* w = getWriter();
15		if( w )
16			return w->tensor( name, tensor );
17		return S_FALSE;
18	}
19	inline HRESULT tensor( const ItemName& name, const CpuCompute::Tensor& tensor )
20	{
21		iTraceWriter* w = getWriter();
22		if( w )
23			return w->tensor( name, tensor );
24		return S_FALSE;
25	}
26
27	inline HRESULT tensor( const ItemName& name, const ggml_tensor* tensor )
28	{
29		iTraceWriter* w = getWriter();
30		if( w )
31			return w->tensor( name, *tensor );
32		return S_FALSE;
33	}
34
35	void delayTensor( const ItemName& name, const ggml_tensor* tensor );
36	HRESULT writeDelayedTensors();
37
38	inline HRESULT buffer( const ItemName& name, const void* rsi, size_t length, eDataType dt )
39	{
40		iTraceWriter* w = getWriter();
41		if( w )
42			return w->buffer( name, rsi, length, dt );
43		return S_FALSE;
44	}
45
46	inline HRESULT vector( const ItemName& name, const std::vector<float>& vec )
47	{
48		const float* rsi = vec.empty() ? nullptr : vec.data();
49		return buffer( name, rsi, vec.size(), eDataType::FP32 );
50	}
51	inline HRESULT vector( const ItemName& name, const float* rsi, size_t length )
52	{
53		return buffer( name, rsi, length, eDataType::FP32 );
54	}
55#else
56	inline void traceCreate( LPCTSTR path ) { }
57	inline void traceClose() { }
58	inline HRESULT tensor( const ItemName& name, const DirectCompute::Tensor& tensor ) { return S_FALSE; }
59	inline HRESULT tensor( const ItemName& name, const CpuCompute::Tensor& tensor ) { return S_FALSE; }
60	inline HRESULT tensor( const ItemName& name, const ggml_tensor* tensor ) { return S_FALSE; }
61	inline HRESULT buffer( const ItemName& name, const void* rsi, size_t length, eDataType dt ) { return S_FALSE; }
62	inline HRESULT vector( const ItemName& name, const std::vector<float>& vec ) { return S_FALSE; }
63	inline void delayTensor( const ItemName& name, const ggml_tensor* tensor ) { }
64	inline HRESULT writeDelayedTensors() { return S_FALSE; }
65	inline HRESULT vector( const ItemName& name, const float* rsi, size_t length ) { }
66#endif
67}