Is there anyway to let dctimestep do out-of-core computation?

OK, there was a bug in dctimestep (also in rmtxop) that was causing an illegal call to malloc() for very large matrices – thanks for helping me identify this! The new code should update this weekend.

I have started the following command:

dctimestep -of cds.mtx hangzhou.smx > t.mtx

Which seems to be running so far. We’ll see if it finishes successfully. If it does, then I recommend the following command to transpose the results rather than relying on rmtxop:

rcollate -t t.mtx | getinfo -c rcalc -if3 -e ‘$1=47.4*$1 + 119.9*$2 + 11.6*$3’ > R.ill

Using rcollate rather than rmtxop should save quite a bit of time. You may wish to edit the output file header to change the NCOMP=3 line to NCOMP=1 and the FORMAT=float line to FORMAT=ascii if you wish to do further processing on it. If you don’t care about the header at all, you can take it out with:

rcollate -ho -t t.mtx | rcalc -if3 -e ‘$1=47.4*$1 + 119.9*$2 + 11.6*$3’ > R.ill

Also, the above commands will work much better under Unix, where rcollate should be able to map the file into memory rather than loading the whole thing. If you are under Windows, then you’ll need to use double-quotes rather than single-quotes in the rcalc -e argument.

2 Likes