diff --git a/examples/test_qr.c b/examples/test_qr.c index f941e4117a9f48de0d45afcc10be3767c20257c5..5a911ff537469df92e4be36e66f0c2340206bfe4 100644 --- a/examples/test_qr.c +++ b/examples/test_qr.c @@ -585,8 +585,8 @@ void test_qr(int m, int n, int K, int nr_threads, int runs, double* matrix) { sizeof(int) * 3, 5); qsched_addlock(&s, tid_new, rid[j * m + i]); qsched_adduse(&s, tid_new, rid[k * m + i]); - qsched_adduse(&s, tid_new, rid[j * m + k]); - // qsched_addunlock(&s, tid[k * m + i], tid_new); + qsched_addlock(&s, tid_new, rid[j * m + k]); + qsched_addunlock(&s, tid[k * m + i], tid_new); qsched_addunlock(&s, tid[j * m + i - 1], tid_new); if (tid[j * m + i] != -1) qsched_addunlock(&s, tid[j * m + i], tid_new); diff --git a/examples/test_qr_ompss.c b/examples/test_qr_ompss.c index 475e892376f6412dd5a71c2de5c10a49793db6c9..e3693c41f66cd4598e462004f7d39dae3a0b8d2d 100644 --- a/examples/test_qr_ompss.c +++ b/examples/test_qr_ompss.c @@ -62,7 +62,7 @@ int nr_timers = 0; double* columnToTile(double* columnMatrix, int size, int m, int n, int tilesize) { double* TileMatrix; - TileMatrix = malloc(sizeof(double) * size); + TileMatrix = (double *)malloc(sizeof(double) * size); if (TileMatrix == NULL) error("failed to allocate TileMatrix"); int i, j, k, l; @@ -130,7 +130,8 @@ double* tileToColumn(double* tileMatrix, int size, int m, int n, int tilesize) { * * */ -#pragma omp task inout(cornerTile[0]) out(tauMatrix[0]) +#pragma omp task inout(cornerTile[0]) +// out(tauMatrix[0]) void DGEQRF(double* restrict cornerTile, int tileSize, double* restrict tauMatrix, int k, int tauNum) { int i, j, n; @@ -215,7 +216,8 @@ void DGEQRF(double* restrict cornerTile, int tileSize, * * */ -#pragma omp task in(cornerTile[0]) inout(rowTile[0]) in(tauMatrix[0]) +#pragma omp task in(cornerTile[0]) inout(rowTile[0]) +// in(tauMatrix[0]) void DLARFT(double* restrict cornerTile, double* restrict rowTile, int tileSize, int jj, int kk, double* restrict tauMatrix, int tauNum) { int i, j, n; @@ -269,7 +271,8 @@ void DLARFT(double* restrict cornerTile, double* restrict rowTile, int tileSize, * * */ -#pragma omp task inout(cornerTile[0]) inout(columnTile[0]) out(tauMatrix[0]) +#pragma omp task inout(cornerTile[0]) inout(columnTile[0]) +// out(tauMatrix[0]) void DTSQRF(double* restrict cornerTile, double* restrict columnTile, int tilesize, int ii, int kk, double* restrict tauMatrix, int tauNum) { @@ -362,7 +365,8 @@ void DTSQRF(double* restrict cornerTile, double* restrict columnTile, * * */ -#pragma omp task inout(cornerTile[0]) in(columnTile[0]) inout(rowTile[0]) in(tauMatrix[0]) +#pragma omp task inout(cornerTile[0]) in(columnTile[0]) inout(rowTile[0]) +// in(tauMatrix[0]) void DSSRFT(double* restrict cornerTile, double* restrict columnTile, double* restrict rowTile, int tilesize, int ii, int jj, int kk, double* restrict tauMatrix, int tauNum) { @@ -449,12 +453,10 @@ void test_qr(int m, int n, int K, int nr_threads, int runs) { for (k = 0; k < m && k < n; k++) { /* Add kth corner task. */ - // #pragma omp task inout( tid[ k*m + k ] ) DGEQRF(&A[(k * m + k) * K * K], K, tau, k, m); /* Add column tasks on kth row. */ for (j = k + 1; j < n; j++) { - // #pragma omp task inout( tid[ j*m + k ] ) in( tid[ k*m + k ] ) DLARFT(&A[(k * m + k) * K * K], &A[(j * m + k) * K * K], K, j, k, tau, m); } @@ -463,14 +465,11 @@ void test_qr(int m, int n, int K, int nr_threads, int runs) { for (i = k + 1; i < m; i++) { /* Add the row taks for the kth column. */ - // #pragma omp task inout( tid[ k*m + i ] ) in( tid[ k*m + k ] ) DTSQRF(&A[(k * m + k) * K * K], &A[(k * m + i) * K * K], K, i, k, tau, m); /* Add the inner tasks. */ for (j = k + 1; j < n; j++) { - // #pragma omp task inout( tid[ j*m + i ] ) in( tid[ k*m + i ] , tid[ - // j*m + k ] ) DSSRFT(&A[(j * m + i) * K * K], &A[(k * m + i) * K * K], &A[(j * m + k) * K * K], K, i, j, k, tau, m); } @@ -491,7 +490,7 @@ void test_qr(int m, int n, int K, int nr_threads, int runs) { /* Dump the tasks. */ /* for ( k = 0 ; k < nr_timers ; k++ ) printf( "%i %i %lli %lli\n" , timers[k].threadID , timers[k].type , - timers[k].tic , timers[k].toc ); */ + timers[k].tic , timers[k].toc ); */ } /** @@ -500,15 +499,9 @@ void test_qr(int m, int n, int K, int nr_threads, int runs) { int main(int argc, char* argv[]) { - int c, nr_threads; + int c, nr_threads = 1; int M = 4, N = 4, runs = 1, K = 32; -/* Get the number of threads. */ -#pragma omp parallel shared(nr_threads) - { - if (omp_get_thread_num() == 0) nr_threads = omp_get_num_threads(); - } - /* Parse the options */ while ((c = getopt(argc, argv, "m:n:k:r:t:")) != -1) switch (c) { case 'm': @@ -548,4 +541,6 @@ int main(int argc, char* argv[]) { error("Failed to allocate timers."); test_qr(M, N, K, nr_threads, runs); + abort(); + return 0; }