<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>In some cases you can apply the antiobjects idea to find a completely  different solution that WILL work nicely with GPGPU frameworks. Say, if you do pathfinding then A* is usually the way to go. Because of the problems you mentioned A* will not work well with CPUs, i.e., A* is neither easily parallelizable  and nor incremental. Collaborative Diffusion solves the same problem in a completely different way that is parallelizable  and incremental. In essence you are running some kind of cellular automata computing diffusion equations. I think there would be many more applications like this.</div><div><br></div><div>Alex</div><div><br></div><br><div><div>On May 21, 2009, at 8:55 AM, Paul Krueger wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">You can't emphasize these points enough. GPGPU technology has its place, but it's not perfect for everything. If you have an application where data can be partitioned up neatly and distributed to separate processing elements which tend to do the same limited things over and over (FFT's are a good example), then GPGPU's may be appropriate (as are FPGA's for similar reasons, although there are certainly other factors there). If you have an application where each processing thread may dynamically determine that it needs data from an arbitrary location within a very large block of memory or needs to do frequent updates within large data blocks in arbitrary ways, then GPGPU's are not appropriate because the communication and synchronization costs will typically kill you. That's especially true on any larger distributed memory architecture, but even on smaller systems you might overwhelm the memory subsystem.  Many of the sorts of AI, graph, and intelligent applications that I am personally more interested in fall into the second category, so GPGPU's will likely not be of much help.<div><br></div><div>Paul</div><div><br><div><div>On May 20, 2009, at 1:06 PM, Dan Weinreb wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"> <div text="#000000" bgcolor="#ffffff"> The instruction set is very restricted, and the communication<br> paths aren't there, as you suggested.  GPGPU is especially<br> good for highly compute-intensive operations over not<br> all that much data.  An FFT is an obvious example but<br> there are many, many good examples.  (Not that I'm an<br> expert, but I do know that much.)<br> <br> There are CUDA-compatible devices that don't even<br> have a video connection, i.e. for GPGPU only.<br> The NVidia Tesla, called a "computing processor"<br> (weird name).  240 cores per board, and you can<br> chain together four of them.<br> <br> (My officemates are getting this info and telling to<br> me faster than I can type it in.  Thanks, Andrew<br> and Scott.)<br> <br> -- Dan<br> <br> Jeremy Jones wrote: <blockquote type="cite" cite="mid:fcd1963f0905200635o23b60bb5k45866dbcb8b3adbb@mail.gmail.com">  <pre wrap="">On Wed, May 20, 2009 at 9:13 AM, Raffael Cavallaro
<a href="mailto:raffaelcavallaro@mac.com" class="moz-txt-link-rfc2396E"><raffaelcavallaro@mac.com></a> wrote:
  </pre>  <blockquote type="cite">    <pre wrap="">tomshardware.com ran this a couple of days ago:

<a href="http://www.tomshardware.com/reviews/nvidia-cuda-gpgpu,2299.html" class="moz-txt-link-rfc2396E"><http://www.tomshardware.com/reviews/nvidia-cuda-gpgpu,2299.html></a>

It's a summary of real-world results from apps using Nvidia's CUDA.
For certain things, like video encoding, they're seeing a 4x speedup
using the GPU over using the CPU. In addition, when they use the GPU,
it leaves the CPU free for other tasks.
    </pre>  </blockquote>  <pre wrap=""><!---->
Why don't we just throw out the main CPU and fill our computers with
graphics cards?  (Once CCL is ported to GPUs of course)

Seriously though, what does a CPU have that a GPU doesn't, besides a
different instruction set?  More memory?  Better i/o?  Is the GPU
instruction set too specialized?  I bet the answer is mainly software,
like OSes and device drivers.  I remember in the old days it was
common to have a separate processor to handle i/o.  Maybe that's what
the main CPU should be relegated to.  OTOH, if the software is good
enough, it should just be distributed to whatever computing resources
are appropriate and available.  Just thinking out loud.
_______________________________________________
Openmcl-devel mailing list
<a href="mailto:Openmcl-devel@clozure.com" class="moz-txt-link-abbreviated">Openmcl-devel@clozure.com</a>
<a href="http://clozure.com/mailman/listinfo/openmcl-devel" class="moz-txt-link-freetext">http://clozure.com/mailman/listinfo/openmcl-devel</a>
  </pre> </blockquote> </div>  _______________________________________________<br>Openmcl-devel mailing list<br><a href="mailto:Openmcl-devel@clozure.com">Openmcl-devel@clozure.com</a><br><a href="http://clozure.com/mailman/listinfo/openmcl-devel">http://clozure.com/mailman/listinfo/openmcl-devel</a><br></blockquote></div><br></div></div>_______________________________________________<br>Openmcl-devel mailing list<br><a href="mailto:Openmcl-devel@clozure.com">Openmcl-devel@clozure.com</a><br>http://clozure.com/mailman/listinfo/openmcl-devel<br></blockquote></div><br><div apple-content-edited="true"> <div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">Prof. Alexander Repenning</font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><br class="khtml-block-placeholder"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px">University of Colorado</p><p style="margin: 0.0px 0.0px 0.0px 0.0px">Computer Science Department</p><p style="margin: 0.0px 0.0px 0.0px 0.0px">Boulder, CO 80309-430</p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><br class="khtml-block-placeholder"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px"><font face="Helvetica" size="3" style="font: 12.0px Helvetica">vCard: <a href="http://www.cs.colorado.edu/~ralex/AlexanderRepenning.vcf">http://www.cs.colorado.edu/~ralex/AlexanderRepenning.vcf</a></font></p><br class="Apple-interchange-newline"></span></span></span></div> </div><br></body></html>