Простой пример умножения матриц CUBLAS? - PullRequest
9 голосов
/ 03 октября 2011

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

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 против матричного умножения на CPU, предположительно с повышенной производительностью на GPU.

Ответы [ 2 ]

7 голосов
/ 04 октября 2011

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

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

1 голос
/ 08 октября 2011

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

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

...