[gegl/openmp: 3/5] config: add GeglConfig setting for OpenMP



commit c2dc4b7eacdf21911492e0176b49e9ab9ea0a840
Author: Øyvind Kolås <pippin gimp org>
Date:   Tue Jun 3 22:45:26 2014 +0200

    config: add GeglConfig setting for OpenMP

 gegl/gegl-config.c |   16 ++++++++++++++++
 gegl/gegl-config.h |    1 +
 gegl/gegl-init.c   |   12 ++++++++++++
 3 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/gegl/gegl-config.c b/gegl/gegl-config.c
index 75d7001..fecf8e4 100644
--- a/gegl/gegl-config.c
+++ b/gegl/gegl-config.c
@@ -44,6 +44,7 @@ enum
   PROP_TILE_HEIGHT,
   PROP_THREADS,
   PROP_USE_OPENCL,
+  PROP_USE_OPENMP,
   PROP_QUEUE_SIZE,
   PROP_APPLICATION_LICENSE
 };
@@ -90,6 +91,10 @@ gegl_config_get_property (GObject    *gobject,
         g_value_set_boolean (value, gegl_cl_is_accelerated());
         break;
 
+      case PROP_USE_OPENMP:
+        g_value_set_boolean (value, config->use_openmp);
+        break;
+
       case PROP_QUEUE_SIZE:
         g_value_set_int (value, config->queue_size);
         break;
@@ -140,6 +145,9 @@ gegl_config_set_property (GObject      *gobject,
       case PROP_USE_OPENCL:
         config->use_opencl = g_value_get_boolean (value);
         break;
+      case PROP_USE_OPENMP:
+        config->use_openmp = g_value_get_boolean (value);
+        break;
       case PROP_QUEUE_SIZE:
         config->queue_size = g_value_get_int (value);
         break;
@@ -241,6 +249,14 @@ gegl_config_class_init (GeglConfigClass *klass)
                                                          G_PARAM_READWRITE |
                                                          G_PARAM_CONSTRUCT));
 
+  g_object_class_install_property (gobject_class, PROP_USE_OPENMP,
+                                   g_param_spec_boolean ("use-openmp",
+                                                         "Use OpenMP",
+                                                         "Try to use OpenMP",
+                                                         FALSE,
+                                                         G_PARAM_READWRITE |
+                                                         G_PARAM_CONSTRUCT));
+
   g_object_class_install_property (gobject_class, PROP_QUEUE_SIZE,
                                    g_param_spec_int ("queue-size",
                                                      "Queue size",
diff --git a/gegl/gegl-config.h b/gegl/gegl-config.h
index 607c883..808c409 100644
--- a/gegl/gegl-config.h
+++ b/gegl/gegl-config.h
@@ -43,6 +43,7 @@ struct _GeglConfig
   gint     tile_height;
   gint     threads;
   gboolean use_opencl;
+  gboolean use_openmp;
   gint     queue_size;
   gchar   *application_license;
 };
diff --git a/gegl/gegl-init.c b/gegl/gegl-init.c
index 91baf04..99f5f1b 100644
--- a/gegl/gegl-init.c
+++ b/gegl/gegl-init.c
@@ -385,6 +385,18 @@ static void gegl_config_parse_env (GeglConfig *config)
         g_warning ("Unknown value for GEGL_USE_OPENCL: %s", opencl_env);
     }
 
+  if (g_getenv ("GEGL_USE_OPENMP"))
+    {
+      const char *openmp_env = g_getenv ("GEGL_USE_OPENMP");
+
+      if (g_ascii_strcasecmp (openmp_env, "yes") == 0)
+        g_object_set (config, "use-openmp", TRUE, NULL);
+      else if (g_ascii_strcasecmp (openmp_env, "no") == 0)
+        g_object_set (config, "use-openmp", FALSE, NULL);
+      else
+        g_warning ("Unknown value for GEGL_USE_OPENMP: %s", openmp_env);
+    }
+
   if (g_getenv ("GEGL_SWAP"))
     g_object_set (config, "swap", g_getenv ("GEGL_SWAP"), NULL);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]