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