[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] BLAS backend
- From: Aron Ahmadia <aja2111@xxxxxxxxxxxx>
- Date: Fri, 16 Oct 2009 13:32:12 +0300
- Cc: Daniel Lecocq <sowiebinich@xxxxxxxxx>, aron.ahmadia@xxxxxxxxxxxx
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:sender:received:in-reply-to :references:date:x-google-sender-auth:message-id:subject:from:to:cc :content-type:content-transfer-encoding; bh=MNzu3+Q1DSvx0QmaMOIHgV5HqIdhBFFL+hQEhipqjYQ=; b=ZoCVvQxyA9QBYdiNKZZEwIuxetUr43OZEoYwVmABS6A+vYvPkVvltMy9DuP9NxMuXJ L322PeKVcFeJn52AZtCTRUOH/KBtk9JJk/7iCUlBuvKt9dVwj5guBIkokP3Mo64a8fuz +HpFN2JbmjTtYU3hM3ZJNqUYHzxy34N7Dxq6o=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; b=m8/YkGzg8taf/r8imtvzebpwh9kuNQ/2Iz+coQ/3R4lhdDdxHUPCzKAG5acDJXG1sP lCb/AQT145T3vXNGh7MxZJSYoblc7Rubun1ci1Zgs5x+n83KFdpVJ+kn/H5p5QnKCc8X lXB3kojNm9MbRFvbtcVMSI6WwSxCFvxN0R7ss=
Almost anything you can do using MPI on a shared memory machine you
can do with OpenMP with added flexibility. MPI is a message passing
paradigm and isn't suited for the sort of multicore optimization we're
looking at this semester. An MPI-enabled Eigen is an interesting
idea, and I agree with your thoughts on high-level optimization and
distribution of parallel tasks.
On Fri, Oct 16, 2009 at 12:08 PM, Christian Mayer
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> Hi all,
> @Jean Sreng: I don't know what your VR simulation is doing in detail.
> But for the normal 3D stuff you should be using small (3x3 or 4x4) fixed
> size matrices; those are perfectly supported by Eigen2 and using any
> BLAS implementation will only give you worse performance.
> If you are using big, variable sized matrices (e.g. to solve liear
> equation systems) the question for a BLAS backend is valid although it's
> worth a try to use the native implementation of Eigen2.
> As Eigen2 is using expression templates even a GPU based backend might
> profit by eigen as it can optimize the calculations to minimize the data
> transfers between CPU and GPU do to late evaluation of the equation.
> Aron Ahmadia schrieb:
>> It actually turns out that one of my students this semester is
>> considering how to parallelize Eigen using OpenMP for multithreading,
> I'm not too fond of OpenMP for parallelisation in our case. It's very
> good to parallelisate an loop (i.e. e.g. to multithread a single matrix
> multiplication) but to take advantage of the expression templates it
> might be not powerfull enough. MPI might be an better option there.
> Parallelisation at the algorithm level (= expression template level)
> gives you the advantage to perform operations that have no dependancy at
> each other. For example:
> result = A*B + C*D (A,B,C,D are big matrices)
> It's much better to have - one a two core CPU - one thread that's
> calculation A*B and another doing C*D than both threads fighting each
> other (= locks) doing A*B and then doing an C*D...
> In the end you need multhithreaded elementary operations (like GEMM)
> *and* high level parallelisation of the algorithm. And an optimizer
> that's deciding the best multithreading strategy for each algorithm. An
> very interesting and highly complex task.
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
> -----END PGP SIGNATURE-----