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.2 KiB60 linesraw
1#include "stdafx.h"
2#include "tracing.h"
3#include "../../source/ggml.h"
4
5#if SAVE_DEBUG_TRACE
6namespace Tracing
7{
8	std::unique_ptr<iTraceWriter> s_writer;
9
10	static BOOL __stdcall consoleHandler( DWORD dwCtrlType )
11	{
12		if( dwCtrlType == CTRL_C_EVENT )
13			s_writer = nullptr;
14
15		// Return TRUE if handled this message, further handler functions won't be called.
16		// Return FALSE to pass this message to further handlers until default handler calls ExitProcess().
17		return FALSE;
18	}
19
20	void traceCreate( LPCTSTR path )
21	{
22		s_writer = iTraceWriter::create( path );
23		SetConsoleCtrlHandler( &consoleHandler, TRUE );
24	}
25
26	void traceClose()
27	{
28		s_writer = nullptr;
29	}
30
31	iTraceWriter* getWriter()
32	{
33		return s_writer.get();
34	}
35
36	using Pair = std::pair<ItemName, ggml_tensor>;
37	static std::vector<Pair> delayed;
38
39	void delayTensor( const ItemName& name, const ggml_tensor* tensor )
40	{
41		delayed.emplace_back( name, *tensor );
42	}
43
44	HRESULT writeDelayedTensors()
45	{
46		if( delayed.empty() )
47			return S_FALSE;
48		iTraceWriter* w = getWriter();
49		if( nullptr == w )
50		{
51			delayed.clear();
52			return S_FALSE;
53		}
54		for( const Pair& p : delayed )
55			w->tensor( p.first, p.second );
56		delayed.clear();
57		return S_OK;
58	}
59}
60#endif