• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tablica 2D jako struktura oraz uzupełnanie jej przy pomocy wskaźnika.

0 głosów
76 wizyt
pytanie zadane 8 grudnia 2017 w C i C++ przez Łukasz Wasilewski Mądrala (5,110 p.)

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. 

1 odpowiedź

+1 głos
odpowiedź 8 grudnia 2017 przez Criss VIP (133,460 p.)
wybrane 8 grudnia 2017 przez Łukasz Wasilewski
 
Najlepsza
Dlaczego nie chcesz trzymać elementów w tablicy jednowymiarowej? W porządku column-wise (najpierw jeden po drugim ustawione elementy pierwszej kolumny, potem drugiej itd.) albo row-wise (analogicznie dla rzedow). Podejrzewam, że CUDA wymusza jeden z tych dwóch układów. To zupełnie normalne i dzięki takiemu rozwiązaniu potrzebne jest mniej odwołan do pamięci, łatwiej kopiować dane i generalnie wszystko jest prostrze.
komentarz 8 grudnia 2017 przez Łukasz Wasilewski Mądrala (5,110 p.)

Nie wierzę, że rozwiązanie było tak proste. 
Dzięki Tobie teraz tworzę elements = new float[width*height], natomiast po elementach poruszam się: elements[i*width + j] gdzie to numer wiersza, a j kolumny. 

Dziękuję za pomoc smiley

 

komentarz 8 grudnia 2017 przez Criss VIP (133,460 p.)
Dokładnie tak powinno to wyglądać :) Proszę bardzo

Podobne pytania

0 głosów
1 odpowiedź 96 wizyt
pytanie zadane 3 czerwca 2017 w C i C++ przez J0ker Bywalec (2,110 p.)
+1 głos
3 odpowiedzi 1,243 wizyt
pytanie zadane 9 marca 2017 w C i C++ przez Antero00 Bywalec (2,830 p.)
0 głosów
1 odpowiedź 297 wizyt
Oferty pracy dla początkujących programistów na portalu No Fluff Jobs
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

49,783 zapytań

91,750 odpowiedzi

185,346 komentarzy

24,230 pasjonatów

Przeglądających: 258
Pasjonatów: 17 Gości: 241

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...