Re: [eigen] Parallelizable operations |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Parallelizable operations
- From: Matthieu Brucher <matthieu.brucher@xxxxxxxxx>
- Date: Thu, 29 Jul 2010 14:22:51 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=7PGDT9NPykywJVr5FstfeYIUU9JR0p5yqJFT6F5lA3I=; b=NN1D+1K+mZ9bx0kv6aRslrV9Da1SlJCVq/f19kAobxY3/GfP1810n0TE7Dj55A5dWr UhD5dHQOIPLAUcjRUGpQcUKDeMnBcCs3zt+9EeQLjzSP7nBQuMjVRWZbjtLRl8JcQ6xg SRiAjSD+rbBgAfyPnmaCsjVVAXb58u6ytnHys=
- 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=NH3gvbxYN1+wVJbK/ci9Bhl9d6H7BOa3glPHHpuJtXMHDhG9Frlh8cD32MNrmW0bCm KK5rrj+5xNc8R9YWCe5xbNHiKnNvcuuWNDImT/zkzgz4L9p0lZ3lK0QFEjRVAdyVREta UTrlE1eNU8Ws8BSCaEkvuW8xWyMtBwLJp1Fog=
Hi,
I don't think it would be a huge gain, if there is a gain at all. If
we consider single processor multiple cores, the memory bandwidth is
shared accross cores. Addition and substraction are meory bandwidth
limited, so there would only be additional contention and thus less
performance.Parallelization works best with far more computations than
memory accesses.
Matthieu
2010/7/29 Carlos Becker <carlosbecker@xxxxxxxxx>:
> Thanks for the info. Wouldn't it make sense to parallellize sums or other
> simple operations when matrices are big enough? I know that the problem
> would be to determine what is big enough.
> But maybe a new parameter could be included to force parallelism between two
> instances of DenseBase<> for instance. I am being quite naive with this
> proposal, but I guess it could be great for some applications if
> multiprocessing is available. What do you think? would this at least be
> possible and not too complicated to implement with the current API?
>
>
> On Wed, Jul 28, 2010 at 3:36 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
> wrote:
>>
>> 2010/7/28 Carlos Becker <carlosbecker@xxxxxxxxx>:
>> > Hi everyone, I was just wondering: which are the parallelizable
>> > operations
>> > with Eigen? I mean, if I enable openMP and EIGEN_DONT_PARALLELIZE is not
>> > defined, which operations would get parallelized? According to what I
>> > see in
>> > the source code it is mostly dedicated to products.
>>
>> Yes, that is all what's currently parallelized. However, do note that
>> products are where blocking (aka "level 3 implemented") decompositions
>> spend most of their time, so this benefits already a large part of the
>> decompositions. In the future, we'll parallelize more and more stuff,
>> i.e. my new divide-and-conquer SVD is going to be fully
>> parallelizable.
>>
>> > I am asking this because
>> > I am now choosing between parallelizing some code myself or letting
>> > Eigen do
>> > it. I guess that using EIGEN_DONT_PARALLELIZE would allow me to
>> > parallelize
>> > larger blocks and, knowin what I am doing, I suppose I can get better
>> > performance, specially when the operations are not purely products.
>>
>> I can't give a general answer to that question, it depends too much on
>> your specifics!
>>
>> Benoit
>>
>> > Thanks!
>> > Carlos
>>
>>
>
>
--
Information System Engineer, Ph.D.
Blog: http://matt.eifelle.com
LinkedIn: http://www.linkedin.com/in/matthieubrucher