I recommend the mapflex() in PDL::IO::FlexRaw instead
of the legacy mapfraw() in PDL::IO::FastRaw.  You might
not have enough virtual memory in a 1GB VM to make
use of memory mapped pdls.

--Chris


On Tue, Sep 9, 2014 at 1:08 PM, Diab Jerius <djer...@cfa.harvard.edu> wrote:
> Yet another alternative is PDL::IO::FastRaw's mapfraw function.  It uses
> disk space as the primary storage for the data, and automatically maps
> required chunks of data into memory via the OS's memory mapping capability.
> It would allow you to use piddles  larger than your memory, but there's a
> performance hit.  For example:
>
> use PDL;
> use PDL::IO::FastRaw;
>
> # create a gigantic piddle on disk
> $PDL::BIGPDL = 1;
> my $bigpdl = mapfraw( 'bigpdl', { Dims => [ 15_000, 15_000 ],
>                   Datatype => double,
>                   Creat => 1
>                 },
>             );
>
> $bigpdl .= sequence( $bigpdl->dims );
>
>
>
>
>
>> On Tue, Sep 9, 2014 at 9:28 AM, Chris Marshall <devel.chm...@gmail.com>
>> wrote:
>> > On Tue, Sep 9, 2014 at 5:30 AM, Ronak Agrawal <ronagra...@gmail.com>
>> > wrote:
>> >>
>> >> ...snip...
>> >>
>> >> I am using Virtual Machine with 1 GB Memory and therby I am getting Out
>> >> of
>> >> Memory for $a = sequnece 15000 * 15000
>> >> Is there any way to tackle it...Currently i need to compute a Spare
>> >> matrix
>> >> of 12000 * 8000 and find A'A ( A transpose A )
>> >
>> > If you have very small memory, you'll need to do something
>> > like a disk-to-disk computation.
>>
>> Take a look a PDL::DiskCache where you could use readflex/writeflex
>> to read/write the blocks of the matrix and then write a blocked matrix
>> multiply on the PDL::DiskCache object with the IO handled transparently.

_______________________________________________
Perldl mailing list
Perldl@jach.hawaii.edu
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to