klasa liczaca czas + liczenie macierzy + omp
This commit is contained in:
40
DergunPiotr-WaskoDominik/zad1/Ttiming.h
Normal file
40
DergunPiotr-WaskoDominik/zad1/Ttiming.h
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#if !defined(DEF_TTIMING)
|
||||||
|
#define DEF_TTIMING
|
||||||
|
#include <sys/time.h>
|
||||||
|
|
||||||
|
class TTiming
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
struct timeval start;
|
||||||
|
struct timeval stop;
|
||||||
|
void getTime(timeval &tv);
|
||||||
|
|
||||||
|
public:
|
||||||
|
TTiming(void);
|
||||||
|
|
||||||
|
void Begin(void);
|
||||||
|
long End(void);
|
||||||
|
};
|
||||||
|
|
||||||
|
inline TTiming::TTiming(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void TTiming::Begin(void)
|
||||||
|
{
|
||||||
|
getTime(start);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline long TTiming::End(void)
|
||||||
|
{
|
||||||
|
getTime(stop);
|
||||||
|
return ((stop.tv_sec-start.tv_sec) * 1000 + (stop.tv_usec-start.tv_usec)/1000.0) + 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void TTiming::getTime(timeval &tv)
|
||||||
|
{
|
||||||
|
gettimeofday(&tv,NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <omp.h>
|
#include <omp.h>
|
||||||
|
#include "Ttiming.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@@ -37,6 +38,8 @@ int main(int argc, char *argv[])
|
|||||||
long rozmiar=0;
|
long rozmiar=0;
|
||||||
char *endptr;
|
char *endptr;
|
||||||
int threads_num=0;
|
int threads_num=0;
|
||||||
|
TTiming tt;
|
||||||
|
long i, j;//,k;
|
||||||
|
|
||||||
if (argc < 3)
|
if (argc < 3)
|
||||||
{
|
{
|
||||||
@@ -89,10 +92,23 @@ int main(int argc, char *argv[])
|
|||||||
for (long i=0; i<rozmiar; ++i)
|
for (long i=0; i<rozmiar; ++i)
|
||||||
for (long j=0; j<rozmiar; ++j)
|
for (long j=0; j<rozmiar; ++j)
|
||||||
B[i][j] = (long)(cos(j) *(i+j)) % 10; // postarac sie to zoptymalizowac!
|
B[i][j] = (long)(cos(j) *(i+j)) % 10; // postarac sie to zoptymalizowac!
|
||||||
|
|
||||||
//mnozenie macierzy - TO DO
|
|
||||||
|
|
||||||
|
tt.Begin();
|
||||||
|
//#pragma omp parallel for default(shared)
|
||||||
|
#pragma omp parallel for default(none) shared(A, B, C) firstprivate(rozmiar)private(i, j)
|
||||||
|
for (i=0; i<rozmiar; ++i)
|
||||||
|
for (j=0; j<rozmiar; ++j)
|
||||||
|
{
|
||||||
|
C[i][j] = 0;
|
||||||
|
for (long k=0; k<rozmiar; ++k)
|
||||||
|
C[i][j] += A[i][k]*B[k][j];
|
||||||
|
}
|
||||||
|
|
||||||
|
long elapsed = tt.End();
|
||||||
|
|
||||||
|
cout << "Time: " << elapsed << " ms" << endl;
|
||||||
|
|
||||||
|
|
||||||
array_destroy(A);
|
array_destroy(A);
|
||||||
array_destroy(B);
|
array_destroy(B);
|
||||||
array_destroy(C);
|
array_destroy(C);
|
||||||
|
|||||||
Reference in New Issue
Block a user