[eigen] AVX/LRB and SSE with SoA support

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


Hello,

I have to implement a raytracer that uses the Vector units of modern x86 cpus.

Intel will introduce AVX soon. I have to support AVX and SSE and i do not want all of my code replicated. I currently use the Intels intrinsics. If Intel adds the Larrabee extensions into normal x86 CPUs one would even have to write three versions.

As i use Eigen in parts of the software i wonder if one could support this with Eigen. The typical situation is like this.
-One has a ray bundle with 16 rays that are arranged in SoA format:
x1,..,x4
y1,...,y4
z1,...,z4
......
x13,..,x16
y13,...,y16
z13,...,z16
This format has to be changed when using AVX/LRB of course.
-One source of the rays and an object like a sphere

Ideally i have a function like testCut(Bundles, Sphere) that uses a template parameter to set the Vector extension to use. I do not want to partially specialize this function but use some structures and functions in testCut that depend on the template parameter.

The question for me is: Develop a small library of my own, or use Eigen (where i can contribute this functionality). I know i can do this with a custom library, but i dont know if it is easy to add this functionality to Eigen.

I think a lot of people will have the same problem soon.

Greetings,
Christoph




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