[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] nesting
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Thu, 4 Feb 2010 17:11:27 -0500
- 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 :date:message-id:subject:from:to:content-type; bh=Ki7LB2Tg7qEr4MkWbv95b34VOLu760PrUjM7bsZxXmE=; b=t2Vlz2QRpJmPEeLAf2ctwjhCUE3o2pzUooYhxXdlPHdj+rsvCLYurx6iKPkc62r40C 1QKj9ol9S7bemimq5SiKtumV5Qv2zKRSXqQRXu4QsHWEdtsmTlFnbosurXMh7rhgmrOn vBTsELn/ZXVsaSrXtOk5iWB1CVeLqO56hMa68=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=wMT5+ELdP43CXWxIXfCcsoMzwcEMF9pFSvbs3lM26zilSkBCB3b/9BdzuQT5cwoBvG XJUEEuSm/AskMI6BOJKzAEO9q0gey8fj1i9j2B08krjxWau6WsBB1TXgF0I5d46CNrPw hUlmDSVhINTL2kMibrEHmyQScc4BQEkWohI18=
Just one thing that I don't follow:
2010/2/4 Gael Guennebaud <gael.guennebaud@xxxxxxxxx>:
> Our real problem is the following:
>
> A*B + A1 + A2 + A3 + A4 + A5
>
> creates 5 temporary matrices, the result of A*B is copied 4 times....
Why is it so? After A*B has evaluated into a temporary matrix, isn't
it the same as
tmp + A1 + A2 + A3 + A4 + A5
? That doesn't evaluate at every step ...!
Benoit
>
> gael
>
>>
>> Am I missing something? I am especially afraid of being missing
>> something about the blas_traits and how you implemented that stuff ---
>> you know better than me.
>>
>> Benoit
>>
>>
>>
>>> Such an analyzer/evaluator would look like the current ei_blas_traits...
>>> Some examples of what could be done with such an approach:
>>>
>>> (A + B).block() => (A.block() + B.block())
>>>
>>> E.noalias() += A*B + C*D;
>>>
>>> =>
>>>
>>> E.noalias() += A*B;
>>> E.noalias() += C*D;
>>>
>>> This also offers more parallelization opportunities.
>>>
>>> Sounds good, but of course I'm really scared about compilation times... This
>>> is why I did not talk that much about that idea so far.
>>>
>>> gael.
>>>
>>>
>>> On Thu, Feb 4, 2010 at 2:35 PM, Hauke Heibel <hauke.heibel@xxxxxxxxxxxxxx>
>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> While looking into the "performance degradation" issue from the forum
>>>> I found out that it is due to temporaries - as Benoit already guessed.
>>>>
>>>> I am a little bit afraid, that what I once proposed, namely copying
>>>> expressions by value, is now backfiring. The reason is that initially
>>>> I assumed expressions to be tiny little objects with close to no copy
>>>> costs. The issue is related to those expressions holding temporaries.
>>>> Copying them (e.g. a product expression) means copying all the data
>>>> including the temporary and that will happen as many times as we nest
>>>> expressions.
>>>>
>>>> The only solution I can think about at the moment is the
>>>> specialization of ei_nested for those types and to go back to nesting
>>>> by reference for these heavy weight guys.
>>>>
>>>> - Hauke
>>>
>>>
>>>
>>
>>
>>
>
>
>