Когда я писала свою Decoder‑Only Network (DON) на C#, стало очевидно, что вычисления на CPU слишком медленные.
Вместо того чтобы просто использовать готовые библиотеки (CUDA, PyTorch), я решил разобраться, как работают GPU‑ядра изнутри, и создать собственный независимый бэкенд.
Результат: библиотека на чистом C++ с вычислительными шейдерами HLSL, работающая на любом GPU с DirectX 11 (NVIDIA, AMD, Intel). Никаких проприетарных ограничений – только DirectCompute.
- Сложение массивов (
MatAdd) - Умножение матриц (
MatMul) - ReLU (функция активации)(0,Inf)
- (в планах) Softmax, механизм внимания, полносвязные слои
- C++17 – ядро библиотеки
- Direct3D 11 / DirectCompute – взаимодействие с GPU
- HLSL – шейдеры для каждой операции
- Windows SDK – встроен в Visual Studio
- Открой решение
GPUTensor.slnв Visual Studio. - Выбери конфигурацию
Releaseи платформуx64. - Собери проект (
Build → Build Solution). - Готовая DLL появится в папке
x64\Release\.
#include "GPUTensor.h"
// инициализация
if (!InitGPU()) return 1;
// сложение
float A[] = {1, 2, 3, 4, 5, 6};
float B[] = {7, 8, 9, 10, 11, 12};
float C[6];
MatAdd(A, B, C, 6); // C = {8,10,12,14,16,18}
// умножение матриц 2×3 * 3×2
float M[] = {1,2,3, 4,5,6};
float N[] = {7,8, 9,10, 11,12};
float P[4];
MatMul(M, N, P, 2, 3, 2);
// P = {58,64, 139,154}
ShutdownGPU();C# обёртка находится в стадии разработки. В ближайшее время будет добавлена в репозиторий.
Пока что вы можете использовать библиотеку через P/Invoke вручную (см. примеры в examples/).
📜 Лицензия Проект распространяется под лицензией MIT.
Автор
neroqwe