From 4f61fdfb2e0fb230c4a268987d5668f6d5087adb Mon Sep 17 00:00:00 2001
From: Pedro Gonnet <pedro.gonnet@durham.ac.uk>
Date: Sun, 23 Jun 2013 14:41:49 +0000
Subject: [PATCH] use omp tasks for kick1.

Former-commit-id: 18e63acdc3fecd2b87b1894cac6fef1338c5990a
---
 src/engine.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/engine.c b/src/engine.c
index 6241ec0755..d389129116 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -518,7 +518,12 @@ void engine_map_kick_first ( struct cell *c , void *data ) {
         /* Loop over the remaining progeny. */
         for ( k = 0 ; k < 8 ; k++ )
             if ( c->progeny[k] != NULL ) {
+                #pragma omp task
                 engine_map_kick_first( c->progeny[k] , e );
+                }
+        #pragma omp taskwait
+        for ( k = 0 ; k < 8 ; k++ )
+            if ( c->progeny[k] != NULL ) {
                 dt_min = fminf( dt_min , c->progeny[k]->dt_min );
                 dt_max = fmaxf( dt_max , c->progeny[k]->dt_max );
                 h_max = fmaxf( h_max , c->progeny[k]->h_max );
@@ -725,7 +730,7 @@ void engine_step ( struct engine *e ) {
     /* First kick. */
     TIMER_TIC
     // space_map_cells_post( e->s , 1 , &engine_map_kick_first , e );
-    k = 0;
+    /* k = 0;
     #pragma omp parallel shared(k,e)
     {
         int myk;
@@ -741,7 +746,12 @@ void engine_step ( struct engine *e ) {
             else
                 break;
             }
+        } */
+    for ( k = 0 ; k < e->s->nr_cells ; k++ ) {
+        #pragma omp task
+        engine_map_kick_first( &e->s->cells[k] , e );
         }
+    #pragma omp taskwait
     TIMER_TOC( timer_kick1 );
         
     // for(k=0; k<10; ++k)
-- 
GitLab