Cześć,
jako zadanie na zajęcia z Programowania Kart Graficznych dostałem funkcję mnożenia macierzy przy pomocy oprogramowania CUDA, lecz mój główny problem polega na czymś innym. Funkcja jest już napisana, a wywołuję ją się tak:
void MatMul(const Matrix a, const Matrix b, Matrix c)
Teraz struktura Matrix:
typedef struct {
int width;
int height;
float* elements;
size_t pitch;
} Matrix;
pitch jest potrzebny do funkcji cudaMallocPitch() .
Teraz główne pytanie, funkcję MatMul muszę uruchomić z gotowymi Matrixami które uzupełnię danymi losowymi, nie mam pojęcia jednak jak to zrobić. Gdyby elements był float ** mógłbym wtedy zrobić coś takiego:
Matrix a;
a.elements = new (float**)[size];
for (int i = 0; i < size; i++) { a.elements[i] = new (float*)[size]; }
Jednak struktura wygląda jak wygląda, wskaźnik jest pojedynczy, a ja utknąłem.