diff --git a/loopy/kernel/instruction.py b/loopy/kernel/instruction.py index a2991c47bd9b671cb0ac5e097a0b47a02529a3a8..6510da4daf0d9c47ee33383616187d93ad919a06 100644 --- a/loopy/kernel/instruction.py +++ b/loopy/kernel/instruction.py @@ -91,7 +91,7 @@ class InstructionBase(ImmutableRecord): .. attribute:: no_sync_with - a :class:`frozenset` of tuples of the form `(insn_id, scope)`, where + a :class:`frozenset` of tuples of the form ``(insn_id, scope)``, where `insn_id` refers to :attr:`id` of :class:`Instruction` instances and `scope` is one of the following strings: @@ -99,11 +99,12 @@ class InstructionBase(ImmutableRecord): - `"global"` - `"any"`. - This indicates (symmetrically) that program semantics are not affected by - execution ordering of the involved instructions. In particular, - no barrier synchronization will be considered necessary with the given - instruction using barriers of type `scope`, even given the existence of - a dependency chain and apparently conflicting access. + An element ``(insn_id, scope)`` means "no conflicting variable access + for variables of ``scope`` between this instruction and ``insn_id``. + Specifically, loopy will not complain even if it detects that accesses + potentially requiring ordering (e.g. by dependencies) exist, and it + will not emit barriers to guard any dependencies from this + instruction on ``insn_id`` that may exist. Note, that :attr:`no_sync_with` allows instruction matching through wildcards and match expression, just like :attr:`depends_on`.