Slashdot Mirror


PDL 2.4.0: Scientific Computing for the Masses

Dr. Zowie writes "Perl Data Language 2.4.0 was just released; get it here. This release includes even more powerful array slicing, a complete GIS cartography package, API access to the Gnu Scientific Library, and a host of other goodies. Between PDL and its less-mature siblings Numeric Python and Octave, the established commercial languages' days appear numbered."

9 of 40 comments (clear)

  1. Maple? by infernalC · · Score: 3, Informative

    Maple doesn't get an established commercial languages link?

    BTW, Maxima, Macsyma, etc, is free and has been around for years.

  2. R: Open-source statistical languate by StatFiend · · Score: 4, Informative

    Another open-source statistical language is R. Its commercial cousin is S-Plus.

  3. Octave v. Matlab by djdead · · Score: 4, Informative

    I use Octave at home to test anything I'm doing for the "Matlab" sections of my homework. And while I think it's a great program and works well, for large computations Matlab is much much faster. There is one routine in particular that takes about 4 hours to run at home and only 15 minutes to run at school. And no, this isn't because my home machine is P-MMX 100 and school has has 3GHz P-4's. The machines are pretty closely matched.

    --
    -1: flamebait should really be -1: inciteful
    1. Re:Octave v. Matlab by t · · Score: 3, Informative
      Ah you did post the code, I thought you were pulling a SCO for a minute there.

      Looks to me like the problem is the line right above the part you posted:
      nextRedds = zeros(1, x+2*runs);
      The reason this is bad is because you reallocate it slightly bigger at the beginning of every run. This wastes a lot of time in malloc. You should allocate it before the loop at the biggest size necessary, and then initialize it as you already are.

      This part
      redds = [redds; nextRedds(1, a:b)];
      is especially bad because you are forcing Octave to grow your matrix on every loop. You should also preallocate this before the loop. In general, allowing Matlab/Octave to automatically enlarge arrays as needed results in disasterous performance. This is in general bad style, especially if one day you decide to code this up in C or something for speed, you would have to recode all your allocation code.

  4. Re:Where is the GIS? by ChrisDolan · · Score: 4, Informative

    Download it. In the tarball is
    PDL-2.4.0/Demos/Cartography_demo.pm

  5. Re:Where is the GIS? by Dr.+Zowie · · Score: 3, Informative

    The GIS stuff is a collection of vector and pixel coordinate-transform methods that allow you to plot, overlay, and compare map data from all the conventional formats. There are some sample global-scale maps of Earth included in the distribution, but they're not especially high resolution since they're mainly intended to demonstrate the capability.

    We designed the GIS code to be useful for planetary, astronomical, and solar work -- it's "just" a set of tools for dealing with sampled and vector data in a spherical system.

  6. Maxima by Anonymous Coward · · Score: 1, Informative

    Maxima is what you are looking for.

    It actually has an interesting history, because in many ways it was the first symbolic math program (many argue that other programs, such as Maple and Mathematica, are clones of Macsyma). It went out of use for awhile, then was open sourced, and now is experiencing somewhat of a renaissance.

    So there's some irony, in that the commercial programs are actually "alternatives" to the now-free program.

  7. This is quite true. by pr0ntab · · Score: 3, Informative

    More importantly recent versions of MATLAB JIT-compiles all the functions you run into a VM-bytecode-like thing, whereas Octave is a straight interpreter (AFAIK), so if you use a lot of recursive function calls or iterations and stuff.... heheh, you'll notice the difference right there.

    --
    Fuck Beta. Fuck Dice
  8. A lack of Parallelism by ChaoticCoyote · · Score: 4, Informative

    All of these tools address different aspects of numerical computing. A mixture of languages and tools will generally produce the best results.

    I've been experimenting with a number of scientific programming packages, ranging from traditional languages like Fortran 95 to new developments like SciPy. Of the "new" approaches, I like SciPy the best, given its support for MPI and ease of linking to traditional languages.

    Support for NUMA and SMP architectures is severely lacking in most "free" packages. This may, in some respects, be due to the lack of parallel support on gcc (although there is an effort underway (gomp) to add OpenMP support to gcc).

    Parallelism is important to any large-scale numerical application -- and PDL, as yet, does not appear to support SMP, NUMA, or cluster architectures. I know there are attempts at adding parallel support to Perl, but haven't seen much activity with them.

    GSL does not implement any parallel algorithms; according to this post by Brian Gough (), GSL is not designed to support parallelism.