From f7df3d163133d24e459deec13ef4f56861a626e2 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 28 Apr 2016 23:59:20 -0500
Subject: [PATCH] Only insert barriers for parallel code

---
 loopy/schedule.py | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/loopy/schedule.py b/loopy/schedule.py
index 4ffc68e83..c19a3e2c8 100644
--- a/loopy/schedule.py
+++ b/loopy/schedule.py
@@ -1440,24 +1440,27 @@ def generate_loop_schedules(kernel, debug_args={}):
             for gen_sched in gen:
                 debug.stop()
 
-                logger.info("%s: barrier insertion: global" % kernel.name)
+                gsize, lsize = kernel.get_grid_sizes_as_exprs()
 
-                gen_sched = insert_barriers(kernel, gen_sched,
-                        reverse=False, kind="global")
+                if gsize or lsize:
+                    logger.info("%s: barrier insertion: global" % kernel.name)
 
-                for sched_item in gen_sched:
-                    if (
-                            isinstance(sched_item, Barrier)
-                            and sched_item.kind == "global"):
-                        raise LoopyError("kernel requires a global barrier %s"
-                                % sched_item.comment)
+                    gen_sched = insert_barriers(kernel, gen_sched,
+                            reverse=False, kind="global")
 
-                logger.info("%s: barrier insertion: local" % kernel.name)
+                    for sched_item in gen_sched:
+                        if (
+                                isinstance(sched_item, Barrier)
+                                and sched_item.kind == "global"):
+                            raise LoopyError("kernel requires a global barrier %s"
+                                    % sched_item.comment)
 
-                gen_sched = insert_barriers(kernel, gen_sched,
-                        reverse=False, kind="local")
+                    logger.info("%s: barrier insertion: local" % kernel.name)
 
-                logger.info("%s: barrier insertion: done" % kernel.name)
+                    gen_sched = insert_barriers(kernel, gen_sched,
+                            reverse=False, kind="local")
+
+                    logger.info("%s: barrier insertion: done" % kernel.name)
 
                 yield kernel.copy(
                         schedule=gen_sched,
-- 
GitLab