Questions on x86-64/32 kernel w/ large arrays..
Brian Dobbins
brian.dobbins at yale.edu
Thu May 29 22:57:37 EDT 2003
Hi guys,
Could anyone with a lot more kernel knowledge than myself fill me in...?
Recalling that with 32-bit systems, the default linux behaviour was to
load system stuff around the 1GB mark, making it impossible to
(statically) allocate arrays larger than that without modifying the kernel
source.
(See: http://www.pgroup.com/faq/execute.htm#2GB_mem )
.. Now with the x86-64 kernel, as supplied by GinGin64, in
'include/asm-x86-64/processor.h', I see the following:
#define TASK_UNMAPPED_32 0xa0000000
#define TASK_UNMAPPED_64 (TASK_SIZE/3)
#define TASK_UNMAPPED_BASE \
((current->thread.flags & THREAD_IA32) ? TASK_UNMAPPED_32 :
TASK_UNMAPPED_64)
.. Does this mean that in 32-bit mode on the Opteron, I automatically
get bumped up from the 1GB limit to nearly 2.5GB (0xa0000000)? And, more
importantly, since the OS itself is in 64-bit mode, can I alter this
setting to allow myself to have very nearly (or all!) 4GB of space for a
static allocation for a 32-bit executable?
(Ordinarily I'd run in 64-bit mode, but someone I know is looking to
port their code from the old Digital FORTRAN to the Intel compiler, which
limits us to a 32-bit executable.)
Any ideas? Thoughts? Am I totally off base here? (I don't poke around
the kernel much!) I'll most likely send this to the kernel lists if I
don't get any luck here, but since it's not urgent, I thought I'd ask the
very knowledgeable people here first. :-)
Cheers,
- Brian
_______________________________________________
Beowulf mailing list, Beowulf at beowulf.org
To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf
More information about the Beowulf
mailing list