Реализация cublasGemmEx в ManagedCuda - PullRequest
0 голосов
/ 03 июля 2019

Я хочу реализовать оптимизированный по производительности код для умножения матриц с использованием ManagedCuda / CudaBlas из ManagedCuda.

Базовая реализация относительно быстра и работает:

handle.Gemm(Operation.NonTranspose, Operation.NonTranspose, N, N, N, alpha, d_A, N, d_B, N, beta, d_C, N);

Теперь я хочу использовать тензорные ядра (графические карты V100) -> указание тензорной операции.

Чистый код Cuda ниже (cublasGemmEx) работает отлично. Как я могу реализовать это в ManagedCuda напрямую?

Я пробовал "GemmStridedBatched", но это не работает для больших матриц.

cublasGemmEx(cublasHandle, CUBLAS_OP_N, CUBLAS_OP_N,
        MATRIX_M, MATRIX_N, MATRIX_K,
        &alpha,
        a_fp16, CUDA_R_16F, MATRIX_M,
        b_fp16, CUDA_R_16F, MATRIX_K,
        &beta,
        c_cublas, CUDA_R_32F, MATRIX_M,
        CUDA_R_32F, CUBLAS_GEMM_DFALT_TENSOR_OP);
...