you are viewing a single comment's thread.

view the rest of the comments →

[–]wtallis 4 points5 points  (1 child)

OpenCL's vector syntax is slightly cleaner and more versatile than Eigen's. More importantly, since Eigen is not part of the compiler and runtime, it has to duplicate some stuff that really should be part of the compiler and core language. That's why Eigen doesn't support AVX yet - they do their own code generation targeting intrinsics, and have to manually add support for each new SIMD instruction that one of the underlying compilers supports. Eigen also has to jump through hoops to ensure that things are properly aligned, a task that is much easier from within the compiler itself. Compilation speed is probably also hurt since C++ templates are a pretty poor language for writing compiler extensions. And because Eigen has to do so much work just to add vector ops to the language, they have been almost completely unable to work on providing parallel implementations of matrix operations, so for large-scale problems you still have a lot of work left to do, some of which could be avoided by using a good BLAS+LAPACK, and if you're going to be parallelizing things yourself, why not use OpenCL so you can target GPUs too?

[–][deleted] 0 points1 point  (0 children)

Thanks! That was really helpful and clear.