[Server-sky] CUDA versus optimization
M. Edward (Ed) Borasky
zznmeb at gmail.com
Tue Apr 7 03:01:52 UTC 2009
On Mon, Apr 6, 2009 at 7:27 PM, Keith Lofstrom <keithl at kl-ic.com> wrote:
> When writing code, we probably should "keep it simple". For
> problems that may migrate to heavy processing, such as observing
> evolving orbits and hunting for collisions, we should avoid
> complex code constructs that will be difficult to port to CUDA.
> That said, the only complexity that I know to avoid is looping
> on pointers for processing data vectors - CUDA doesn't unroll
> pointers, it expects to do operations on whole vectors or arrays,
> and figure out the thread assignment itself.
>
> So in general, at this stage, avoid premature optimization, and
> instead code solutions in the easiest-to-understand form. Even
> if that costs some performance on uniprocessors. That will help
> us (1) parallelize the code, (2) find errors in thinking, and
> (3) explain what we are doing to others.
>
> Break things into modules, objects, structures, as needed, but
> please document them if you can, or leave an obvious place for
> someone else to add documentation if you cannot. At the very
> least, use comments to point to the URL for the documentation
> of the libraries you are using.
>
> Also, consider that a big reason why we are doing this right now
> is to show off and create jobs. That won't happen if the only
> people that can understand what we are doing are non-managerial
> geeks. The audience we want to impress will be important managers
> and entrepreneurs with large budgets, and making them feel stupid
> is a losing proposition.
>
> Keith
Is there a source control repository created yet? If not, there are a
couple of options. I have most of mine on GitHub now -- all of the new
stuff is going there, anyhow. You can get a repository for free for
open source projects. If you're used to Subversion or CVS, there's a
learning curve, but Git does help prevent independent developers from
trashing the repository accidentally. You have to really work at it if
you want to mess it up. :)
Did you look at the Geomview / SaVi screenshots? That strikes me as
pretty good eye candy, it's open source, it's set up for
constellations already, and I think we could get data for existing
satellites. The only think I haven't figured out is how to make
animated GIFs with it. xvidcap will make AVI, QuickTime, Shockwave
Flash, and varying dialects of MPEG, but not animated GIFs. The other
downside is that the scripting, if we need to do any, is in Tcl/Tk and
not Perl. Tcl is supposedly an easy language to learn, but I bypassed
it and went directly from awk to Perl. :)
What other computing do we plan to do besides orbit calculations, and
maybe a finite element vibration analysis? There are math libraries
for GPUs that will do the common stuff -- Fast Fourier Transforms,
matrix operations, etc. I wouldn't think we'd need to do any low-level
CUDA code.
>
> --
> Keith Lofstrom keithl at keithl.com Voice (503)-520-1993
> KLIC --- Keith Lofstrom Integrated Circuits --- "Your Ideas in Silicon"
> Design Contracting in Bipolar and CMOS - Analog, Digital, and Scan ICs
> _______________________________________________
> Server-sky mailing list
> Server-sky at lists.server-sky.com
> http://lists.server-sky.com/mailman/listinfo/server-sky
>
--
M. Edward (Ed) Borasky
http://www.linkedin.com/in/edborasky
I've never met a happy clam. In fact, most of them were pretty steamed.
More information about the Server-sky
mailing list