Update readme

This commit is contained in:
2025-11-20 13:42:49 +04:00
parent bd8b26c35a
commit 0455d9bd5b
2 changed files with 53 additions and 9 deletions

View File

@@ -1,20 +1,20 @@
# Neural Network ++
> Neural Network++ - это движок для ~путешествия в Мордор~ создания нейронных сетей написанный на С++
> Neural Network++ - это движок для ~путешествия в Мордор~ создания нейронных сетей
## Стек:
- [C++ 23](https://ru.wikipedia.org/wiki/C%2B%2B23)
- [OpenCL](https://ru.wikipedia.org/wiki/OpenCL)
- [pybind11](https://github.com/pybind/pybind11)
- [OpenCL](https://ru.wikipedia.org/wiki/OpenCL) - библиотека GPGPU (вычисления на видеокарте)
- [pybind11](https://github.com/pybind/pybind11) - создание С++ библиотеки для Python
- **Всё!** :wink:
## О проекте:
- Движок для создания нейронных сетей
- Поддерка вычислений на CPU или на GPU
- [Алгоритмы с массовым параллелизмом на GPU](./src/tensor/opencl/kernels) для ускорения
- Классические алгоритмы на CPU для проверки вычислений
- Поддержка вычислений [на CPU](./src/tensor/cpu/) или [на GPU с использованием OpenCL](./src/tensor/opencl/)
- [Алгоритмы массового параллелизма на GPU](./src/tensor/opencl/kernels) для быстрых вычислений
- Классические алгоритмы на CPU для возможности проверки
- [Класс Tensor](./src/tensor/tensor.hpp) для работы с тензорами произвольной размерности
## Forward & Back propogation - это путешествие в Мордор и обратно!

View File

@@ -1,10 +1,54 @@
from tensor.tensor import *
import numpy as np
import time
if (MODE == PLATFORM.OPENCL):
init("./tensor/")
a = Matrix([1024, 1024], 1)
a += 1
b = Matrix([1024, 1024], 1)
c = a @ b
print(c)
def benchmark_tensor():
c = ((a @ b) @ (a @ b)) @ ((a @ b) @ (a @ b))
return c
a_np = np.ones([1024, 1024], dtype=np.float32)
b_np = np.ones([1024, 1024], dtype=np.float32)
def benchmark_numpy():
c = ((a_np @ b_np) @ (a_np @ b_np)) @ ((a_np @ b_np) @ (a_np @ b_np))
return c
# Многократное выполнение для более точного измерения
iterations = 5
print("Бенчмарк Tensor:")
tensor_times = []
for i in range(iterations):
start = time.time()
result_tensor = benchmark_tensor()
print(result_tensor)
tensor_times.append(time.time() - start)
print("Бенчмарк NumPy:")
numpy_times = []
for i in range(iterations):
start = time.time()
result_numpy = benchmark_numpy()
print(result_numpy)
numpy_times.append(time.time() - start)
print(
f"\nСреднее время Tensor: {np.mean(tensor_times):.4f} ± {np.std(tensor_times):.4f} сек")
print(
f"Среднее время NumPy: {np.mean(numpy_times):.4f} ± {np.std(numpy_times):.4f} сек")
ratio = np.mean(numpy_times) / np.mean(tensor_times)
if ratio > 1:
print(f"Tensor быстрее в {ratio:.2f} раз")
else:
print(f"NumPy быстрее в {1/ratio:.2f} раз")