Простой пример умножения матрицы CUBLAS?

Я ищу очень голый пример умножения матрицы костей для CUBLAS, который может умножить M раз N и поместить результаты в P для следующего кода, используя высокопроизводительные операции GPU:

float M[500][500], N[500][500], P[500][500];
for(int i = 0; i < Width; i++){
    for(int j = 0; j < Width; j++)
    {
        M[i][j] = 500;
        N[i][j] = 500;
        P[i][j] = 0;
    }
}

до сих пор большинство кода, который я нахожу, чтобы сделать любой вид умножения матрицы с помощью CUBLAS (по-видимому?) чрезмерно сложным.

Я пытаюсь создать базовую лабораторию, где студенты могут сравнить производительность умножения матриц на GPU vs matrix умножение на CPU, предположительно с повышенной производительностью на GPU.

2 ответов


SDK содержит matrixMul, который иллюстрирует использование CUBLAS. Для более простого примера см. руководство CUBLAS 1.3.

образец matrixMul также показывает пользовательское ядро, это не будет выполняться, а также CUBLAS, конечно.


CUBLAS не обязательно показывать, что GPU превосходит CPU, хотя CUBLAS, вероятно, превзойдет его больше. Похоже, что многие простые реализации CUDA (включая матричное умножение) могут превзойти CPU, если задан достаточно большой набор данных, как объяснено и продемонстрировано здесь:

самый простой пример, чтобы показать GPU превосходит CPU с помощью CUDA