systemml-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dusenberr...@gmail.com
Subject Re: Parfor loop interdependencies
Date Sat, 17 Jun 2017 00:35:14 GMT
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 <mboehm7@googlemail.com> 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, <dusenberrymw@gmail.com> 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.
>> 
>> 

Mime
  • Unnamed multipart/alternative (inline, 7-Bit, 0 bytes)
View raw message