Provided by: pdl_2.100-1_amd64 bug

NAME

       PDL::InstallGuide - installation notes for PDL

DESCRIPTION

       These are notes to try to help you get PDL installed, especially on Windows, MacOS, and Cygwin.  Another
       source of information is <https://pdl.perl.org/?page=install>.

INSTALLATION

       To install PDL on your machine, first check that you have a recent enough version of Perl: 5.14.0 and
       above is required.

       Then, use cpanm to install PDL:

         cpanm PDL::Basic

       This will give you PDL. There are additional modules you can install for further features, but for speed
       of installatiion, and ease of maintenance, they are not included in the above package. They can however
       be installed with a similar command to the above, and any dependencies will be installed automatically.

       If you want to contribute to PDL, see PDL::DeveloperGuide and/or PDL::FAQ.

   MacOS X
       For a full distribution of PDL on MacOS X, try <https://github.com/PDLPorters/SciPDL>. There are also
       plans to bring PDL to Homebrew, so try that to see if it is there.

       NOTE: The PDL::Graphics::TriD window controls are based on having a mouse with 2 or more buttons.

       For Macs with one button, you can use Ctrl+Click to generate the needed Right-click. It is also possible
       to configure the Macbook tracpad to generate a secondary click via the control panel.

   Windows
       For instructions relating to the installation of PDL binaries (PPM packages) see the wiki:
       <https://github.com/PDLPorters/pdl/wiki/Installing-PDL-on-Windows>

       If you wish to build from source, the best way (at least as of 2024) is to install Strawberry Perl, which
       includes Minimalist Gnu for Windows (MinGW), a full development environment. There is also a Strawberry
       Perl PDL Edition, with many extra libraries included, along with a version of PDL.

   Cygwin
       NB These notes may not be fully up to date.

       This directory contains supplemental build information to configure and install PDL on a windows system
       with the cygwin toolset (https://www.cygwin.com).

       The cygwin library provides the missing unix/posix functionality to allow unix applications to be more
       easily ported to windows.  A windows PC with cygwin looks like different flavor of unix.  Since cygwin
       looks like a Unix, [almost] all of the standard perl functionality works and PDL can build pretty much as
       it does on other unix systems.

       See "Windows"for instructions on building a native Windows PDL.

       It is recommended that you build and install PDL based on a full cygwin 1.7.17 or later. Please post to
       the perldl mailing list for help or questions regarding a cygwin install.

       By default, Cygwin has an ~300MB process memory limit.  If you work with large data sets, you may wish to
       use the native win32 PDL with either ActiveState Perl or Strawberry Perl.  Otherwise, you'll want to set
       the value of heap_chunk_in_mb to allow for bigger data as described in the Cygwin Users Guide:
       http://www.cygwin.com/cygwin-ug-net/setup-maxmem.html

       WARNING: There is a known problem with windows DLL base addresses being scrambled causing mysterious
       failures for cygwin builds.  See the "rebaseall" directions below for the current work around.
       Development for recent cygwins appear to be making progress towards fixing this problem.

       If you already have a full cygwin install on your PC, the simplest way to get a basic PDL is to use the
       "cpanm" command, as above.  This will get you all the functionality that is supported by existing cygwin
       package functionality (i.e. available from the standard Setup.exe installs).

       rebaseall

       There is a known issue on cygwin where DLLs have to have their base addresses fixed so that runtime
       conflicts do not occur.  The problems occur for the external modules and their interfaces using DLLs. The
       usual sign for this is that some tests fail mysteriously.  If you run the failing test by hand (for
       example):

         perl -Mblib t/plplot.t

       You may see no error but only 1 test run or even a message saying that the test failed before generating
       any output.  If so, you'll need to run rebaseall:

         0. Generate a list of additional DLLs to check:

            find /usr/lib/perl5 /usr/bin /usr/local /pdl_build_dir/blib -iname '*.dll' > /bin/fixit.list

         1. Exit all cygwin processes, windows, shells, X server,...

         2. Start up a windows CMD shell window (Start->Run cmd)

         3. cd to the cygwin /bin directory (cd c:\cygwin\bin by default)

         4. Run ash in that directory (ash)

         5. Run rebaseall (./rebaseall -T fixit.list)

              Note that we created the fixit.list file in the c:\cygwin\bin
              folder to begin with.  If you put it elsewhere, you'll need
              to use the appropriate pathnames.

         6. Run peflagsall (./peflagsall -T fixit.list)

         7. Restart cygwin

       After the rebaseall command has completed, you should be able to start up X windows and rerun the failed
       tests (perl -Mblib t/testname.t) or all tests (make test).

       NOTE: From the cygwin-xfree mailing list:

         > Also, I've found that using a different base address with rebaseall
         > seems to help with some X problems:
         >
         > dash -c "rebaseall -b 0x77000000"
         >
         > http://cygwin.com/ml/cygwin/2011-04/msg00306.html
         >
         > cgf

       Establishing maximum memory available

       Run this as "perl filename.pl chunksize_in_MB [seconds_delay]":

         #!/usr/bin/perl
         use PDL;
         my $MB;
         my @data;
         my $chunk = (scalar @ARGV) ? $ARGV[0] : 1;
         for ( $MB=0; $MB<5000; $MB+=$chunk) {
            print "Allocating: total data -> ${MB}MB..";
            push @data, zeros($chunk,125,1000);
            print ".. done\n";
            sleep $ARGV[1] if scalar(@ARGV) == 2;
         }
         print "Got total of $MB!\n";

       Changing Cygwin's maximum memory

       Cygwin's heap is extensible. However, it does start out at a fixed size and attempts to extend it may run
       into memory which has been previously allocated by Windows. In some cases, this problem can be solved by
       adding an entry in the either the HKEY_LOCAL_MACHINE (to change the limit for all users) or
       HKEY_CURRENT_USER (for just the current user) section of the registry.

       Add the DWORD value heap_chunk_in_mb and set it to the desired memory limit in decimal MB. It is
       preferred to do this in Cygwin using the regtool program included in the Cygwin package. (For more
       information about regtool or the other Cygwin utilities, see the section called "Cygwin Utilities" or use
       the --help option of each util.) You should always be careful when using regtool since damaging your
       system registry can result in an unusable system. This example sets memory limit to 1024 MB:

         regtool -i set /HKLM/Software/Cygwin/heap_chunk_in_mb 1024
         regtool -v list /HKLM/Software/Cygwin

       Exit all running Cygwin processes and restart them. Memory can be allocated up to the size of the system
       swap space minus any the size of any running processes. The system swap should be at least as large as
       the physically installed RAM and can be modified under the System category of the Control Panel.

       Here is a small program written by DJ Delorie that tests the memory allocation limit on your system:

         main()
         {
           unsigned int bit=0x40000000, sum=0;
           char *x;
           while (bit > 4096)
           {
             x = malloc(bit);
             if (x)
             sum += bit;
             bit >>= 1;
           }
           printf("%08x bytes (%.1fMb)\n", sum, sum/1024.0/1024.0);
           return 0;
         }

       You can compile this program using:

         gcc max_memory.c -o max_memory.exe

       Run the program and it will output the maximum amount of allocatable memory.

SUPPORT

       If you have problems building or installing PDL, we suggest contacting the PDL users and developers via
       the PDL mailing lists.  See <https://pdl.perl.org/?page=mailing-lists> to get started. Links to
       searchable archives of the lists are available on the same page.

perl v5.40.1                                       2025-03-27                             PDL::InstallGuide(3pm)