Joshua Nathaniel Pritikin


ObjStore::Lib::PDL - Persistent PDL-compatible matrices


    use PDL::Lite;
    use ObjStore::Lib::PDL;

    begin 'update', sub {
      my $pdl = ObjStore::Lib::PDL->new($near,
                          { Datatype => PDL::float(), Dims => [3,3] });

      $pdl->slice(":,4")->clump(2) *= 2;  #or whatever
    die if $@;


The main thing of interest is that dimensions are arranged in memory such that the last dimension is the most packed. For example, in a PDL of dimensions [3,3,3] the following locations are sequential in memory:


Whereas the follow three elements are separated by relatively large gaps:


Be aware that this memory layout convention is dependent on the implementation of PDL. However, it is very unlikely to change.