468,537 Members | 1,844 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,537 developers. It's quick & easy.

Help! Need product advice for scientific computing.

I don't know where to go, or what to buy, so plz re-direct me if I'm in the
wrong place.

I want to do high performance integration of partial differential eqns in n
dimensions (n=0,1,2,3..etc) I want to do (fast) graphic output of the results.

I used to use C. I want to upgrade my computer.

Do I get dual core? Does C# support dual-core? Is C# as fast as the old C?
Is there a new C? (or is C# the new version of C?) Is Visual Studio what I
buy? Which version has what I need but no more?

Where is the best place to get this kind of pre-sale technical information?

Thanks.

Eric
Dec 26 '05 #1
4 2478
See this thread for a similar question with some responses:
http://www.csharphelp.com/board2/rea...=28559&t=28559

But if you have the money you could see if there are applications which
already do what you want. For example flexpde is one i found:
http://www.pdesolutions.com/
Another option might be to use matlab, which you may or may not want to
interface from C#:
http://www.mathworks.com/support/sol...a/1-X1PFC.html

But if you want to do all the coding yourself, here is some info if it
is of help.
If I'm understanding, you want to do use partial differential
equations, with graphical output, and take advantage of multiple
processors.

First, you might look at existing libraries that can handle partial
differential equations (PDE's), for example PETSc or EXPDE or others,
and see if they meet your requirements:
http://www.oonumerics.org/oon/
http://wotug.ukc.ac.uk/parallel/nhse.../sw_eval/pdes/
http://www-unix.mcs.anl.gov/petsc/petsc-as/
http://www10.informatik.uni-erlangen...tml/index.html

Most of them are written in C or C++, but you can still use them from
C# and .NET, using the [DllImport] attribute. You would need to create
a C#/.NET wrapper on top of whichever library you use. Sort of like in
the matlab sample at the mathworks link I posted above.

For the multi-processor part, you might look into MPI:
http://www-unix.mcs.anl.gov/mpi/
PETSc (mentioned above) uses MPI, for example.
Here is a .NET wrapper for MPICH, an implementation of MPI:
http://www.osl.iu.edu/research/mpi.net/
http://www-unix.mcs.anl.gov/mpi/mpich/
Another implementation of MPI is lam-mpi:
http://www.lam-mpi.org/

And for the graphical output, you'll want to learn windows.forms.
There are some free graph plotting controls already out there like
NPlot and ZedGraph.

Dec 26 '05 #2
Thanks.

I'll look into your suggestions.

But I really want to do raw coding. I already coded a PDE integrator and
graphics routines in C (on an older PC). I now want to update them to a dual
core processor, if that makes sense. (I did some multi-threaded programming a
while ago, but I am not up-to-date on the best current programming tools.)

So what I need is clear information about (convenient) support for dual core
in C#, a new version of C, or something else. What is the best compiler to
use? what is the best development environment to use for dual-core
programming?

I would really like a good source for pre-sale documentation; and for
development advice. If it existed, a book called "Efficient and Fast
Scientific Computing in C (or C#) for Dual Core Computers" would be what I
would need for development; and it's first chapter, with advice on what
compiler and coding environment to use, would be the pre-sale advice I need.

"Doug H" wrote:
See this thread for a similar question with some responses:
http://www.csharphelp.com/board2/rea...=28559&t=28559

But if you have the money you could see if there are applications which
already do what you want. For example flexpde is one i found:
http://www.pdesolutions.com/
Another option might be to use matlab, which you may or may not want to
interface from C#:
http://www.mathworks.com/support/sol...a/1-X1PFC.html

But if you want to do all the coding yourself, here is some info if it
is of help.
If I'm understanding, you want to do use partial differential
equations, with graphical output, and take advantage of multiple
processors.

First, you might look at existing libraries that can handle partial
differential equations (PDE's), for example PETSc or EXPDE or others,
and see if they meet your requirements:
http://www.oonumerics.org/oon/
http://wotug.ukc.ac.uk/parallel/nhse.../sw_eval/pdes/
http://www-unix.mcs.anl.gov/petsc/petsc-as/
http://www10.informatik.uni-erlangen...tml/index.html

Most of them are written in C or C++, but you can still use them from
C# and .NET, using the [DllImport] attribute. You would need to create
a C#/.NET wrapper on top of whichever library you use. Sort of like in
the matlab sample at the mathworks link I posted above.

For the multi-processor part, you might look into MPI:
http://www-unix.mcs.anl.gov/mpi/
PETSc (mentioned above) uses MPI, for example.
Here is a .NET wrapper for MPICH, an implementation of MPI:
http://www.osl.iu.edu/research/mpi.net/
http://www-unix.mcs.anl.gov/mpi/mpich/
Another implementation of MPI is lam-mpi:
http://www.lam-mpi.org/

And for the graphical output, you'll want to learn windows.forms.
There are some free graph plotting controls already out there like
NPlot and ZedGraph.

Dec 26 '05 #3
> So what I need is clear information about (convenient) support for dual core
in C#, a new version of C, or something else. What is the best compiler to
use? what is the best development environment to use for dual-core
programming?

The only way to take advantage of a dual-core system is parallelize/thread your code. Since your code is already written
in C, take a look at take a look at OpenMP - www.openmp.org. VC++ 8 now supports OpenMP -
http://msdn2.microsoft.com/en-us/library/tt15eb9t.aspx. If you stick with C you might want to try using SIMD extensions
- http://msdn2.microsoft.com/library/y0dh78ez.aspx . While SIMD extensions have nothing to do with multi-core/cpu
programing, they can give a boost to numerical code. This is one place where C code can perform significantly better
than C#, since C# (actually the .NET runtime) doesn't take advantage of SIMD extensions for floating point operations.

If you have access to Intel's C++ compiler, you might want to try its auto-parallelization features -
ftp://download.intel.com/technology/.../pdf/art_6.pdf. It can auto-thread certain loops on multi-core/cpu
systems and tries to use SIMD extensions where possible. No changes to your code, just enable some compiler switches.

Marcus


Dec 27 '05 #4
I would think you will want to read stuff like this [1] for search terms and
insight regarding Windows High Performance Computing.

<%= Clinton Gallagher
METROmilwaukee (sm) "A Regional Information Service"
NET csgallagher AT metromilwaukee.com
URL http://metromilwaukee.com/
URL http://clintongallagher.metromilwaukee.com/

[1] http://ie.developerpipeline.com/174300441
"Marcus Cuda" <ma****@newsgroup.nospam> wrote in message
news:eE**************@TK2MSFTNGP09.phx.gbl...
So what I need is clear information about (convenient) support for dual
core
in C#, a new version of C, or something else. What is the best compiler
to
use? what is the best development environment to use for dual-core
programming?

The only way to take advantage of a dual-core system is parallelize/thread
your code. Since your code is already written in C, take a look at take a
look at OpenMP - www.openmp.org. VC++ 8 now supports OpenMP -
http://msdn2.microsoft.com/en-us/library/tt15eb9t.aspx. If you stick with
C you might want to try using SIMD extensions -
http://msdn2.microsoft.com/library/y0dh78ez.aspx . While SIMD extensions
have nothing to do with multi-core/cpu programing, they can give a boost
to numerical code. This is one place where C code can perform
significantly better than C#, since C# (actually the .NET runtime) doesn't
take advantage of SIMD extensions for floating point operations.

If you have access to Intel's C++ compiler, you might want to try its
auto-parallelization features -
ftp://download.intel.com/technology/.../pdf/art_6.pdf. It can
auto-thread certain loops on multi-core/cpu systems and tries to use SIMD
extensions where possible. No changes to your code, just enable some
compiler switches.

Marcus

Dec 27 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

9 posts views Thread by Tom | last post: by
reply views Thread by python-help-bounces | last post: by
4 posts views Thread by Sarir Khamsi | last post: by
2 posts views Thread by Sudheer Kareem | last post: by
6 posts views Thread by d.warnermurray | last post: by
3 posts views Thread by Colin J. Williams | last post: by
9 posts views Thread by JJ | last post: by
8 posts views Thread by Mark | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.