Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error running Poiseuille.py example using loopy backend #130

Open
ma-sadeghi opened this issue Jan 28, 2021 · 1 comment
Open

Error running Poiseuille.py example using loopy backend #130

ma-sadeghi opened this issue Jan 28, 2021 · 1 comment

Comments

@ma-sadeghi
Copy link

Here's the detailed error message:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/pytools/__init__.py in wrapper(obj, *args, **kwargs)
    681         try:
--> 682             return getattr(obj, cache_dict_name)[key]
    683         except AttributeError:

AttributeError: 'PyOpenCLKernelExecutor' object has no attribute '_memoize_dic_kernel_info'

During handling of the above exception, another exception occurred:

VariableAccessNotOrdered                  Traceback (most recent call last)
<ipython-input-3-3589f98fdfb9> in <module>
      2 Tf = 10.0
      3 
----> 4 sol = run(dx, Tf, generator="loopy")
      5 
      6 u = sol.m[ux]

<ipython-input-2-c4f5705253d0> in run(dx, Tf, generator, sorder, with_plot)
    118         if itr % 500 == 0:
    119             print(f"Iteration #: {itr:3}")
--> 120         sol.one_time_step()
    121     toc()
    122 

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/pylbm/monitoring.py in wrapper(*args, **kwds)
    119         Monitor.register(f)
    120         Monitor.start_timing(f)
--> 121         output = f(*args, **kwds)
    122         Monitor.stop_timing(f)
    123         return output

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/pylbm/simulation.py in one_time_step(self, **kwargs)
    370         self._update_m = True # we recompute f so m will be not correct
    371 
--> 372         self.boundary_condition(**kwargs)
    373 
    374         self.algo.call_function('one_time_step', self, **kwargs)

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/pylbm/monitoring.py in wrapper(*args, **kwds)
    119         Monitor.register(f)
    120         Monitor.start_timing(f)
--> 121         output = f(*args, **kwds)
    122         Monitor.stop_timing(f)
    123         return output

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/pylbm/simulation.py in boundary_condition(self)
    346         """
    347         f = self.container.F
--> 348         f.update()
    349 
    350         for method in self.bc.methods:

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/pylbm/monitoring.py in wrapper(*args, **kwds)
    119         Monitor.register(f)
    120         Monitor.start_timing(f)
--> 121         output = f(*args, **kwds)
    122         Monitor.stop_timing(f)
    123         return output

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/pylbm/storage.py in update(self)
    291 
    292             args = locals()
--> 293             call_genfunction(self.generator.module.update_x, args)
    294 
    295             if dim > 1:

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/pylbm/symbolic.py in call_genfunction(function, args)
    255         func_args = getargspec(function).args
    256         d = {k:args[k] for k in func_args} #pylint: disable=invalid-name
--> 257     monitor(function)(**d)

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/pylbm/monitoring.py in wrapper(*args, **kwds)
    119         Monitor.register(f)
    120         Monitor.start_timing(f)
--> 121         output = f(*args, **kwds)
    122         Monitor.stop_timing(f)
    123         return output

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/kernel/__init__.py in __call__(self, *args, **kwargs)
   1448             self._kernel_executor_cache[key] = kex
   1449 
-> 1450         return kex(*args, **kwargs)
   1451 
   1452     # }}}

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/target/pyopencl_execution.py in __call__(self, queue, **kwargs)
    356         kwargs = self.packing_controller.unpack(kwargs)
    357 
--> 358         kernel_info = self.kernel_info(self.arg_to_dtype_set(kwargs))
    359 
    360         return kernel_info.invoker(

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/pytools/__init__.py in wrapper(obj, *args, **kwargs)
    682             return getattr(obj, cache_dict_name)[key]
    683         except AttributeError:
--> 684             result = function(obj, *args, **kwargs)
    685             setattr(obj, cache_dict_name, {key: result})
    686             return result

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/target/pyopencl_execution.py in kernel_info(self, arg_to_dtype_set, all_kwargs)
    284     @memoize_method
    285     def kernel_info(self, arg_to_dtype_set=frozenset(), all_kwargs=None):
--> 286         kernel = self.get_typed_and_scheduled_kernel(arg_to_dtype_set)
    287 
    288         from loopy.codegen import generate_code_v2

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/target/execution.py in get_typed_and_scheduled_kernel(self, arg_to_dtype_set)
    779         logger.debug("%s: typed-and-scheduled cache miss" % self.kernel.name)
    780 
--> 781         kernel = self.get_typed_and_scheduled_kernel_uncached(arg_to_dtype_set)
    782 
    783         if CACHING_ENABLED:

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/target/execution.py in get_typed_and_scheduled_kernel_uncached(self, arg_to_dtype_set)
    758 
    759             from loopy.schedule import get_one_scheduled_kernel
--> 760             kernel = get_one_scheduled_kernel(kernel)
    761 
    762         return kernel

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/schedule/__init__.py in get_one_scheduled_kernel(kernel)
   2141         "Use get_one_linearized_kernel instead.",
   2142         DeprecationWarning)
-> 2143     return get_one_linearized_kernel(kernel)
   2144 
   2145 

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/schedule/__init__.py in get_one_linearized_kernel(kernel)
   2162         with ProcessLogger(logger, "%s: schedule" % kernel.name):
   2163             with MinRecursionLimitForScheduling(kernel):
-> 2164                 result = _get_one_scheduled_kernel_inner(kernel)
   2165 
   2166     if CACHING_ENABLED and not from_cache:

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/schedule/__init__.py in _get_one_scheduled_kernel_inner(kernel)
   2132     # See https://gitlab.tiker.net/inducer/sumpy/issues/31 for context.
   2133 
-> 2134     return next(iter(generate_loop_schedules(kernel)))
   2135 
   2136 

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/schedule/__init__.py in generate_loop_schedules(kernel, debug_args)
   1943 
   1944     with MinRecursionLimitForScheduling(kernel):
-> 1945         yield from generate_loop_schedules_inner(kernel, debug_args=debug_args)
   1946 
   1947 

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/schedule/__init__.py in generate_loop_schedules_inner(kernel, debug_args)
   1953 
   1954     from loopy.check import pre_schedule_checks
-> 1955     pre_schedule_checks(kernel)
   1956 
   1957     schedule_count = 0

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/check.py in pre_schedule_checks(kernel)
    820         check_write_destinations(kernel)
    821         check_has_schedulable_iname_nesting(kernel)
--> 822         check_variable_access_ordered(kernel)
    823 
    824         logger.debug("%s: pre-schedule check: done" % kernel.name)

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/check.py in check_variable_access_ordered(kernel)
    788     with ProcessLogger(logger, "%s: check variable access ordered" % kernel.name):
    789         if kernel.options.enforce_variable_access_ordered:
--> 790             _check_variable_access_ordered_inner(kernel)
    791         else:
    792             from loopy.diagnostic import VariableAccessNotOrdered

/opt/anaconda3/envs/pmeal/lib/python3.7/site-packages/loopy/check.py in _check_variable_access_ordered_inner(kernel)
    760 
    761             from loopy.diagnostic import VariableAccessNotOrdered
--> 762             raise VariableAccessNotOrdered(msg)
    763 
    764     # }}}

VariableAccessNotOrdered: No dependency relationship found between 'inst_0' which writes the variable 'f' and 'inst_0_0' which also accesses the variable 'f'. Either add a (possibly indirect) dependency between the two, or add them to each others' nosync set to indicate that no ordering is intended, or turn off this check by setting the 'enforce_variable_access_ordered' option (more issues of this type may exist--only reporting the first one)
@gouarin
Copy link
Member

gouarin commented Jan 29, 2021

Thanks for this report.

pylbm must be updated according to the changes made in loopy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants