RE: Very big NONMEM
We have no direct experience with such a large value for MAXIDS but one
can try to decrease the NO value (500 in SIZES.big)
to a value equal to the maximum number of data records for a given
individual if less than 500.
Editing SIZES.f90 does not destroy the defaults .reg and .big. These
exist as separate files and may be copied to SIZES.f90 at the time
of installation depending upon the SIZES option, 'reg', 'big' or 'same'.
The 'same' option uses SIZES.f90. One can edit SIZES.f90 during an
original
installation at the second pause or reinstall from a previous
installation using 'same' to preserve a previously edited SIZES.f90.
(See Section IV. Re-installing NONMEM 7 with changes in the following
document
ftp://nonmem.iconplc.com/Public/nonmem7/Release_Notes_Plus/Release_Notes
_1OCT2009.pdf)
NONMEM 8 will attempt to size many arrays using dynamic allocation or
based on information provided by NMTRAN. It will also allow users to
specify values on a new NMTRAN record, $SIZES. The PREDPP routines that
are dependent on these values will be recompiled
for the specific problem using static allocation to avoid a decrease in
performance.
Tom
Quoted reply history
________________________________
From: [email protected] [mailto:[email protected]]
On Behalf Of Xavier Woot de Trixhe
Sent: Friday, October 08, 2010 8:25 AM
To: NONMEM
Subject: [NMusers] Very big NONMEM
Hi,
NONMEM7 is limited to 15000 individuals (in big install), which is a
lot but not enough for a project....
A quick look at the SIZES_reg & SIZES_big files showed the
following:
!CTL
! MAXIDS: MAX. NO. OF INDIVIDUALS IN DATA SET
PARAMETER (MAXIDS=15000)! TL 4/22/09
Setting this to 100k I hoped for the best... Reinstalling nonmem
with recompilation (Intel fortran 11 on Linux x64) everything goes
smoothly
Unfortunately the very last steps gives a nasty error message in
function `pk_` (PrGlobal.o). (see Appendix A)
After some googling I found this:
http://software.intel.com/en-us/articles/avoiding-relocation-errors-when
-building-applications-with-large-global-or-static-data-on-intel64/
In essence there is more than 2Gig allocated for data and adding the
-mcmodel=medium option to the setup (SESTU7 line 358) should solve the
issue...
Unfortunately this only moved the issue to function `output_open_'
(NMDATA.o). (see Appendix B)
Now I am out of ideas...
So here are my questions, if anyone can help it would be great
1) How do I compute the size of the data array? MAXID * NO * ??
* sizeof( a number )
2) Why does output_open fail?
3) Has anyone done this before?
K. Regards,
Xavier
PS: In SETUP7 only allows SIZES_reg and SIZES_big to replace SIZES.f90
It might be nice to allow any SIZES_xxx as template for SIZES.f90 (not
to mess up the defaults)
Is disabling lines 112-118 and changing line 275 onwards to the
following code enough to do the trick?
if [ -s ./resource/SIZES_$s ]; then
echo Using resource/SIZES_$s
cp resource/SIZES_$s resource/SIZES.f90
else
if [ -e resource/SIZES.f90 ]
then
echo Using existing resource/SIZES.f90
else
echo Using resource/SIZES_reg
cp resource/SIZES_reg resource/SIZES.f90
fi
fi
Appendix A:
Testing the installation. Commands are
cd /opt/NONMEM/7.1.0/huge_i11.1/run
./nmfe7 CONTROL5 REPORT5.txt
If the run is successful, file REPORT5.txt will be created.
WARNINGS AND ERRORS (IF ANY) FOR PROBLEM 1
(WARNING 2) NM-TRAN INFERS THAT THE DATA ARE POPULATION.
(WARNING 43) THE $PK BLOCK REQUESTS "CALL ONCE PER INDIVIDUAL RECORD",
BUT
DATA ITEMS ARE USED IN THE $PK BLOCK. VALUES OF THESE DATA ITEMS
SUBSEQUENT TO THOSE FROM THE FIRST EVENT RECORD WILL BE IGNORED. IF
THIS
IS NOT APPROPRIATE, THE CALL DATA ITEM CAN BE USED TO OBTAIN ADDITIONAL
CALLS, OR $PK'S CALLING PROTOCOL SHOULD BE CHANGED.
CREATING MUMODEL ROUTINE...
/tmp/ifortNDVtJq.o: In function `pk_':
FSUBS.f90:(.text+0x56): relocation truncated to fit: R_X86_64_PC32
against symbol `procm_int_mp_pnewif_' defined in COMMON section in
/opt/NONMEM/7.1.0/huge_i11.1/resource/resource.a(PrGlobal.o)
FSUBS.f90:(.text+0x6f): relocation truncated to fit: R_X86_64_32 against
symbol `nmprd_real_mp_eta_' defined in COMMON section in
/opt/NONMEM/7.1.0/huge_i11.1/resource/resource.a(Global.o)
FSUBS.f90:(.text+0x84): relocation truncated to fit: R_X86_64_PC32
against symbol `nmprd_int_mp_iquit_' defined in COMMON section in
/opt/NONMEM/7.1.0/huge_i11.1/resource/resource.a(Global.o)
FSUBS.f90:(.text+0x97): relocation truncated to fit: R_X86_64_PC32
against symbol `nmprd_real_mp_eta_' defined in COMMON section in
/opt/NONMEM/7.1.0/huge_i11.1/resource/resource.a(Global.o)
FSUBS.f90:(.text+0xab): relocation truncated to fit: R_X86_64_PC32
against symbol `nmprd_real_mp_eta_' defined in COMMON section in
/opt/NONMEM/7.1.0/huge_i11.1/resource/resource.a(Global.o)
FSUBS.f90:(.text+0xd2): relocation truncated to fit: R_X86_64_PC32
against symbol `nmprd4p_mp_ka_' defined in COMMON section in
/tmp/ifortNDVtJq.o
FSUBS.f90:(.text+0xe1): relocation truncated to fit: R_X86_64_PC32
against symbol `nmprd4p_mp_a00071_' defined in COMMON section in
/tmp/ifortNDVtJq.o
FSUBS.f90:(.text+0xf8): relocation truncated to fit: R_X86_64_PC32
against symbol `nmprd_real_mp_eta_' defined in COMMON section in
/opt/NONMEM/7.1.0/huge_i11.1/resource/resource.a(Global.o)
FSUBS.f90:(.text+0x102): relocation truncated to fit: R_X86_64_PC32
against symbol `nmprd4p_mp_k_' defined in COMMON section in
/tmp/ifortNDVtJq.o
FSUBS.f90:(.text+0x10e): relocation truncated to fit: R_X86_64_PC32
against symbol `nmprd4p_mp_a00072_' defined in COMMON section in
/tmp/ifortNDVtJq.o
FSUBS.f90:(.text+0x119): additional relocation overflows omitted from
the output
No nonmem execution.
Appendix B:
Testing the installation. Commands are
cd /opt/NONMEM/7.1.0/huge_i11.1/run
./nmfe7 CONTROL5 REPORT5.txt
If the run is successful, file REPORT5.txt will be created.
WARNINGS AND ERRORS (IF ANY) FOR PROBLEM 1
(WARNING 2) NM-TRAN INFERS THAT THE DATA ARE POPULATION.
(WARNING 43) THE $PK BLOCK REQUESTS "CALL ONCE PER INDIVIDUAL RECORD",
BUT
DATA ITEMS ARE USED IN THE $PK BLOCK. VALUES OF THESE DATA ITEMS
SUBSEQUENT TO THOSE FROM THE FIRST EVENT RECORD WILL BE IGNORED. IF
THIS
IS NOT APPROPRIATE, THE CALL DATA ITEM CAN BE USED TO OBTAIN ADDITIONAL
CALLS, OR $PK'S CALLING PROTOCOL SHOULD BE CHANGED.
CREATING MUMODEL ROUTINE...
/opt/NONMEM/7.1.0/huge_i11.1/nm/nonmem.a(ifortlinux.o): In function
`output_open_':
ifortlinux.f:(.text+0x17): relocation truncated to fit: R_X86_64_PC32
against symbol `nmdata_mp_iun_' defined in COMMON section in
/opt/NONMEM/7.1.0/huge_i11.1/resource/resource.a(NMDATA.o)
/opt/NONMEM/7.1.0/huge_i11.1/nm/nonmem.a(ifortlinux.o): In function
`output_open2_':
ifortlinux.f:(.text+0xfb): relocation truncated to fit: R_X86_64_32S
against symbol `nmdata_mp_iun_' defined in COMMON section in
/opt/NONMEM/7.1.0/huge_i11.1/resource/resource.a(NMDATA.o)
/opt/intel/Compiler/11.1/056/lib/intel64/libifcore.a(for_diags_intel.o):
In function `for__io_return':
for_diags_intel.c:(.text+0xcb): relocation truncated to fit: R_X86_64_32
against `tmp_buf'
for_diags_intel.c:(.text+0xf4): relocation truncated to fit: R_X86_64_32
against `tmp_buf'
for_diags_intel.c:(.text+0x64d): relocation truncated to fit:
R_X86_64_PC32 against symbol `for__user_iomsg_len' defined in .bss
section in
/opt/intel/Compiler/11.1/056/lib/intel64/libifcore.a(for_diags_intel.o)
for_diags_intel.c:(.text+0x654): relocation truncated to fit:
R_X86_64_PC32 against symbol `for__user_iomsg_buf' defined in .bss
section in
/opt/intel/Compiler/11.1/056/lib/intel64/libifcore.a(for_diags_intel.o)
for_diags_intel.c:(.text+0x892): relocation truncated to fit:
R_X86_64_PC32 against symbol `for__user_iomsg_len' defined in .bss
section in
/opt/intel/Compiler/11.1/056/lib/intel64/libifcore.a(for_diags_intel.o)
for_diags_intel.c:(.text+0x899): relocation truncated to fit:
R_X86_64_PC32 against symbol `for__user_iomsg_buf' defined in .bss
section in
/opt/intel/Compiler/11.1/056/lib/intel64/libifcore.a(for_diags_intel.o)
for_diags_intel.c:(.text+0x9f7): relocation truncated to fit:
R_X86_64_PC32 against symbol `message_catalog' defined in COMMON section
in
/opt/intel/Compiler/11.1/056/lib/intel64/libifcore.a(for_diags_intel.o)
for_diags_intel.c:(.text+0xa38): relocation truncated to fit:
R_X86_64_PC32 against `tmp_ptr'
for_diags_intel.c:(.text+0xab9): additional relocation overflows omitted
from the output
No nonmem execution.
You should now compare REPORT5.txt vs. REPORT5IDS.txt
Values should be similar.
E.g., the following should be identical:
grep #OBJV: REPORT5.txt
grep: REPORT5.txt: No such file or directory
grep #OBJV: REPORT5IDS.txt
--
---
Xavier Woot de Trixhe, Ir
Exprimo NV
Tel:+32 (0)485 033872
E-mail: [email protected]
Web: www.exprimo.com
This e-mail is confidential. It is also privileged or otherwise
protected by work product immunity or other legal rules. The information
is intended to be for use of the individual or entity named above. If
you are not the intended recipient, please be aware that any disclosure,
copying, distribution or use of the contents of this information is
prohibited. You should therefore delete this message from your computer
system. If you have received the message in error, please notify us by
reply e-mail. The integrity and security of this message cannot be
guaranteed on the Internet.
Thank you for your co-operation.
________________________________
This e-mail message has been scanned for Viruses by Norman Virus Control
and it's Content by MailMarshal