[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