WriteRaceConditionWarning is prompted for atomic operations
Minimal reproducer:
import loopy as lp
import pyopencl as cl
ctx = cl.create_some_context()
knl = lp.make_kernel(
"{[i]:0<=i<10}",
"""
a[0] = a[0] + 2.0*i {atomic}
""", [lp.GlobalArg('a', shape=(1,), dtype=float, for_atomic=True)],
lang_version=(2018, 2))
knl = lp.split_iname(knl, 'i', 2, inner_tag='l.0', outer_tag='g.0')
evt, (out,) = knl(cl.CommandQueue(ctx))
assert out.get()[0] == 90
The warning emitted is:
$ python example.py
/home/kaushikcfd/projects/loopy-dev/src/loopy/loopy/check.py:354: WriteRaceConditionWarning: in kernel loopy_kernel: instruction 'insn' contains a write race: instruction will be run across parallel iname(s) 'i_inner,i_outer', which is/are not referenced in the lhs index (add 'write_race(insn)' to silenced_warnings kernel attribute to disable)
WriteRaceConditionWarning)
Edited by Kaushik Kulkarni