FIAS . Impressum . Privacy

masked functions

Kulakov, Igor [please enable javascript to see the address]
Mon Aug 20 15:14:47 CEST 2012


> But then again, I know of many situations where you do a lot with the mask 
> inside the function. But then you always need to pass the mask as a function 
> parameter anyway.
You are right, it would be over complicated.
Thanks for the discussion.

Igor

On Aug 20, 2012, at 3:21 AM, Matthias Kretz wrote:

> On Friday 17 August 2012 15:00:48 Kulakov, Igor wrote:
>> I think that implementation of masked operations is very nice. How about to
>> generalize it on functions?
>> 
>> I mean to have a possibility to call a function, which returns vector
>> arguments, both like this:
>> 
>>  CopyData( dataIn, dataOut(mask) )
>> 
>> to change only masked elements
>> and like this:
>> 
>>  CopyData( dataIn, dataOut )
>> 
>> to copy everything.
>> 
>> Than one would not care about masks when implement new functions.
>> May be this is already possible to do with current Vc implementation?
> 
> Interesting. It should be possible to do the following:
> 
> template<typename T> void CopyData(float_v in, T out)
> {
>  out = in;
> }
> 
> int main()
> {
>  float_v a;
>  CopyData(float_v::IndexesFromZero(), a);
>  CopyData(float_v::Zero(), a(a > 1));
>  return 0;
> }
> 
> But this relies on an implementation detail and might break in the future (I 
> have no idea why or how, though).
> 
> Still, I prefer to have out values as function return values, in which case 
> the write-masking happens outside of the function. I.e.
> a = doSomething(x);
> a(mask) = doSomething(x);
> 
> But then again, I know of many situations where you do a lot with the mask 
> inside the function. But then you always need to pass the mask as a function 
> parameter anyway.
> 
> Cheers,
> 	Matthias
> 
> -- 
> Dipl.-Phys. Matthias Kretz
> http://compeng.uni-frankfurt.de/?mkretz
> 
> SIMD easy and portable: http://compeng.uni-frankfurt.de/?vc




More information about the Vc-devel mailing list
FIAS . Impressum . Privacy