p2qbxl_from_csr fails to generate with check_implemented_domains error
Here is what you can do to reproduce reliably:
- Clear cache
- Go to
examples/layerpot.py
from pytential and setqbx_order = 17
- Run examples/layerpot.py
Here's the error you get:
-------------------------------------------------------------------------------
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/matt/src/loopy/loopy/codegen/__init__.py", line 491, in generate_code_v2
device_code_str)
File "/home/matt/src/loopy/loopy/check.py", line 740, in check_implemented_domains
% (insn_id, insn_impl_domain, desired_domain, "\n".join(lines)))
loopy.diagnostic.LoopyError: sanity check failed--implemented and desired domain for instruction 'insn_6' do not match
implemented: [ntgt_centers, isrc_box_start, isrc_box_stop, isrc_end, isrc_start] -> { [itgt_center_outer, itgt_center_inner, isrc_box, idim = 1] : itgt_center_outer >= 0 and itgt_center_inner >= 0 and isrc_box_start <= isrc_box < isrc_box_stop and ((16itgt_center_outer <= -16 + ntgt_centers and itgt_center_inner <= 15) or (16itgt_center_outer >= -15 + ntgt_centers and itgt_center_inner < ntgt_centers - 16itgt_center_outer)); [itgt_center_outer, itgt_center_inner, isrc_box, idim = 0] : itgt_center_outer >= 0 and itgt_center_inner >= 0 and isrc_box_start <= isrc_box < isrc_box_stop and ((16itgt_center_outer <= -16 + ntgt_centers and itgt_center_inner <= 15) or (16itgt_center_outer >= -15 + ntgt_centers and itgt_center_inner < ntgt_centers - 16itgt_center_outer)) }
desired:[ntgt_centers, isrc_box_start, isrc_box_stop, isrc_end, isrc_start] -> { [itgt_center_outer, itgt_center_inner, isrc_box, idim] : isrc_start < isrc_end and itgt_center_inner >= 0 and -16itgt_center_outer <= itgt_center_inner <= 15 and itgt_center_inner < ntgt_centers - 16itgt_center_outer and isrc_box_start <= isrc_box < isrc_box_stop and 0 <= idim <= 1 }
sample point in implemented, but not desired: isrc_start=0, isrc_box=0, isrc_box_start=0, idim=0, ntgt_centers=1, isrc_box_stop=1, itgt_center_inner=0, isrc_end=0, itgt_center_outer=0
gist of implemented, but not desired: [ntgt_centers, isrc_box_start, isrc_box_stop, isrc_end, isrc_start] -> { [itgt_center_outer, itgt_center_inner, isrc_box, idim] : isrc_start < isrc_end }
I think this may be related to the recent domain tree changes, because I've only noticed it recently.
Here's a pickled version of the kernel, but I think this is unlikely to work on an environment that is different from mine anyway: p2qbxl_from_csr.loopy