7
правок
Изменения
Добавил больше примеров для GPU
Фреймворки машинного обучения, такие как TensorFlow, PyTorch и MxNet используют эти возможности через библиотеки от компаний производителей графических ускорителей и открытые фреймворки:
* [https://developer.nvidia.com/cuda-toolkit CUDA] - язык параллельного программирования/вычислительная платформа для вычислений общего назначения на графическом процессоре
* [https://developer.nvidia.com/cublas cuBLAS] - библиотека представляет собой реализацию BLAS (базовых подпрограмм линейной алгебры) поверх среды выполнения CUDA.
* [https://www.khronos.org/opencl/ OpenCL] - фреймворк для написания компьютерных программ, связанных с параллельными вычислениями на различных графических и центральных процессорах, а также FPGA
Пример перемножения матриц на cuBLAS
void gpu_blas_mmul(cublasHandle_t &handle, const float *A, const float *B, float *C, const int m, const int k, const int n) {
int lda = m, ldb = k, ldc = m;
const float alf = 1;
const float bet = 0;
const float *alpha = &alf;
const float *beta = &bet;
// Do the actual multiplication
cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, alpha, A, lda, B, ldb, beta, C, ldc);
}
Пример перемножения матриц на PyCUDA
import pycuda.gpuarray as gpuarray
import numpy as np
import skcuda.linalg as linalg
# --- Initializations
import pycuda.autoinit
linalg.init()
A = np.array(([1, 2, 3], [4, 5, 6])).astype(np.float64)
B = np.array(([7, 8, 1, 5], [9, 10, 0, 9], [11, 12, 5, 5])).astype(np.float64)
A_gpu = gpuarray.to_gpu(A)
B_gpu = gpuarray.to_gpu(B)
C_gpu = linalg.dot(A_gpu, B_gpu)
print(np.dot(A, B))
print(C_gpu)
=== Параллелизм SGD ===
== Источники информации ==
# [http://www.cs.cornell.edu/courses/cs4787/2019sp/notes/lecture1.pdf Principles of Large-Scale Machine Learning]
# [https://docs.nvidia.com/cuda/pdf/CUBLAS_Library.pdf cuBLAS library user guide]# [https://solarianprogrammer.com/2012/05/31/matrix-multiplication-cuda-cublas-curand-thrust/ Matrix multiplication on GPU using CUDA with CUBLAS]# [https://medium.com/@CIulius/a-short-notice-on-performing-matrix-multiplications-in-pycuda-cbfb00cf1450 A short notice on performing matrix multiplications in PyCUDA]# [https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html CUDA C++ Programming Guide]
[[Категория: Машинное обучение]]