Ubuntu binary package problem
Dear all,
I'm sending to the list a question mainly directed to Carlo, anyway. I've
installed the ifeffit/horae packages on a Ubuntu 6.10 "Edgy Eft"
distribution from Carlo repositories. Here the problems:
mauro@stalker3:~$ ifeffit
Killed
mauro@stalker3:~$ athena
Can't load '/usr/lib/perl5/auto/Ifeffit/Ifeffit.so' for module Ifeffit:
/usr/lib/perl5/auto/Ifeffit/Ifeffit.so: cannot map zero-fill pages: Cannot
allocate memory at /usr/lib/perl/5.8/DynaLoader.pm line 225.
at /usr/bin/athena line 66
Compilation failed in require at /usr/bin/athena line 66.
BEGIN failed--compilation aborted at /usr/bin/athena line 70.
mauro@stalker3:~$ artemis
Can't load '/usr/lib/perl5/auto/Ifeffit/Ifeffit.so' for module Ifeffit:
/usr/lib/perl5/auto/Ifeffit/Ifeffit.so: cannot map zero-fill pages: Cannot
allocate memory at /usr/lib/perl/5.8/DynaLoader.pm line 225.
at /usr/bin/artemis line 52
Compilation failed in require at /usr/bin/artemis line 52.
BEGIN failed--compilation aborted at /usr/bin/artemis line 56.
It seems related to memory allocation and I have to say that I'm having
these problems only on low memory machines (192 Mb of RAM). Anyway I don't
understand why Ifeffit is killing itself and how to obtain more information
on what is happening with the libraries... well, I wait for your
interesting answers.
Mauro
--
Mauro Rovezzi
On Saturday 24 February 2007 16:45, M. Rovezzi wrote:
It seems related to memory allocation and I have to say that I'm having these problems only on low memory machines (192 Mb of RAM). Anyway I don't understand why Ifeffit is killing itself and how to obtain more information on what is happening with the libraries... well, I wait for your interesting answers.
Mauro, I suspect that Ifeffit's killing itself because it is written in fortran 77 and does not have dynamic memory allocation. The solution is pretty "hands-on". On that machine, you'll need to recompile Ifeffit from source after modifying source code to use less memory. Go to 'src/lib/consts.h' and change several parameters to smaller values. Some suggestions: mdata = 8 maxsca = 16384 mconst = 16384 maxarr = 4096 mpaths = 512 mfffil = 512 Making some of the more memory consuming constants smaller should get things working on you low mem machine. But be aware that you will run into memory limitations very quickly in Athena and Artemis. For instance, with the parameters suggested above, Athena could run out of memory with as few as 20 or 30 groups in the group list. HTH, B -- Bruce Ravel ---------------------------------------------- bravel@anl.gov Molecular Environmental Science Group, Building 203, Room E-165 MRCAT, Sector 10, Advance Photon Source, Building 433, Room B007 Argonne National Laboratory phone and voice mail: (1) 630 252 5033 Argonne IL 60439, USA fax: (1) 630 252 9793 My homepage: http://cars9.uchicago.edu/~ravel EXAFS software: http://cars9.uchicago.edu/~ravel/software/
Hi Mauro and Bruce:
Go to 'src/lib/consts.h' and change several parameters to smaller values. Some suggestions:
mdata = 8 maxsca = 16384 mconst = 16384 maxarr = 4096 mpaths = 512 mfffil = 512
Making some of the more memory consuming constants smaller should get things working on you low mem machine. But be aware that you will run into memory limitations very quickly in Athena and Artemis. For instance, with the parameters suggested above, Athena could run out of memory with as few as 20 or 30 groups in the group list.
There are two ways to do this in a package. 1. I can make an ifeffit-lite package and add that to the repository. This may take a bit of time and I am not sure how much use it will be as most modern machines have enough memory for the current binaries. In addition as Bruce points out the reduced memory alloctions will severely limit the utility of the program. 2. You can "roll your own" package. I am away from home and a fast internet connection right now but I could post a short article on how to do this on the wiki or elsewhere. I hesitate to just put it in this email because I might forget a step and waste your time when there is a problem. Carlo
Bruce, Carlo, Thank you very much for the answers. Problem solved! I will just add some comments: Quoting Carlo:
Quoting Bruce:
Go to 'src/lib/consts.h' and change several parameters to smaller values. Some suggestions:
mdata = 8 maxsca = 16384 mconst = 16384 maxarr = 4096 mpaths = 512 mfffil = 512
Perfect, I've compiled Ifeffit by hand and now is working fine with memory limitations! I was just testing some scripts on an old machine and I wanted to add some ifeffit functions...
1. I can make an ifeffit-lite package and add that to the repository.
I agree with you that is *not necessary* to create (and maintain!) an ifeffit-lite binary package. In fact, this kind of questions are from my point of view the possibility to understand a little more on the ifeffit code.
2. You can "roll your own" package.
I can find many Howtos on the creation of Debian packages, so please don't
waste your time in rewriting these instructions.
Have a nice day!
Mauro
--
Mauro Rovezzi
participants (3)
-
Bruce Ravel
-
M. Rovezzi
-
segre@agni.phys.iit.edu