Jason Martin on Sat, 27 Jan 2007 02:46:38 +0100

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: GMP build on OSX

--- Vincent Lefevre <vincent@vinc17.org> wrote:
> On 2007-01-26 17:03:16 +0100, Bill Allombert wrote:
> > Probably neither (directly). Blanking pages is the duty of the
> > kernel and occurs when memory is requested. It is probably caused by
> > the malloc library (normally part of the C library) . Maybe you
> > could try alternative malloc libraries or alternative OS.
> Page-zeroing should be done by the kernel for obvious security reasons.
> This means that whatever C library is used, pages will be zeroed. So,
> changing the malloc library probably won't have any effect, unless the
> default library does reads/writes or something else to make sure that
> the memory is really allocated (and not just address space like under
> Linux). But I don't know what the policy is under Mac OS X and I've
> never done any test about that.

However, so far the kernel has zeroed 10^13 bytes of memory for my single
process. Given that the process only has a memory footprint of ~150MB, that's
9,999,850MB of unnecessary zeroing of memory, causing a 20% performance hit.

When my processor goes idle, I'll try the non-GMP kernel, and see if it makes
any difference. I'll also see if alloca makes a difference in GMP.


I believe that the GMP source code implements memory management via a
set of macros: TMP_DECL, TMP_MARK, TMP_ALLOC, TMP_FREE, etc.  By
default on most platforms, these pickup the standard C library memoy
allocation functions during the configure stage.  However, you can
certainly edit the header files to include your own memory management

It might be reasonable in your case to write your own memory manager
(much the same way memory is handled in the Pari C library).  Allocate
one giant block at the beginning, and then treat it like a stack (with
periodic block copying to keep it somewhat contiguous).  In fact, you
can probably find code to do this somewhere out there on the web...
it's a common assignment for upper level CS classes.

Good Luck!!


Jason Worth Martin
Asst. Prof. of Mathematics
James Madison University
phone: (+1) 540-568-5101
fax: (+1) 540-568-6857

"Ever my heart rises as we draw near the mountains.
There is good rock here." -- Gimli, son of Gloin