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