From beadac2a0cc9295956a27154c6fdcdd9666b2833 Mon Sep 17 00:00:00 2001
From: Philippe Virouleau <philippe.44@gmail.com>
Date: Wed, 21 Nov 2018 15:19:38 +0100
Subject: [PATCH] Fix CI

---
 .gitlab-ci.yml                        |  2 +-
 CMakeLists.txt                        | 12 +++--------
 runtime/openmp/CMakeLists.txt         |  1 +
 runtime/openmp/codelets/codelet_map.c | 30 +++++++++++++++++++++++++++
 timing/time_zpotrf_tile.c             |  1 -
 timing/timing.c                       |  1 +
 6 files changed, 36 insertions(+), 11 deletions(-)
 create mode 100644 runtime/openmp/codelets/codelet_map.c

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ba98290c4..ca71fb23b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -102,7 +102,7 @@ build_openmp:
       - build
       - chameleon_openmp.log
   variables:
-    BUILD_OPTIONS: "-DCHAMELEON_SCHED_OPENMP=ON"
+    BUILD_OPTIONS: "-DCHAMELEON_SCHED_OPENMP=ON -DCMAKE_Fortran_COMPILER=gfortran -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++"
     VERSION: openmp
 
 test_starpu_branches:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cf5f355a5..7b0d295a1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -897,20 +897,14 @@ if( CHAMELEON_SCHED_QUARK )
 endif()
 
 if( CHAMELEON_SCHED_OPENMP )
-
-    # create list of components in order to make a single call to find_package(starpu...)
-    set(OPENMP_COMPONENT_LIST "HWLOC")
-    if(CHAMELEON_USE_CUDA)
-        list(APPEND OPENMP_COMPONENT_LIST "CUDA")
-    endif()
-
-    find_package(OpenMP COMPONENTS ${OPENMP_COMPONENT_LIST})
+    find_package(OpenMP REQUIRED)
 
     if ( OPENMP_FOUND )
         message("-- ${Blue}Add definition CHAMELEON_SCHED_OPENMP"
         " - Activate OpenMP in Chameleon${ColourReset}")
         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
-        set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_CXX_FLAGS}")
+        set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${OpenMP_Fortran_FLAGS}")
+        set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_C_FLAGS}")
         # TODO: check for compiler support for "_Pragma"
     else ( OPENMP_FOUND )
       message(FATAL_ERROR "Something went wrong when finding OpenMP")
diff --git a/runtime/openmp/CMakeLists.txt b/runtime/openmp/CMakeLists.txt
index 6c0ea5ab5..1a6c6da84 100644
--- a/runtime/openmp/CMakeLists.txt
+++ b/runtime/openmp/CMakeLists.txt
@@ -85,6 +85,7 @@ precisions_rules_py(RUNTIME_SRCS_GENERATED "${ZSRC}"
 set(RUNTIME_SRCS
   ${RUNTIME_COMMON}
   ${RUNTIME_SRCS_GENERATED}
+  ${CODELETS_SRC}
   )
 
 # Force generation of sources
diff --git a/runtime/openmp/codelets/codelet_map.c b/runtime/openmp/codelets/codelet_map.c
new file mode 100644
index 000000000..57ee20db0
--- /dev/null
+++ b/runtime/openmp/codelets/codelet_map.c
@@ -0,0 +1,30 @@
+/**
+ *
+ * @file quark/codelet_map.c
+ *
+ * @copyright 2018-2018 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
+ *                      Univ. Bordeaux. All rights reserved.
+ *
+ ***
+ *
+ * @brief Chameleon map Quark codelet
+ *
+ * @version 1.0.0
+ * @author Mathieu Faverge
+ * @date 2018-09-24
+ *
+ */
+#include "chameleon_openmp.h"
+
+void INSERT_TASK_map( const RUNTIME_option_t *options,
+                      cham_uplo_t uplo, const CHAM_desc_t *A, int Am, int An,
+                      cham_unary_operator_t operator, void *op_args )
+{
+    char *ptrA = RTBLKADDR( A, char, Am, An );
+
+#pragma omp task depend(inout: ptrA[0])
+    {
+        operator( A, uplo, Am, An, ptrA, op_args );
+    }
+
+}
diff --git a/timing/time_zpotrf_tile.c b/timing/time_zpotrf_tile.c
index 9707f44d6..67e957389 100644
--- a/timing/time_zpotrf_tile.c
+++ b/timing/time_zpotrf_tile.c
@@ -37,7 +37,6 @@ RunTest( int *iparam, double *dparam, chameleon_time_t *t_ )
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descB,  check, CHAMELEON_Complex64_t, ChamComplexDouble, LDB, N, NRHS );
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descAC, check, CHAMELEON_Complex64_t, ChamComplexDouble, LDA, N, N    );
     PASTE_CODE_ALLOCATE_MATRIX_TILE( descX,  check, CHAMELEON_Complex64_t, ChamComplexDouble, LDB, N, NRHS );
-    CHAMELEON_zplghe_Tile( (double)N, ChamUpperLower, descA, 51 );
 
     /* Initialize data and save A if check */
     if ( check ) {
diff --git a/timing/timing.c b/timing/timing.c
index 51eddd529..0b6037948 100644
--- a/timing/timing.c
+++ b/timing/timing.c
@@ -728,6 +728,7 @@ CHAMELEON_Main(int *iparam, char *prog_name, int start, int stop, int step) {
         if (status != CHAMELEON_SUCCESS) return status;
         success += status;
     }
+    return success;
 }
 
 int
-- 
GitLab