ok thanks for catching this Mike - I just gave it a try and the new IPA
propagated scalars into this function, which allowed for constant folding
of the indexing expressions, and effectively hid the underlying issue. With
disabled IPA, I'm able to reproduce this issue. Interestingly, it only
shows up in spark but not hadoop execution modes.
Regards,
Matthias
On Fri, Jun 16, 2017 at 5:35 PM, wrote:
> On the latest master, versus the one from a few days ago, this issue
> appears to be "fixed". The code is in PR 542, and the for-loop in the
> `nn/layers/conv2d_depthwise.dml::forward` function was the one that was
> previously resulting in null pointer exceptions when forced as a parfor
> loop. The `check=0` is still needed, but the null pointer is no longer
> being thrown.
>
> --
>
> Mike Dusenberry
> GitHub: github.com/dusenberrymw
> LinkedIn: linkedin.com/in/mikedusenberry
>
> Sent from my iPhone.
>
>
> > On Jun 14, 2017, at 9:08 PM, Matthias Boehm
> wrote:
> >
> > Generally, the parfor dependency analysis applies a series of tests
> > including traditional techniques from high-performance compilers combined
> > with additional rules for common cases. This dependency analysis tries to
> > proof that there are no loop-carried dependencies - so yes, false
> positives
> > can happen, in which case a user needs to take responsibility by
> disabling
> > the dependency analysis.
> >
> > Regarding your concrete problem - any null pointer exception is of course
> > bug and needs fixing. Could you please create a minimal scenario that
> > reproduces this issues and create a JIRA for it. I'm happy to help
> > resolving this.
> >
> > Regards,
> > Matthias
> >
> >> On Wed, Jun 14, 2017 at 4:24 PM, wrote:
> >>
> >> While working on depthwise convolution, I wanted to make use of a parfor
> >> loop to run multiple convolutions at once (there is a vectorized
> approach
> >> as well, but that is out of scope for this question), but I'm running
> into
> >> issues with false flags for loop interdependencies. Within the parfor
> >> body, I am performing left-indexing over unique ranges to store results
> in
> >> a variable `out`, and the engine currently expresses concerns regarding
> >> this variable. The range bounds are short expressions, and I have
> printed
> >> out the ranges to be absolutely sure that they are unique. If I use
> >> `check=0`, then the engine dies with a null pointer exception.
> >>
> >> What is the current strategy used for determining inter-loop
> dependencies
> >> for parfor statements? How can we improve this?
> >>
> >> -Mike
> >>
> >> --
> >>
> >> Mike Dusenberry
> >> GitHub: github.com/dusenberrymw
> >> LinkedIn: linkedin.com/in/mikedusenberry
> >>
> >> Sent from my iPhone.
> >>
> >>
>