Domain: netlib.org
Stories and comments across the archive that link to netlib.org.
Comments · 145
-
Has its place of courseFortran still has (and will likely continue to have) its place in science and engineering especially for simulation and computational purposes. For the reasons already listed, efficient and robust computational libraries like BLAS and LAPACK are written in Fortran.
Fortran was designed specifically for numerical calculations and thus is better suited for certain tasks than a language designed for system programming like C. Many engineering schools (mine included) require Fortran in the first year curriculum. They keep talking about switching to a more "modern" language like c or matlab, but that has been mostly talk.
So go learn some Fortran, if you will be doing computational programming. Even if you won't it is one of the easiest languages to get into programming.
-
About to teach a numerical class...I'm teaching "scientific computing" for the second time at my university this fall and we're going to be using FORTRAN with some C (and C++ if that's your cup of tea). The department here is somewhat slanted towards FORTRAN and C instead of scripted environments and there is some outright dislike of Matlab. In this sense, FORTRAN was worth knowing around here and I had to brush up on my skills, since I'd not touched it since spring of 1992.
The course mainly focusses on solving machine numbers, solving linear systems (direct and iterative methods), solving non-linear systems (mostly Newton-type methods), and solving eigenvalue/vector problems. The codes that students wrote last year started from scratch with early assignments. Then, I allowed them to incorporate Basic Linear Algebra Subprograms (BLAS) into their codes. Then they were allowed to use LAPACK for the rest of the semester. They were free to use the C interface, but most chose to use the FORTRAN examples, probably because of the skeleton code that I provided.
Given the tremendous amount of code that is already out there, I agree that knowing FORTRAN is an asset. And since it's not hard to learn, why the heck not, right?
On a side note, they had to use Makefiles, LaTeX their assignments, and send everything to me electronically in a gzipped tarball. They got quite a workout in console tools. For reference, I had some that were quite familiar with the system and some that had had BASIC at some level and that's it. Lots of help was needed as the semester reached the final weeks.
Matlab was used for visualization and graph creation, but I am considering using GNUPlot this year, if it is up to the task. (I think it probably is.) I may also encourage the use of Octave, where possible.
For reference, the class website (which will soon be updated for the new semester) is here: Math 224.
-
About to teach a numerical class...I'm teaching "scientific computing" for the second time at my university this fall and we're going to be using FORTRAN with some C (and C++ if that's your cup of tea). The department here is somewhat slanted towards FORTRAN and C instead of scripted environments and there is some outright dislike of Matlab. In this sense, FORTRAN was worth knowing around here and I had to brush up on my skills, since I'd not touched it since spring of 1992.
The course mainly focusses on solving machine numbers, solving linear systems (direct and iterative methods), solving non-linear systems (mostly Newton-type methods), and solving eigenvalue/vector problems. The codes that students wrote last year started from scratch with early assignments. Then, I allowed them to incorporate Basic Linear Algebra Subprograms (BLAS) into their codes. Then they were allowed to use LAPACK for the rest of the semester. They were free to use the C interface, but most chose to use the FORTRAN examples, probably because of the skeleton code that I provided.
Given the tremendous amount of code that is already out there, I agree that knowing FORTRAN is an asset. And since it's not hard to learn, why the heck not, right?
On a side note, they had to use Makefiles, LaTeX their assignments, and send everything to me electronically in a gzipped tarball. They got quite a workout in console tools. For reference, I had some that were quite familiar with the system and some that had had BASIC at some level and that's it. Lots of help was needed as the semester reached the final weeks.
Matlab was used for visualization and graph creation, but I am considering using GNUPlot this year, if it is up to the task. (I think it probably is.) I may also encourage the use of Octave, where possible.
For reference, the class website (which will soon be updated for the new semester) is here: Math 224.
-
Parallel chess algorithm
is outlined here. It's difficult to parallelize chess playing algorithm efficiently. Alpha-beta pruning is the best chess-playing algorithm we have. To complement it, you add transposition tables and an opening book, but that's basically it.
-
What are you thinking??!
This is Sandia. One of those governement labs with supercomputers and stuff. Like ASCI Red, the world's 3rd fastest supercomputer, for example.
They've got an OC-48 2.5 Gbps link to San Francisco. That was in 2000, they may have upgraded since then...
yeah, I know, they may have outsourced the web server to a 56k modem line, but somehow I doubt it... -
Re:At last..
I remember seeing the movie Tron, and I thought, how cool it would be if I had computergraphics like that in my computer (an Amiga 1000 at that time). And now, with the advancement of tehcnology, I can have.. without the need for a Cray Y MP! Sometimes technology is so beautiful, it brings tears in my eyes..
We're getting DAMN close.
[From this website]
http://www.netlib.org/benchmark/top500/reports/rep ort95/Architectures/node3.html
1.1.2 The Cray Y-MP T90 (Triton)
Machine type: Shared-memory multi-vectorprocessor.
Models: Y-MP T90.
Operating system: UNICOS (Cray Unix variant).
Compilers: Fortran, C, C++, Pascal, ADA.
System parameters:
Model Cray Y-MP T90
Clock cycle 2.2 ns
Theor. peak performance:
Per processor 1.818 Gflop/s
Maximal 58.2Gflop/s
Main memory 8 GB
Memory bandwidth:
Single proc. bandwidth 21.8 GB/s
No. of processors 2-32
Performance:
19.5 Gflop/s
28.8 Gflop/s
Note: The and values as given above stem from a 16 processor T90 (T916).
The T90 is the successor of the the Cray Y-MP C90 and in almost all respects the machines are similar. As in the C90, the number of arithmetic vector pipe sets is four. The performance of a full T90 CPU is slightly less than four-fold that of a maximal C90 system. This is brought about by lowering the clock cycle from 4.1 to 2.2 ns and by doubling the number of CPUs from 16 to 32.
The machines from Cray Research Inc. are at this moment the only ones with a memory bandwidth as seems optimal for vector processors: two operands can be loaded and one result can be stored in one cycle for each pipe set. For the C90 this meant that the relative bandwidth to the CPUs had to be doubled from 24 to 48 bytes/cycle. This has indeed been accomplished and observed results indicate that for the C90 the performance scales up with the clock cycle and the number of functional units.
The Cray Y-MP T90, C90, and M90 systems do not have separate scalar processors but scalar- and vector code have to share the same functional units. Theoretically, the absence of separate scalar processors might impair the throughput speed, however, in practice the drawbacks seem rather limited.
[end of line]
The interesting thing was CRAY was selling a "CRAY on a chip" back in 1988.
Intel 860 (1988). 'Cray-on-a-chip'. Scary!
http://www3.sk.sympatico.ca/jbayko/cpu5.html#Sec5P art2 -
Re:What a beast!Dnet claims to have around 17 Tflops worth of CPU's running, mostly on boxes that are good at integer and (relatively) weak on FP.
AsciiWhite is running 512 nodes of a cpu that is very much tailored to run FP computation. According to Netlib this box is running 8000 discrete CPU's capable of a net thruput of 12000 Gflops.
For comparison FP throughput on a 66 mhz Power2 system runs at 130 MFLOPS (260 peak), however it's Dnet throughput is on the order of 350 Kkeys / sec. Compare this to a PIII/1000 which produces the same 130 MFLOPS but runs 4500 Kkeys / sec.
So yeah 512 nodes of 375 Mhz Power3 cpus are going to produce plenty of Kkeys per second. And it could probably do that in full parallel with the FP work but I wouldn't count on them diverting the cycles to Dnet.
-
Re:Good point....The processors are being sold as things that they are NOT.
Intel is (for better or worse) the benchmark for CPU speeds these days. Athlon is not selling the 2200 as a 2200mz processor, they're selling it as the equivalent to a 2200Mz P4. In terms of informing a customer of how (relatively) fast their CPU will run quake, this is accurate.
Anybody who knows enough to build and install a wall-mount CPU clock meter that actually measures the clock speed is likely to know that the AMD really is equivalent to the 2.2Gz Intel. For the rest of us, the AMD rating is both more informative for the average customer, and less un-flattering to AMD.
For an equivalent to this argument: Imagine if people bragged about what RPM their wheels span at rather then the speed that their car drove at. If you wanted to really brag, you'd get a 1/4" wheel and run it at 2200RPM (a whopping 1.6 miles/hour). One could argue that this is not unlike what Intel has been doing with the P4 vs the P3/athlon.
Think about it -- they're trying to sell a 1GZ P4 an an entry leve system about a year after the P3/800 was out -- but the year-old P3 (which would have normally been the entry level system by now) would have been faster than the P4 if intel hadn't 'de-emphasized' the P3.
This is why people came out with the dhrystone, whetstone and other benchmarks back in the '80s -- to get comparisons of the relative cpu power across various CPU architectures for which one-for-one CPU clock speeds were entirely inappropriate (e.g. a 4Mz Z80 was about the same speed as a 1Mz 6502 -- mostly becasuse the Z80 took 4 clock cycles to grab a byte of memory while a 6502 only took one).
-
NEC might dissagree.They may not sell IBM mainframes, but they do sell mainframes. See NEC supercomputing. See this page for an interesting view of computing in Japan.
I imagine that any self respecting country would have some kind of indigenous dino maker. Let's see. Germany? Nope. UK? Nope. Similar pages can be found for France. Bully for Germany and Japan for at least trying, but it looks like the US kicks ass in this field. I suppose that you can charge alot when you make something others have a hard time keeping up with.
We shall see the merits of the case.
-
NEC might dissagree.They may not sell IBM mainframes, but they do sell mainframes. See NEC supercomputing. See this page for an interesting view of computing in Japan.
I imagine that any self respecting country would have some kind of indigenous dino maker. Let's see. Germany? Nope. UK? Nope. Similar pages can be found for France. Bully for Germany and Japan for at least trying, but it looks like the US kicks ass in this field. I suppose that you can charge alot when you make something others have a hard time keeping up with.
We shall see the merits of the case.
-
Re:Should have specified Windows-only developersI just Fortran 90 daily, as part of a computational fluid dynamics project. Fortran 90 is a lot different than Fortran 77 -- it has pointers, modules, no more punch card dictated format, array syntax,
... In someways it is nice, but one of the great things about Fortran 77 was that the language was so simple that the compiler did not have to make any assumptions. There were no pointers or dynamically allocated memory, so lots of optimizations could be made, which is why Fortran performed so well. You will find Fortran compilers on all the supercomputers on the Top 500 list today, and they are used very heavily. There are a lot of numerical algorithms coded in Fortran (netlib), that have been tested and looked over by the community for 20-30 years.That being said, for anything other than raw numerical computations, I prefer C.
-
Re:Must be available as a library
You can probably try Netlib -- http://www.netlib.org. It's a collection of mathematical software, including of course many differential equation solvers. The only problem is that a lot of these implementations are written in Fortran, so you may have to use the F2C translator.
-
Numerical Integration Methods
I believe one of the most accurate numerical integration methods is the famous LSODE (Livermore Solver for Ordinary Differential Equations), an implementation of which is available at http://www.netlib.org/odepack/.
Another one is VODE, which is based on LSODE. http://citeseer.nj.nec.com/1230.html. I think both are more accurate than Runge-Kutta. -
You don't have to be limited: CPAN
You don't have to be limited to what your compiler vendor supplies, or the extra libraries you (or your company) can afford. CPAN provides an enormous repository of useful (and usually well-written and well-tested) tools that no other language approaches.
But of course, you need to use perl.
Netlib may be the closest thing I know of for numerical analysis. While CPAN doesn't have the depth of numerical analysis the netlib does, it has much more breadth. I can usually find something that makes a new project much more quickly than I can code it up myself. CPAN is one of the big reasons I use perl
Keep you credit card in your wallet, leave the purchase requisitions in the file folder; keep your money and your sanity. Just check out CPAN! -
Consider the FFT.I've heard Cooley & Tukey's original 1965 paper "An Algorithm for the Machine Calculation of Complex Fourier Series" on the FFT algorithm cited as such a vast improvement. (Indeed, it has been called "the most valuable numerical algorithm in our lifetime" by the applied mathematician Gilbert Strang.) When you consider it is an N log N algorithm, as opposed to previous N^2 methods (amounting to a factor of ~ 100 in computational efficiency for N ~ 1000, and even bigger gains for larger N), and just how often Fourier methods are used in all branches of computational science, you begin to appreciate how significant their achievement was.
One should realize that the most fundamental numerical algorithms do not change very rapidly. The most common numerical algorithms (sorting, linear algebra, differential equations, etc., both in serial and parallel) have been the subject of intense research by an army of applied mathematicians over the last half-century. All you have to do to take advantage of that work is to call your friendly local numerical library.
Of course, sophisticated 3D graphics methods are still the subject of intense research.
So in sum, I would argue that as far as "serious" numerical methods go, excellent solutions usually exist. (These methods are "open source", indeed open source before the term existed! They are usually published in the scientific literature. The main gains that remain are in "entertainment" applications. Bob
-
Here is the scoop.1. Geomview is a very nice freeware surface renderer. I have been using it for years, it supports an external command language that can be driven via a named pipe and thus do animations from within other code. File format is basically ASCII (with some binary extensions) and can get big, but this works very nice if you have opengl extensions and a decent graphics card.
2. For volume rendering i recommend VTK the visualization toolkit. A bit high on overhead required to use it, but quite powerful when you learn. In addition to volume rendering, supports isosurfaces (via marching cubes), segmentation algorithms, and many other image classifications. Delauney triangulation, and many of the elements needed for production visualization pipelines.
3. BLAS and LAPACK are absolutely essential. Basic Linear Algebra and Linear Algebra subroutines for everything from optimized matrix-matrix operations to Singular Value Decomposition and cholesky factorization of band diagonal symmetric yadayada. I use this stuff daily and the LAPACK subroutines would be one of the first things I would compile in a new environment. The LAPACK subs call BLAS subs. Note that I have these in fortran but called from C/C++. I dont know if they have been ported to C yet.
4. Stay away from those fancy "data explorer" deals. Complete waste of time. Chances are with a little more work you can do a better job, in a smaller package, with a *ton* less overhead by writing a bit of code. Learn a command line parser (you could prolly use getopt) and write your own library. I recommend brewing up 1D 2D and 3D storage classes that are reusable via C++ classes. For 2D/3D we use files with an ascii header and binary data, and have written utilities to do math on or between them. We also spent the time to write our own plotting software direct to postscript, so I have not had to struggle with the crap that is the freely available plotting software. GNU plot is simply pathetic. And if you pay for something like NCAR it is at least as bad but costs a hell of a lot more.
5. As far as those fancy environments go, I have used AVS, KHOROS, IBM explorer, and the SGI IRIS explorer. One of these that was free and probably the easiest to use is now not free (khoros). The IBM data explorer is also free now, but it is a total piece of crapola in my not so humble opinion.
6. Finally. Get the numerical algorithms book for your fav language. You wont regret it.
-
Here is the scoop.1. Geomview is a very nice freeware surface renderer. I have been using it for years, it supports an external command language that can be driven via a named pipe and thus do animations from within other code. File format is basically ASCII (with some binary extensions) and can get big, but this works very nice if you have opengl extensions and a decent graphics card.
2. For volume rendering i recommend VTK the visualization toolkit. A bit high on overhead required to use it, but quite powerful when you learn. In addition to volume rendering, supports isosurfaces (via marching cubes), segmentation algorithms, and many other image classifications. Delauney triangulation, and many of the elements needed for production visualization pipelines.
3. BLAS and LAPACK are absolutely essential. Basic Linear Algebra and Linear Algebra subroutines for everything from optimized matrix-matrix operations to Singular Value Decomposition and cholesky factorization of band diagonal symmetric yadayada. I use this stuff daily and the LAPACK subroutines would be one of the first things I would compile in a new environment. The LAPACK subs call BLAS subs. Note that I have these in fortran but called from C/C++. I dont know if they have been ported to C yet.
4. Stay away from those fancy "data explorer" deals. Complete waste of time. Chances are with a little more work you can do a better job, in a smaller package, with a *ton* less overhead by writing a bit of code. Learn a command line parser (you could prolly use getopt) and write your own library. I recommend brewing up 1D 2D and 3D storage classes that are reusable via C++ classes. For 2D/3D we use files with an ascii header and binary data, and have written utilities to do math on or between them. We also spent the time to write our own plotting software direct to postscript, so I have not had to struggle with the crap that is the freely available plotting software. GNU plot is simply pathetic. And if you pay for something like NCAR it is at least as bad but costs a hell of a lot more.
5. As far as those fancy environments go, I have used AVS, KHOROS, IBM explorer, and the SGI IRIS explorer. One of these that was free and probably the easiest to use is now not free (khoros). The IBM data explorer is also free now, but it is a total piece of crapola in my not so humble opinion.
6. Finally. Get the numerical algorithms book for your fav language. You wont regret it.
-
Re:Things I use at work...1. Geomview is a very nice freeware surface renderer. I have been using it for years, it supports an external command language that can be driven via a named pipe and thus do animations from within other code. File format is basically ASCII (with some binary extensions) and can get big, but this works very nice if you have opengl extensions and a decent graphics card.
2. For volume rendering i recommend VTK the visualization toolkit. A bit high on overhead required to use it, but quite powerful when you learn. In addition to volume rendering, supports isosurfaces (via marching cubes), segmentation algorithms, and many other image classifications. Delauney triangulation, and many of the elements needed for production visualization pipelines.
3. BLAS and LAPACK are absolutely essential. Basic Linear Algebra and Linear Algebra subroutines for everything from optimized matrix-matrix operations to Singular Value Decomposition and cholesky factorization of band diagonal symmetric yadayada. I use this stuff daily and the LAPACK subroutines would be one of the first things I would compile in a new environment. The LAPACK subs call BLAS subs. Note that I have these in fortran but called from C/C++. I dont know if they have been ported to C yet.
4. Stay away from those fancy "data explorer" deals. Complete waste of time. Chances are with a little more work you can do a better job, in a smaller package, with a *ton* less overhead by writing a bit of code. Learn a command line parser (you could prolly use getopt) and write your own library. I recommend brewing up 1D 2D and 3D storage classes that are reusable via C++ classes. For 2D/3D we use files with an ascii header and binary data, and have written utilities to do math on or between them. We also spent the time to write our own plotting software direct to postscript, so I have not had to struggle with the crap that is the freely available plotting software. GNU plot is simply pathetic. And if you pay for something like NCAR it is at least as bad but costs a hell of a lot more.
5. As far as those fancy environments go, I have used AVS, KHOROS, IBM explorer, and the SGI IRIS explorer. One of these that was free and probably the easiest to use is now not free (khoros). The IBM data explorer is also free now, but it is a total piece of crapola in my not so humble opinion.
6. Finally. Get the numerical algorithms book for your fav language. You wont regret it.
-
Re:Things I use at work...1. Geomview is a very nice freeware surface renderer. I have been using it for years, it supports an external command language that can be driven via a named pipe and thus do animations from within other code. File format is basically ASCII (with some binary extensions) and can get big, but this works very nice if you have opengl extensions and a decent graphics card.
2. For volume rendering i recommend VTK the visualization toolkit. A bit high on overhead required to use it, but quite powerful when you learn. In addition to volume rendering, supports isosurfaces (via marching cubes), segmentation algorithms, and many other image classifications. Delauney triangulation, and many of the elements needed for production visualization pipelines.
3. BLAS and LAPACK are absolutely essential. Basic Linear Algebra and Linear Algebra subroutines for everything from optimized matrix-matrix operations to Singular Value Decomposition and cholesky factorization of band diagonal symmetric yadayada. I use this stuff daily and the LAPACK subroutines would be one of the first things I would compile in a new environment. The LAPACK subs call BLAS subs. Note that I have these in fortran but called from C/C++. I dont know if they have been ported to C yet.
4. Stay away from those fancy "data explorer" deals. Complete waste of time. Chances are with a little more work you can do a better job, in a smaller package, with a *ton* less overhead by writing a bit of code. Learn a command line parser (you could prolly use getopt) and write your own library. I recommend brewing up 1D 2D and 3D storage classes that are reusable via C++ classes. For 2D/3D we use files with an ascii header and binary data, and have written utilities to do math on or between them. We also spent the time to write our own plotting software direct to postscript, so I have not had to struggle with the crap that is the freely available plotting software. GNU plot is simply pathetic. And if you pay for something like NCAR it is at least as bad but costs a hell of a lot more.
5. As far as those fancy environments go, I have used AVS, KHOROS, IBM explorer, and the SGI IRIS explorer. One of these that was free and probably the easiest to use is now not free (khoros). The IBM data explorer is also free now, but it is a total piece of crapola in my not so humble opinion.
6. Finally. Get the numerical algorithms book for your fav language. You wont regret it.
-
Geomview for visualization1. Geomview is a very nice freeware surface renderer. I have been using it for years, it supports an external command language that can be driven via a named pipe and thus do animations from within other code. File format is basically ASCII (with some binary extensions) and can get big, but this works very nice if you have opengl extensions and a decent graphics card.
2. For volume rendering i recommend VTK the visualization toolkit. A bit high on overhead required to use it, but quite powerful when you learn. In addition to volume rendering, supports isosurfaces (via marching cubes), segmentation algorithms, and many other image classifications. Delauney triangulation, and many of the elements needed for production visualization pipelines.
3. BLAS and LAPACK are absolutely essential. Basic Linear Algebra and Linear Algebra subroutines for everything from optimized matrix-matrix operations to Singular Value Decomposition and cholesky factorization of band diagonal symmetric yadayada. I use this stuff daily and the LAPACK subroutines would be one of the first things I would compile in a new environment. The LAPACK subs call BLAS subs. Note that I have these in fortran but called from C/C++. I dont know if they have been ported to C yet.
4. Stay away from those fancy "data explorer" deals. Complete waste of time. Chances are with a little more work you can do a better job, in a smaller package, with a *ton* less overhead by writing a bit of code. Learn a command line parser (you could prolly use getopt) and write your own library. I recommend brewing up 1D 2D and 3D storage classes that are reusable via C++ classes. For 2D/3D we use files with an ascii header and binary data, and have written utilities to do math on or between them. We also spent the time to write our own plotting software direct to postscript, so I have not had to struggle with the crap that is the freely available plotting software. GNU plot is simply pathetic. And if you pay for something like NCAR it is at least as bad but costs a hell of a lot more.
5. As far as those fancy environments go, I have used AVS, KHOROS, IBM explorer, and the SGI IRIS explorer. One of these that was free and probably the easiest to use is now not free (khoros). The IBM data explorer is also free now, but it is a total piece of crapola in my not so humble opinion.
6. Finally. Get the numerical algorithms book for your fav language. You wont regret it.
-
Geomview for visualization1. Geomview is a very nice freeware surface renderer. I have been using it for years, it supports an external command language that can be driven via a named pipe and thus do animations from within other code. File format is basically ASCII (with some binary extensions) and can get big, but this works very nice if you have opengl extensions and a decent graphics card.
2. For volume rendering i recommend VTK the visualization toolkit. A bit high on overhead required to use it, but quite powerful when you learn. In addition to volume rendering, supports isosurfaces (via marching cubes), segmentation algorithms, and many other image classifications. Delauney triangulation, and many of the elements needed for production visualization pipelines.
3. BLAS and LAPACK are absolutely essential. Basic Linear Algebra and Linear Algebra subroutines for everything from optimized matrix-matrix operations to Singular Value Decomposition and cholesky factorization of band diagonal symmetric yadayada. I use this stuff daily and the LAPACK subroutines would be one of the first things I would compile in a new environment. The LAPACK subs call BLAS subs. Note that I have these in fortran but called from C/C++. I dont know if they have been ported to C yet.
4. Stay away from those fancy "data explorer" deals. Complete waste of time. Chances are with a little more work you can do a better job, in a smaller package, with a *ton* less overhead by writing a bit of code. Learn a command line parser (you could prolly use getopt) and write your own library. I recommend brewing up 1D 2D and 3D storage classes that are reusable via C++ classes. For 2D/3D we use files with an ascii header and binary data, and have written utilities to do math on or between them. We also spent the time to write our own plotting software direct to postscript, so I have not had to struggle with the crap that is the freely available plotting software. GNU plot is simply pathetic. And if you pay for something like NCAR it is at least as bad but costs a hell of a lot more.
5. As far as those fancy environments go, I have used AVS, KHOROS, IBM explorer, and the SGI IRIS explorer. One of these that was free and probably the easiest to use is now not free (khoros). The IBM data explorer is also free now, but it is a total piece of crapola in my not so humble opinion.
6. Finally. Get the numerical algorithms book for your fav language. You wont regret it.
-
Re:Netlib and more
I do quite a bit of number crunching. Here are
some of the resources I use:
Netlib (www.netlib.org) -- Yes, it's mostly Fortran, but that's a good thing! Just use f2c (easy to find) and translate to C if that's what you want. Don't underestimate the power of decades-old programs -- old == widely used and well-tested.
StatLib (lib.stat.cmu.edu) -- Collection of statistical software, in various languages, including C, Fortran, and S.
SAL, Scientific Applications on Linux (sal.kachinatech.com) -- a very large collection of links.
Freshmeat (www.freshmeat.net) -- Not scientifically oriented, but there is much scientific stuff there, along with all kinds of miscellany.
Octave (www.octave.org) -- A package for matrix manipulations, similar to Matlab, but free. Useful for all kinds of problems.
R (www.r-project.org) -- An implementation of the S language for statistics, but also useful for general problems, similar to Octave. S+ is a commercial implementation of S.
Well, that ought to be enough to get started. To echo something other posters have mentioned -- don't even bother with Windows software. If your budget is tight, save your money for hardware, don't waste it on the MS tax. -
Netlib and more
The standard resource for free scientific software (unfortunately mostly written in Fortran) is Jack Dongarra's netlib: http://www.netlib.org/
It's best in linear algebra (matrix problems etc) but there's other good stuff in there - FFT routines, statistical stuff, some deep mathematics, and more... Also, not free, but good, is the standby Numerical Recipes book, which includes source code for a large variety of uses, particularly solution of nonlinear optimization problems.
Other stuff is available free from the supercomputer centers - at least they used to give stuff away free, though NCSA at least seems to have tried to make money off their things lately... -
Fortran to C
-
Links to more info on TCS1
Here are some links to more information:
- List of the Top 500
- Official TCS1 Status Page(but not yet updated)
- TCS1 User Documentation: The Terascale Computing System
- Slashdot article announcing Birth of a Terascale Baby (Oct. 4, 2000)
- List of the Top 500
-
I seriously doubt the NSA lacks computing power
Really? The NSA is woefully behind in technology? I can't prove that any of these supercomputers went to the NSA but looking at this list, the government now owns at least seven of the top five-hundred supercomputers. Most of these are in the top 200 and all were bought in the past four years. Note the computer's uses are classified so who knows if the NSA got them or all went to the FBI and CIA.
-
Re:Numerical Recipes not perfect
I'd second that. Most of the professional numerical analysists that I have known at Bell Labs had a generally low opinion about the actual code in the book. You can get an idea of a lot of the things that can be solved, but when you want to actually do something, you're usually better off getting stuff from netlib or a similar source.
-
Re:Chip Quality Formula
Good places to look for the latest CPU performance might be to look at the RC5 statistics or the Performance Database Server. Tasty performance numbers in terms I can digest are found there.
-
Re:Supercomputer???
The list is at http://www.netlib.org/benchmark/top500. html
-
Re:stop the fud?
Linux scalability?
A scalable Linux cluster machine is the 44th fastest computer in the world. NT isn't on the list, but the list only goes to 500. Clearly, since you say WinNT is more scalable, the absence of WinNT from this list must be some form of conspiracy perpetuated by those darn Linux zealots.
Just imagine the performance if you installed NT 4.0 on all them nodes.
--
This is my favourite Micorsoft advocacy page. -
Company winners and losersIf you compare the current/old status by maker, with the latest status, you'll see that SGI/Cray have dropped from 182 machines to 133, IBM have increased from 118 to 141, and Sun have gone from 95 to 113 - all those Starfires come in handy, as there's 40 Starfires in the list with 64 400Mhz UltraSparc-II's - current max capacity for 1 Starfire. However, the first Sun entry is at #33, though Sun's UltraSparc-III and next-gen Serengetti server will help, when they eventually come out...
-
Diversity of code
The problem with creating a single monolothic open source repository stuffed with functions and class libraries for everything under the sun is that people's needs are far too diverse. The current model, where tidbits of functionality for specific topics are maintained by various organizations considered "authoritative" in that field, has proved fairly effective. Some notable examples include netlib, libwww, ARPACK and of course CPAN.
I'm not sure what purpose would be served by bringing all of these various efforts under a single roof. They all have differing philosophies, goals, and styles. Some, such as ARPACK, are highly domain specific, and its maintainers are unlikely to care about "generic code repositories." The STL filled a very important niche, but having gotten the basic algorithms and data structures out of the way, creating a massive interdisciplinary code repository is an unachievable and perhaps undesirable feat.
-
Re:Why we need them?
Sure, the 9500-processor Intel monster at Sandia is the fastest, but there is an alpha linux cluster on the top 500 supercomputer list. As of 4-Aug-1999 it was ranked 129/500, and consisted of 150 Alpha processors. Read more about it at the Sandia Web Page. Note -- it is NOT a Beowulf. I don't know enough about the MPI implementation on either, but I think your comment about it being slow is dead-on. Those foreign baddies will have to go for more coffee breaks.
-
actual numbers for machines for mortals
I just went and got the 1000x1000 double precision benchmark from netlib.org. I grabbed the lapack library and g77 from the debian website (Debian 2.1/slink versions)
On my 400MHz K6-2, I get 16 Mflops without optimization, 20 with -O3. Not quite what was listed in the performance document, but that might have been with a hand-tuned library.
For comparison, my home machine (a 300 HHz K6-2) gets 13 Mflops unoptimized, 20 with. It's running Debian 2.2pre/potato which uses egcs, so the optimization is probably better. Both machines have 100 MHz fsb and 1 MB L2 cache.
There's a fun java version on the LINPACK benchmark as well. I get 1.4 Mflops. :) -
actual numbers for machines for mortals
I just went and got the 1000x1000 double precision benchmark from netlib.org. I grabbed the lapack library and g77 from the debian website (Debian 2.1/slink versions)
On my 400MHz K6-2, I get 16 Mflops without optimization, 20 with -O3. Not quite what was listed in the performance document, but that might have been with a hand-tuned library.
For comparison, my home machine (a 300 HHz K6-2) gets 13 Mflops unoptimized, 20 with. It's running Debian 2.2pre/potato which uses egcs, so the optimization is probably better. Both machines have 100 MHz fsb and 1 MB L2 cache.
There's a fun java version on the LINPACK benchmark as well. I get 1.4 Mflops. :) -
actual numbers for machines for mortals
I just went and got the 1000x1000 double precision benchmark from netlib.org. I grabbed the lapack library and g77 from the debian website (Debian 2.1/slink versions)
On my 400MHz K6-2, I get 16 Mflops without optimization, 20 with -O3. Not quite what was listed in the performance document, but that might have been with a hand-tuned library.
For comparison, my home machine (a 300 HHz K6-2) gets 13 Mflops unoptimized, 20 with. It's running Debian 2.2pre/potato which uses egcs, so the optimization is probably better. Both machines have 100 MHz fsb and 1 MB L2 cache.
There's a fun java version on the LINPACK benchmark as well. I get 1.4 Mflops. :) -
Get a recent version...
While some of the older X86 releases of CodeWarrior did have some problems, code generated by the latest release Flies! They really made a lot of drastic improvements. Take a look here for benchmark info.
PC Week also has some benchmark info...
Or, try it yourself - get the demo version and some benchmarks and give it a shot... -
HPC software original sources...Some pieces of Sun's HPC software are derivations of freely available code. Their MPI implementation is (or rather was, the last time I looked) based on mpich from ANL. The linear algebra packages are based on ScaLAPACK and crew. Sun may be giving out some tuning implementation, but nothing that can't be found automatically (see the PHiPAC and ATLAS projects). PETsc and PVM are straight builds of older code, bugs and all.
Some of the more interesting pieces, like LSF, are only licensed by Sun, thus will not be included in this `deal.' (For a free improvement over LSF, check out GNU Queue. If it doesn't do something you want, you can support the community and extend it.) If you read the announcement carefully, you'll see that the only new codes to which it applies are the parallel file system (the Sun CTO thinks distributed file systems are dead, anyways), the Prism debugger, and the parallel run-time environment.
Of those, the only with no available substitute is the debugger. The ROMIO library is a good place to start for the MPI file I/O stuff (a good database would be a better place, imho). I already mentioned queue management software. The Ptools Consortium and the Globus Project have links to other HPC cluster tools.
Many of the pieces for debugging are available (combine ddd and gnuplot), but some notable ones are missing. The ability to control multiple GDBs easily from one processes and the visualization of parallel execution are needed, and quite difficult to implement. There seems to be interest in making GDB easier to use from other processes, which is a good start towards solving the larger problem of general, distributed debugging. And both the mpich and LAM MPI implementation have some profiling information, but few tools to dig through it.
To be fair, Sun has contributed (and supported contributions) to the original packages. Why they are releasing the rest under their Exploit the Community license is beyond me.
Jason, ejr@cs.berkeley.edu
-
HPC software original sources...Some pieces of Sun's HPC software are derivations of freely available code. Their MPI implementation is (or rather was, the last time I looked) based on mpich from ANL. The linear algebra packages are based on ScaLAPACK and crew. Sun may be giving out some tuning implementation, but nothing that can't be found automatically (see the PHiPAC and ATLAS projects). PETsc and PVM are straight builds of older code, bugs and all.
Some of the more interesting pieces, like LSF, are only licensed by Sun, thus will not be included in this `deal.' (For a free improvement over LSF, check out GNU Queue. If it doesn't do something you want, you can support the community and extend it.) If you read the announcement carefully, you'll see that the only new codes to which it applies are the parallel file system (the Sun CTO thinks distributed file systems are dead, anyways), the Prism debugger, and the parallel run-time environment.
Of those, the only with no available substitute is the debugger. The ROMIO library is a good place to start for the MPI file I/O stuff (a good database would be a better place, imho). I already mentioned queue management software. The Ptools Consortium and the Globus Project have links to other HPC cluster tools.
Many of the pieces for debugging are available (combine ddd and gnuplot), but some notable ones are missing. The ability to control multiple GDBs easily from one processes and the visualization of parallel execution are needed, and quite difficult to implement. There seems to be interest in making GDB easier to use from other processes, which is a good start towards solving the larger problem of general, distributed debugging. And both the mpich and LAM MPI implementation have some profiling information, but few tools to dig through it.
To be fair, Sun has contributed (and supported contributions) to the original packages. Why they are releasing the rest under their Exploit the Community license is beyond me.
Jason, ejr@cs.berkeley.edu
-
HPC software original sources...Some pieces of Sun's HPC software are derivations of freely available code. Their MPI implementation is (or rather was, the last time I looked) based on mpich from ANL. The linear algebra packages are based on ScaLAPACK and crew. Sun may be giving out some tuning implementation, but nothing that can't be found automatically (see the PHiPAC and ATLAS projects). PETsc and PVM are straight builds of older code, bugs and all.
Some of the more interesting pieces, like LSF, are only licensed by Sun, thus will not be included in this `deal.' (For a free improvement over LSF, check out GNU Queue. If it doesn't do something you want, you can support the community and extend it.) If you read the announcement carefully, you'll see that the only new codes to which it applies are the parallel file system (the Sun CTO thinks distributed file systems are dead, anyways), the Prism debugger, and the parallel run-time environment.
Of those, the only with no available substitute is the debugger. The ROMIO library is a good place to start for the MPI file I/O stuff (a good database would be a better place, imho). I already mentioned queue management software. The Ptools Consortium and the Globus Project have links to other HPC cluster tools.
Many of the pieces for debugging are available (combine ddd and gnuplot), but some notable ones are missing. The ability to control multiple GDBs easily from one processes and the visualization of parallel execution are needed, and quite difficult to implement. There seems to be interest in making GDB easier to use from other processes, which is a good start towards solving the larger problem of general, distributed debugging. And both the mpich and LAM MPI implementation have some profiling information, but few tools to dig through it.
To be fair, Sun has contributed (and supported contributions) to the original packages. Why they are releasing the rest under their Exploit the Community license is beyond me.
Jason, ejr@cs.berkeley.edu
-
same name, different code
I don't think they are referring to what is at www.netlib.org. It's the networking libraries that netscape has been using for Navigator/Communicator.
-
To: upba!ihnp4!research!netlib (geez, I feel old)[
... ] its aim is a complete overhaul of the current NetLib code, with special attention paid towards footprint, maintainability, and performance.When I saw this, my heart jumped with joy!
Netlib, one of the original free code repositories is in dire need of being re-written/cleaned up. I once tried to translate lsode.f into C. At first, I tried to translate it without using goto's. Then, I tried to translate it even with goto's. Then I used some code from Numerical Recipies in C.
*sigh*
Does anyone else remember getting stuff from Netlib via email?
-
To: upba!ihnp4!research!netlib (geez, I feel old)[
... ] its aim is a complete overhaul of the current NetLib code, with special attention paid towards footprint, maintainability, and performance.When I saw this, my heart jumped with joy!
Netlib, one of the original free code repositories is in dire need of being re-written/cleaned up. I once tried to translate lsode.f into C. At first, I tried to translate it without using goto's. Then, I tried to translate it even with goto's. Then I used some code from Numerical Recipies in C.
*sigh*
Does anyone else remember getting stuff from Netlib via email?
-
Enough chatter, why you not find this?OK, some good ideas up there. Now let's pretend we are trained arachnids and check the Web...
Featuring: The Performance Database Server. Start with the bottom of the Dhrystone results. Then find the older Whetstone database.
STREAM graph of Memory speed vs MFLOPS. (The STREAM standard results has speed numbers. The CPU Info Center has assorted historical CPU info. Here is Intel's Moore's Law graph. Here is a computer timeline. Here are the top 500 supercomputers since 1983.
-
Enough chatter, why you not find this?OK, some good ideas up there. Now let's pretend we are trained arachnids and check the Web...
Featuring: The Performance Database Server. Start with the bottom of the Dhrystone results. Then find the older Whetstone database.
STREAM graph of Memory speed vs MFLOPS. (The STREAM standard results has speed numbers. The CPU Info Center has assorted historical CPU info. Here is Intel's Moore's Law graph. Here is a computer timeline. Here are the top 500 supercomputers since 1983.