Przesyłanie rozmiaru tablicy dwuwymiarowej jako parametr
Ostatnio zmodyfikowano 2013-11-14 16:54
Adam3423 Temat założony przez niniejszego użytkownika |
Przesyłanie rozmiaru tablicy dwuwymiarowej jako parametr » 2013-11-14 14:08:24 WItam, mam problem z zadaniem z uczelni: Napisz program mnożący 2 macierze o losowych wartościach i dodających te macierze w trybie wielowątkowym. Nie wiem jak przesłać jako parametr rozmiar macierzy (gdyż takie jest wymaganie). Jakby ktoś mógł rzucić okiem to będę wdzięczny. Jest to mój pierwszy program z użyciem openMP więc zrównoleglenie również może nie być poprawnie napisane. #include<iostream> #include<time.h> #include<omp.h> #include<cstdio> #include<ctime>
using namespace std;
int main( int count, char * argv[] ) { srand( time( NULL ) ); const int size = atoi argv[ 1 ]; int a[ size ][ size ]; int b[ size ][ size ]; int c[ size ][ size ]; int start, stop, time1, time2; int numOFthreads = atoi argv[ 2 ]; for( int i = 0; i < size; ++i ) { for( int j = 0; j < size; ++j ) { a[ i ][ j ] = rand(); b[ i ][ j ] = rand(); c[ i ][ j ] = 0; } } omp_set_num_threads( numOFthreads ); start = clock(); #pragma omp parallel for( int i = 0; i < size; ++i ) { for( int j = 0; j < size; ++j ) { for( int k = 0; k < size; ++k ) { c[ i ][ j ] += a[ i ][ k ] * b[ k ][ j ]; } } } stop = clock(); time1 = stop - start; for( int i = 0; i < size; ++i ) { for( int j = 0; j < size; ++j ) { c[ i ][ j ] = 0; } } omp_set_num_threads( numOFthreads ); start = clock(); #pragma omp parallel for( int i = 0; i < size; ++i ) { for( int j = 0; j < size; ++j ) { c[ i ][ j ] = a[ i ][ j ] + b[ i ][ j ]; } } stop = clock(); time2 = stop - start; cout << "Multiplication time: " << time1 << endl; cout << "Addition time: " << time2 << endl; system( "Pause" ); return 0; }
|
|
RazzorFlame |
» 2013-11-14 15:24:36 Nie wiem czy ja jestem ślepy czy coś ale tu żadnych wątków nie ma. |
|
Adam3423 Temat założony przez niniejszego użytkownika |
» 2013-11-14 15:40:41 Ok, chodzi mi bardziej o to jak podać rozmiar tablicy w czasie uruchamiania programu, gdyż nie podoba się kompilatorowi tak jak to zrobiłem, także proszę o pomoc. Rozmiar tab musi być const i w tym mam problem. |
|
pekfos |
» 2013-11-14 16:20:41 const int size = atoi argv[ 1 ];
Co to miało być? Poza tym, rozmiar zwykłych tablic musi być znany w czasie kompilacji. |
|
Adam3423 Temat założony przez niniejszego użytkownika |
» 2013-11-14 16:54:23 miało być size= atoi(argv[1]);
Dzięki za pomoc, myślałem, że da się to jakoś obejść. |
|
« 1 » |