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 "Tensor.h" 3 4namespace DirectCompute 5{ 6// A tensor which supports dynamic updates from CPU, or downloads from VRAM to system RAM 7class TensorEx :public Tensor 8 { 9protected : 10CComPtr < ID3D11Buffer > buffer ; 11CComPtr < ID3D11Buffer > stagingBuffer ; 12 13HRESULT getViewSize (uint32_t & cbElement ,uint32_t & countElements )const ; 14 15public : 16 17HRESULT create (const ggml_tensor & ggml ,eBufferUse usage ,bool uploadData ); 18HRESULT create (eDataType type ,eBufferUse usage ,const std ::array < uint32_t ,4 >& sizeElements ); 19 20HRESULT download (void * rdi ,size_t cb )const ; 21 22HRESULT download (void * rdi )const ; 23 24template < class E > 25HRESULT download (std ::vector < E >& vec )const 26 { 27uint32_t cbElement ,numElements ; 28CHECK (getViewSize (cbElement ,numElements ) ); 29 30try 31 { 32vec .resize (numElements ); 33 } 34catch (const std ::bad_alloc & ) 35 { 36return E_OUTOFMEMORY ; 37 } 38 39return download (vec .data (), (size_t )cbElement * numElements ); 40 } 41 }; 42}