MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

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
>
>
>


  • Prev by Date: StepMonitor problem
  • Next by Date: Re: How FFT workks? (analytical example)
  • Previous by thread: Re: Can anyone see a faster way to compute quantities for a pair or large matrices?
  • Next by thread: Integration of expressions with symbolic limits