Re: Can anyone see a faster way to compute quantities for a pair or large matrices?
- To: mathgroup at smc.vnet.net
- Subject: [mg127434] Re: Can anyone see a faster way to compute quantities for a pair or large matrices?
- From: W Craig Carter <ccarter at MIT.EDU>
- Date: Wed, 25 Jul 2012 02:30:15 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <juim0j$k9a$1@smc.vnet.net> <20120724081458.9C7796835@smc.vnet.net>
Thank you Andre, I did do a version using ParallelTable and that give me some speed up. But, mostly, I am trying to develop techniques for teaching Mathematica's more advanced constructs. This was a good lesson. I am trying to understand why my MapThread solution was so slow. Thank you for your kind offer for help. I tried for about an hour or so about a year ago, but I wasn't able to get CUDA to work on my mac laptop (with which I use to teach and give seminars). If I remember correctly, the message I get implies that it doesn't work with my graphics card.(AMD Radeon HD 6770M 1024 M). I would **very much** like to see an example of how to get it to work; more to the point, I am hopeful that that I can get an fft (Fourier[]) to use the GPU on a depth 3 array (e.g., RandomReal[{0,1} , {nx,ny,nz}]. I am developing a spectral methods example for a course that I am teaching. Thank you, Craig W Craig Carter Professor of Materials Science, MIT On Jul 24, , at Tue Jul 24, 12 @4:14 AM, andre.robin3 wrote: > Your problem is a good candidate for parallel computing. > > It can be : > > 1) multi-kernel computing (with Mathematica 7 or Mathematica 8). It's easy to implement. > Of course, it needs a multi-core machine. > > 2) GPGPU computing (with Mathmatica 8) > It needs a Graphic Card with CUDA or OPENCL capabilities. > > I can try 1) or 2) with CUDA. > > Are you interested ? > > > > "W Craig Carter" <ccarter at MIT.EDU> a =E9crit dans le message de news: > juim0j$k9a$1 at smc.vnet.net... >> >> Hello, >> I am computing the gradient on a grid, then computing the gradient's >> angle, and its magnitude. The computations below are the bottleneck for >> a longer bit of code. I would be grateful for any insights on how to >> speed these up. >> >> (* >> Let gradfield be the gradient that I have computed and placed in two >> matrices. Here I will just use random numbers as a proxy: >> *) >> >> (*i.e., df/dx, df/dy*) >> gradfield = { RandomReal[{-1, 1}, {256, 256}], RandomReal[{-1, 1}, {256, >> 256}]}; >> >> (*my gradients has many zeroes, so I need to handle these*) >> >> SetAttributes[myArcTan, {Listable, NumericFunction}]; >> myArcTan[0.0, 0.0] = 0.0; >> myArcTan[x_, y_] := ArcTan[x, y] >> >> >> (*the angles, this is slow*) >> psiField = MapThread[myArcTan, gradfield, 2]; >> >> (*the magnitudes, this is slower*) >> magfield = MapThread[Norm[{#}] &, gradfield, 2]; >> >> >> (*examples*) >> Do[psiField = MapThread[myArcTan, gradfield, 2], {100}] // Timing >> Do[magfield = MapThread[Norm[{#}] &, gradfield, 2], {100}] // Timing >> >> W Craig Carter >> Professor of Materials Science, MIT > > >
- References:
- Re: Can anyone see a faster way to compute quantities for a pair or large matrices?
- From: "andre.robin3" <andre.robin281@orange.fr>
- Re: Can anyone see a faster way to compute quantities for a pair or large matrices?