From: Patrik J. <co...@fa...> - 2012-05-09 01:33:07
|
Sylwester pointed out the paper "Expression Templates Revisited: A Performance Analysis of Current Methodologies" (http://epubs.siam.org/sisc/resource/1/sjoce3/v34/i2/pC42_s1 SIAM J. Sci. Comput. 34, pp. C42-C69) in the tracker. I looked at this paper, and it doesn't paint a very good picture of the performance of blitz. However, they don't say what version they are using or how the libraries were compiled. They also said they used Intel 11.1 and g++ 4.4.2 but saw the same performance, which makes me suspect that they are using a pre-simd enabled version of blitz. They mostly test matrix multiplications, and get very slow results especially on large matrices. They claim this is due to the loop ordering, since one array is always accessed with large stride. However, it's also true that a matrix multiplication is a partial reduction, which is always an index expression in blitz. The performance of index expressions is always much worse than expressions that are evaluated as stack traversals both due to the indexing overhead and due to the fact that the SIMD evaluation doesn't work on index expressions. It's too bad they didn't test a wider array of expressions. I'm tempted to email them... cheers, /Patrik |