Re: [eigen] Support for true Array |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] Support for true Array*From*: Rohit Garg <rpg.314@xxxxxxxxx>*Date*: Wed, 25 Nov 2009 19:20:42 +0530*Dkim-signature*: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :from:date:message-id:subject:to:content-type :content-transfer-encoding; bh=+A39vzoyG+2EhpwLSs6/ovP3nVR5yphC3MwhCEicQK4=; b=OADRo2b7H9cawfb7J+HO056KuNwdQyVBxviKWZ4m3kw94EkozUYUsQBDvDx0tHXIS8 tHn7bbeFo5Dem0usdTrMuvfuEKTCqdtOGuVTqMisVHoSKKvqAIsMalgp6ncChrQa+2KF KZMvY/FMUGkZygUbMrZPw0RRCo6natYpLF7pQ=*Domainkey-signature*: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type:content-transfer-encoding; b=v/2aWmxhqx2xXI3wmW6cVrN0X+yHf0/v85mbfTSfAyfDsyqE+F9iUkxFTPmXBZS8Un 4KKWhDp4JGZwOTNYU9uIG3pS21UswKbKHAL7Dx2B6EjBDiscj07nNe7o/bPQO6fBdo6W 8RxWu/9NaOpynvkT5GLhr0OCv5E0lEaTYFr/Q=

On Wed, Nov 25, 2009 at 7:12 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote: > 2009/11/25 Rohit Garg <rpg.314@xxxxxxxxx>: >> Array Of Structures - AoS >> =================== >> struct float2{ >> float x,y}; >> >> float2 arr[N]; >> >> Structure Of Arrays - SoA >> =================== >> struct float2 >> { >> float x[N],y[N];} >> >> SOA form has *big* advantages for simd ops over aos. > > Yes indeed; so: AoS is what we had so far in Eigen; SoA is what we'll > get thanks to the new Array class, when using e.g. Matrix<Array,3,1>. Just so that I understand it., if I define Array type at compile time, will eigen change data layouts into soa form and then vectorize this thing? Changing the data layouts is the key thing here. That's what leads to soa's simd efficiency? I may have not understood what has been presented so far, but I don't think changing the data layouts has been proposed so far. > > Benoit > >>> >>> This is about creating an Array class that can be used as a scalar >>> type, and on which the arithmetic ops are vectorized. So when you have >>> Matrix<Array,3,1> u,v,w; >>> and you do: >>> u = v+w; >>> this expands (thanks to Eigen xpr templates and unrollers) to: >>> u[0] = v[0]+w[0]; >>> u[1] = v[1]+w[1]; >>> u[2] = v[2]+w[2]; >>> Each of these 3 lines is now an operation on Array objects and expands >>> to a vectorized loop doing the addition. >>> >>> Benoit >>> >>> >>> >> >> >> >> -- >> Rohit Garg >> >> http://rpg-314.blogspot.com/ >> >> Senior Undergraduate >> Department of Physics >> Indian Institute of Technology >> Bombay >> >> >> > > > -- Rohit Garg http://rpg-314.blogspot.com/ Senior Undergraduate Department of Physics Indian Institute of Technology Bombay

**Follow-Ups**:**Re: [eigen] Support for true Array***From:*Benoit Jacob

**References**:**[eigen] Support for true Array***From:*Gael Guennebaud

**Re: [eigen] Support for true Array***From:*Boris Mansencal

**Re: [eigen] Support for true Array***From:*Rohit Garg

**Re: [eigen] Support for true Array***From:*Benoit Jacob

**Re: [eigen] Support for true Array***From:*Rohit Garg

**Re: [eigen] Support for true Array***From:*Benoit Jacob

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] Support for true Array** - Next by Date:
**Re: [eigen] Support for true Array** - Previous by thread:
**Re: [eigen] Support for true Array** - Next by thread:
**Re: [eigen] Support for true Array**

Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |