[webkit-dev] Is there a plan for supporting multi-process and WebCL in webkit
Dirk Pranke
dpranke at chromium.org
Wed Apr 10 13:03:03 PDT 2013
Right, you need some way to ensure that the functions applied to the array
are "pure", the array doesn't mutate, etc. I thought perhaps your
ParallelArray() type would be ensuring this (e.g., by enforcing type
checking and freezing the array), but maybe I misunderstood you? Even then,
I'm not sure how easy ensuring the functions were pure would be.
Plus there's the problem of figuring how best to parallelize the
operations, which is also often non-trivial.
-- Dirk
On Wed, Apr 10, 2013 at 12:58 PM, Oliver Hunt <oliver at apple.com> wrote:
> I'm not sure what you mean here: a parallel array is simply an array of
> numbers; there is nothing "magic" about it.
>
> If we _really_ wanted to be blunt about it, we could simply say (in
> Array.map)
>
>
> if (length >= giant && function.isEasyPeasy() && everything in the array
> is a number)
> return doHardcoreMap();
>
> // carry on doing regular map
> ...
>
>
> Understand that the parallel APIs have to do all of this as well, the only
> thing they lose is the "is everything a number" check
>
> --Oliver
>
>
> On Apr 10, 2013, at 12:50 PM, Dirk Pranke <dpranke at chromium.org> wrote:
>
> Right, I get how ParallelArrays would work. I was asking Filip how you
> might infer that an array could be a ParallelArray.
>
> -- Dirk
>
> On Wed, Apr 10, 2013 at 12:45 PM, Oliver Hunt <oliver at apple.com> wrote:
>
>> The parallel arrays apis aren't a magic "make my code parallel" wand.
>>
>> They don't make general code parallel, they simply provide a bunch of
>> functions like map, etc where if you restrict your list of language
>> features to a specific subset, they'll vectorise it.
>>
>> For instance
>>
>> ParallelArray([1,2,3]).map(function(a,v) { return v * 2; })
>>
>> would be vectorised
>>
>> ParallelArray([1,2,3]).map(function(a,v) { return v.x * 2; })
>>
>> wouldn't be.
>>
>> This isn't "solve autovectorisation", this is "we've been given a
>> specific operation to perform on each element of an array, parallelise it
>> if possible", and what's possible is arbitrarily limited, and require a
>> distinct type that isn't an array.
>>
>> --Oliver
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20130410/66d0c042/attachment.html>
More information about the webkit-dev
mailing list