Skip to content

Installing PDL on Windows

Zakariyya Mughal edited this page Jan 5, 2015 · 1 revision

Although PDL is currently supported for perl versions back to 5.8.1, ppm packages are provided here only for 5.8.8 onwards. These instructions therefore relate only to perl 5.8.8 and later. (For 64-bit builds of perl, ppm packages are provided only for perl versions 5.12 and later.) It's also assumed that you have the PPM utility. If you don't have a correctly functioning version of the PPM utility then one option is to use PAR::Dist::InstallPPD to install the PDL ppm package - by, for example, using this script.
Alternatively, you could build PDL from source. (To build from source, see Win32\INSTALL in the PDL source distribution.)
If you prefer to use a ppm utility, and the perl you're using doesn't ship with one, then track down the latest version that the Strawberry Perl project provides.

Note that we now append '--force' to the ppm commands. This is explained in the sisyphusion FAQ (question 3).

First up install Astro::FITS::Header and Convert::UU by running:

ppm install http://www.sisyphusion.tk/ppm/Astro-FITS-Header.ppd --force
ppm install http://www.sisyphusion.tk/ppm/Convert-UU.ppd --force

Then install the PGPLOT (optional), OpenGL (prerequisite), File::Map (prerequisite) and PDL modules by running, from the command line:

ppm install http://www.sisyphusion.tk/ppm/File-Map.ppd --force
ppm install http://www.sisyphusion.tk/ppm/OpenGL.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PGPLOT.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL.ppd --force

That will give you the latest stable release of PDL. If, instead, you want the latest devel release then you can:

ppm install http://www.sisyphusion.tk/ppm/PDL_dev.ppd --force

but you might first want to check whether the devel release is later than the stable release - which you can do by comparing the listed version numbers.

OpenGL ppm packages are also available from other repos, but those packages are usually built against a dynamic freeglut library and they don't work well with the above PDL packages (which expect a static freeglut library). It's therefore advisable to install from the sisyphusion repo, as above.

Having installed the PDL ppm package, PROJ4 support is enabled by setting the PROJ_LIB environment variable to the location of the proj_supp folder. The PDL post-install script will have terminated with a message that told you the setting this environment variable should take on. (If you missed the message, the folder will be in your perl/site/lib directory - eg, for most builds of ActivePerl the PROJ_LIB environment variable needs to be set to C:\perl\site\lib\PDL\proj_supp.)

Installing ffmpeg will enable the creation of mp4 and animated gif files, whereby one can turn a piddle of images into a movie. For a demo of this feature, create an mp4 file (bounce.mp4) by running the Example/IO/wmpeg.pl that ships with the PDL source. The requisite ffmpeg binaries are available from a number of places, including(at time of writing):

http://ffmpeg.arrozcru.org/autobuilds/
http://www.videohelp.com/tools/ffmpeg

but googling for 'ffmpeg download' should turn up useful hits if those 2 links become dead in the future.

Once PDL has been installed, the following PDL-based packages (available from CPAN, but not part of the "core" PDL distribution) can also be installed:

ppm install http://www.sisyphusion.tk/ppm/PDL-Audio.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-CCS.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-Drawing-Prima.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-EditDistance.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-FFTW3.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-Graphics-ColorDistance.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-Graphics-ColorSpace.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-Graphics-Gnuplot.ppd --force 
ppm install http://www.sisyphusion.tk/ppm/PDL-Graphics-Prima.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-GSL-Randist.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-IO-HDF5.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-NetCDF.ppd --force 
ppm install http://www.sisyphusion.tk/ppm/PDL-Stats.ppd --force 
ppm install http://www.sisyphusion.tk/ppm/PDL-VectorValued.ppd --force 
ppm install http://www.sisyphusion.tk/ppm/PDL-Ngrams.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-Graphics-PLplot.ppd --force
ppm install http://www.sisyphusion.tk/ppm/PDL-LinearAlgebra.ppd --force

An alternative ppm package for PDL-Graphics-PLplot is also available. Unlike the one above, it is built against a shared (dll) plplot library and provides the additional capability to output the graphics to a png file. It's also a significantly larger download (4.5 megabytes versus 1.5 megabytes) and will install a number of Gtk+ and plplot dll files into your perl/bin folder (perl/site/bin folder on ActivePerl). It can be obtained by running:

ppm install http://www.sisyphusion.tk/ppm_alt/PDL-Graphics-PLplot_alt.ppd --force

Having installed PDL::Graphics::PLplot, support for it is then enabled by setting the PLPLOT_LIB environment variable to the location of the plplot_supp folder. If you've installed the "alternative" ppm package (ie the one built against shared plplot libraries) then you'll also need to set the PLPLOT_DRV_DIR environment variable. The PDL::Graphics::PLplot post-install script will have terminated with a message that told you the setting this/these environment variable(s) should take on. If you missed the message, the plplot_supp folder will be in your perl/site/lib directory, and PLPLOT_DRV_DIR (if applicable) needs to be set to the directory specified by running 'perl -V:installsitebin' - eg, for most builds of ActivePerl the PLPLOT_LIB environment variable needs to be set to C:\perl\site\lib\PDL\plplot_supp, and PLPLOT_DRV_DIR to C:\perl\site\bin.

The following PDL-based package is also available, but only for perls whose 'perl -V:ivsize' reports 4. It currently doesn't work with the latest PDL on perls whose ivsize is 8:

ppm install http://www.sisyphusion.tk/ppm/PDL-Fit-Levmar.ppd --force

ActiveState also usually provide ppm packages for PDL, but they lack the functionality of the build available from sisyphusion.tk - eg no Slatec, GD, GSL, Minuit, PGPLOT or PROJ4 support.

NOTE 1: If using ppm's gui to install from the sisyphusion repo, you need to exercise care to ensure that the PDL and OpenGL packages are, in fact, being installed from the sisyphusion repo, not from the ActiveState repo - hence the advice (above) to install these packages using the given "ppm install ..." commands, instead of using the gui.

NOTE 2: The mechanism that allows the PGPLOT module to load is broken in the 5.10.0 DynaLoader.pm. Affected perls are therefore any perl built from 5.10.0 source - eg Strawberry Perl 5.10.0. With ActivePerl, this broken DynaLoader.pm was included in some of their 5.8.x builds, as well as their first 5.10.0 build - though the error was fixed in their later builds (eg build 1005) of 5.10.0 . The error produced when trying to load the PGPLOT module using this broken DynaLoader.pm begins "Can't locate loadable object for module PGPLOT in @INC ...". If you receive that error, then try installing an unbroken DynaLoader.pm (eg by copying one from a perl-5.10.1 installation) - or upgrade your perl to at least 5.10.1 (which is a safer option than copying a DynaLoader.pm from another installation).

Please feel free to report any problems to either of the pdl mailing lists, or by emailing to sisyphus1 at (@) optusnet dot (.) com dot(.)au

Clone this wiki locally