diff --git a/test/test_loopy.py b/test/test_loopy.py index e424e063f9e062ed68054e1effe91d66bc389d50..e62e52a6c239dddafa2dadd189151549aeeb941b 100644 --- a/test/test_loopy.py +++ b/test/test_loopy.py @@ -1363,6 +1363,48 @@ def test_save_with_base_storage(ctx_factory, debug=False): save_and_reload_temporaries_test(queue, knl, np.arange(10), debug) +def test_save_ambiguous_storage_requirements(): + knl = lp.make_kernel( + "{[i,j]: 0 <= i < 10 and 0 <= j < 10}", + """ + <>a[j] = j + ... gbarrier + out[i,j] = a[j] + """, + seq_dependencies=True) + + knl = lp.tag_inames(knl, dict(i="g.0", j="l.0")) + knl = lp.duplicate_inames(knl, "j", within="writes:out", tags={"j": "l.0"}) + knl = lp.set_temporary_scope(knl, "a", "local") + + knl = lp.preprocess_kernel(knl) + knl = lp.get_one_scheduled_kernel(knl) + + from loopy.diagnostic import LoopyError + with pytest.raises(LoopyError): + lp.save_and_reload_temporaries(knl) + + +def test_save_across_inames_with_same_tag(ctx_factory, debug=False): + ctx = ctx_factory() + queue = cl.CommandQueue(ctx) + + knl = lp.make_kernel( + "{[i]: 0 <= i < 10}", + """ + <>a[i] = i + ... gbarrier + out[i] = a[i] + """, + "...", + seq_dependencies=True) + + knl = lp.tag_inames(knl, dict(i="l.0")) + knl = lp.duplicate_inames(knl, "i", within="reads:a", tags={"i": "l.0"}) + + save_and_reload_temporaries_test(queue, knl, np.arange(10), debug) + + def test_missing_temporary_definition_detection(): knl = lp.make_kernel( "{ [i]: 0<=i<10 }",