ࡱ> zl[ Xbjbj <jjFRMl$>>>>,,>s$????^@C]aMc s s s s s s s$t v/sd'WC]dd/sl?^@Dsllld?^@ sld sllp:q,0q^@? @c,G5>dq q4Zs0sq `wl`wql Shared Memory in the HP-UX 32-bit Environment by Jeff Kleckley Hewlett-Packard Company 20 Perimeter Summit Blvd., MS 907 Atlanta, GA 30319-1417 jeff_kleckley@hp.com Introduction This paper will describe the flexibility of virtual memory in the HP-UX 32-bit environment. Specifically, how this flexibility relates to shared memory. Various 32-bit virtual memory limitations will be discussed as well as the methods used to overcome them. However, before these methods are discussed, a description of the HP-UX 32-bit virtual memory addressing is necessary. Each process in HP-UX views a 4Gb address space which is divided into 4 1Gb quadrants. HP-UX accomplishes this with virtual memory addressing. Each process has its own view of how virtual memory is laid out independent of the underlying physical memory. HP-UX creates a mapping of a process view of virtual memory and the actual physical memory. This mapping is managed by HP-UX and implemented in the underlying hardware so it can handle the address translation from virtual memory adresses to physical memory addresses. The upper bound for all the virtual memory on the system is the amount of total swap space (pseudo swap + device swap + filesystem swap). The virtual address space layout for HP-UX uses 4 quadrants which observe several kernel parameters. For a 32-bit address space, each quadrant has a hard limit of 1Gb regardless of available virtual memory (swap space). Depending on their memory needs, many 32-bit applications will find the standard virtual address layout to be restrictive. However, HP-UX allows for flexibility in regards to the virtual address space for 32-bit processes. While HP-UX always adhere to the 4 quadrant model, how these quadrants are used can be changed by a process's magic number. The magic numbers we will discuss are: EXEC_MAGIC SHARE_MAGIC DEMAND_MAGIC SHMEM_MAGIC When an executable is linked using any of these magic numbers, this tells the kernel to select a different memory map. How do you use these magic numbers? Better yet, how do you check to see if you did it correctly? Before answering these questions, a little background on HP-UX memory addressing is in order. Background The process address space is first limited by the amount of available virtual memory (total swap space) which is observed with swapinfo tam. The address space layout for HP-UX uses 4 quadrants which observe several kernel parameters that act as soft limits:   PID x PID y PID z For a 32-bit address space, each quadrant has a hard limit of 1Gb regardless of available virtual memory (swap space). For a 64-bit address space, each quadrant is hard limited to 4Tb. With 64-bit addressing, programs will be able to access a maximum of 4Tb of text, 4Tb of private data, and 8Tb of shared objects. Current 64-bit programs use nowhere near 4Tb in any of the four quadrants in a 64-bit address space; however, many programs using the 32-bit address space find the 1Gb quadrants to be a limitation. Therefore, the rest of this document refers to a 32-bit address space and ways to work around its limitations. HP-UX allows for flexibility in regards to the virtual address space for 32-bit processes. While HP-UX always adhere to the 4 quadrant model, how these quadrants are used can be changed by a process's magic number. If you check the magic(4) man page, you will see the following table documenting these magic numbers among others: #define EXEC_MAGIC 0x107 /* normal executable */ #define SHARE_MAGIC 0x108 /* shared executable */ #define DEMAND_MAGIC 0x10B /* demand-load executable */ SHARE_MAGIC Executables With HP-UX, the magic numbers for SHARE_MAGIC and DEMAND_MAGIC executables have the same meaning. The address space for a process is laid out with a maximum of 1Gb of text, 1Gb of data, 1.75Gb of shared items (shared libraries and shared memory). The last .25Gb is reserved for IO. So the memory map looks like this:  I/O SHARED OBJECT area 1 SHARED OBJECT area 2 DATA (private)TEXT Code Example It is important to remember that the cc(1) compiler will call the linker ld(1) and assign a magic number of 108 or SHARE_MAGIC by default. Construct a simple c program source: $ more test.c main(){} Compile using defaults: $ cc test.c Use chatr to see the characteristics of the resulting a.out file: $ chatr a.out |more a.out: shared executable Check the resulting a.out file with odump and see that the magic number is 108: $ /usr/contrib/bin/odump a.out |head Header record for : a.out version: 85082112 system id: 0210 (PA-RISC 1.1) magic number: 0108 Many applications will have some problems with this layout. There is only one quadrant available for the private data of a process and it is limited to 1Gb. Also, there is only ~1.75Gb of shared space available for the whole system. These limitations are further magnified by today's large memory systems. Imagine buying a system with 4Gb of memory and having the operating system limit several Oracle database instances to only ~1.75Gb total shared memory. Because applications were limited to only 1Gb of private data space, a magic number, EXEC_MAGIC, was introduced to allow for larger data areas.... EXEC_MAGIC Executables When an executable uses the EXEC_MAGIC magic number, this tells the kernel to select a different memory map. Since the text of a program does not change at runtime and it probably does not use anywhere near the full 1Gb of the text quadrant, then it is safe to start the private data area immediately on top of the program's text in the text area. This allows the data area to make use of the normally wasted virtual address space above the process text in the first quadrant. Given a small text area, an EXEC_MAGIC executable data space can reach about 1.9Gb. So the memory map for an EXEC_MAGIC executable will look like this:  I/O SHARED OBJECT area 1 SHARED OBJECT area 2 DATA (private)DATA (private) & TEXT Code Example How to set the magic number to EXEC_MAGIC? The program must be recompiled with an option passed to the linker (ld) to specify the magic number to EXEC_MAGIC. The ld(1) man page states that this is done with the -N option: -N Generate an executable output file with file type EXEC_MAGIC. Now lets recompile our example program and pass this option to the linker: $ cc -Wl,-N test.c What does chatr(1) say about the resulting a.out file? $ chatr a.out |more a.out: normal executable The a.out file is further checked with odump: $ /usr/contrib/bin/odump a.out |head Header record for : a.out version: 85082112 system id: 0210 (PA-RISC 1.1) magic number: 0107 SHMEM_MAGIC Executables Because a 32-bit HP-UX system is further limited to only 1.75Gb of total shared memory space, applications that rely on shared memory (ie: databases) are further restricted. Conversely, 64-bit processes running on 64-bit HP-UX do not see this restriction since they have approximately 8Tb of space available for shared objects. So another magic number, SHMEM_MAGIC, was introduced to allow for a larger shared memory space for 32-bit processes. The following patches are required to use this magic number on 10.20 systems: PHKL_16751 (s800) PHKL_16750 (s700) PHSS_17903 Since many applications that use large amounts of shared memory rarely use large amounts of private memory they are likely to see large amounts of wasted address space in both of the first two quadrants. The SHMEM_MAGIC magic number causes all of the program's text and data to be fitted into the first quadrant. The second quadrant now becomes a third area for holding shared memory and is only available for programs compiled using SHMEM_MAGIC. Using SHMEM_MAGIC it is then possible for a program to access ~2.75Gb of shared memory. The memory map for an SHMEM_MAGIC executable will look like this:  I/O SHARED OBJECT area 1 SHARED OBJECT area 2SHARED OBJECT area 3DATA (private) & TEXT Shared memory usage can be checked with ipcs mob. A process will request a shared memory segment with the shmget(2) function call. Two things to remember: shared memory segments must be made of contiguous memory pages. no single shared memory segment can be larger than a quadrant boundary or 1Gb. Code Example We use chatr(1) instead of a recompile/relink to set SHMEM_MAGIC for an executable. However, its important to remember: an executable must have a magic number of EXEC_MAGIC before using chatr(1) to change it's magic number further to SHMEM_MAGIC. Lets try granting our example program set with the default SHARE_MAGIC the ability to access 2.75Gb shared memory. $ cc test.c $ chatr -M a.out .... chatr:(error) - only EXEC_MAGIC files can be made SHMEM_MAGIC So the error simply confirms that the executable has a magic number of 108 (SHARE_MAGIC) when it needs to have a magic number of 107 (EXEC_MAGIC). Lets follow the previous code example and recompile our program again using EXEC_MAGIC. $ cc -Wl,-N test.c Now use chatr to further change the magic number to SHMEM_MAGIC: $ chatr -M a.out Checking the a.out file now with chatr(1) and odump: $ chatr a.out |more a.out: normal SHMEM_MAGIC executable $ /usr/contrib/bin/odump a.out |head Header record for : a.out version: 85082112 system id: 0210 (PA-RISC 1.1) magic number: 0109 This indicates that the executable is set correctly to take advantage of 2.75Gb shared memory! HP-UX 11.x Memory Windows All 32-bit applications in the system are limited to a total of 1.75Gb of global shared memory, 2.75Gb if compiled with SHMEM_MAGIC. This limitation applies to 32-bit applications running in either 32-bit or 64-bit HP-UX 11.0. Many sites running multiple instances of popular 32-bit database applications found this global space used for shared resources to be limiting. Even with SHMEM_MAGIC exectuables that allow up to 2.75Gb of shared memory, applications on systems with extremely large amounts of memory found this a restriction. Memory windows is an 11.x only feature that allows 32-bit applications to get around the 1.75Gb/2.75Gb limitation for global shared memory. A 32-bit process can create a unique memory window for shared objects such as shared memory. Other 32-bit processes can attach to this window to access these shared objects. This allows each cooperating process to create 1-2 gigabytes of shared resources without exhausting the system-wide global space. The 4th quadrant still remains globally visible to all processes for shared libraries and shared objects requiring access by all processes, no matter what memory window they are in. The ability to create a unique memory window removes the system-wide 1.75Gb/2.75Gb global shared memory limitation. So the memory layout for SHARE_MAGIC processes using memory windows will look like this:    EMBED Word.Picture.8   EMBED Word.Picture.8   PID x PID y PID z The memory layout for SHMEM_MAGIC processes using memory windows:   EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8  PID x PID y PID z While memory windows allow for more than 1.75Gb/2.75Gb of system-wide global shared memory, it does not extend how much shared resources a single process can create! SHARED_MAGIC executables are still limited to 1.75 gigabytes and SHMEM_MAGIC executables are limited to 2.75 gigabytes themselves. But different applications, or distinct instances of a single application, can attach to different memory windows and consume more than than 1.75Gb/2.75Gb of system-wide global shared memory. For more information on the concepts and implementation of memory windows, see the memory windows white paper found at /usr/share/doc/mem_wndws.txt on 11.0 systems. Also, it is a good idea to consult with your application vendor for any known issues with HP-UX memory windows before attempting to use them. What is required to run memory windows? HP-UX 11.x 32-bit or 64-bit installation Two patches were released to enable memory windows: PHKL_13810 PHKL_13811 These two patches have since been superseded. The current list is: PHKL_18543 PHCO_19047 PHCO_20179 PHKL_20995 PHCO_20443 The kernel tunable, max_mem_window, must be set to the desired number of virtual memory windows. The default value is 0. max_mem_window represents the number of memory windows beyond the global default window. Setting max_mem_window to one creates a single memory window to accompany the existing global memory window. With a value of one there are a total of two memory windows, one default and one user defined. Setting max_mem_window to two would produce a total of three memory windows, the default and two user defined. Setting max_mem_window to 0 leaves only one memory window, the default or global memory window. The /etc/services.window file must be created. A group of processes wishing to use a common memory window must associate themselves with the unique key for that window. The file /etc/services.window is a centrally located file used so applications can avoid hard coding id's in startup or control scripts. This file will have entries in the format of . Each string/key pair must be unique. A sample /etc/services.window file: # # /etc/services.window format: # # Name informix 20 oracle 30 sybase 40 database1 50 database2 60 database3 70 How do we start a process in a memory window? The getmemwindow(1) command was introduced to extract name/window_key from the /etc/services.window file. The setmemwindow(1) command is used to change the window id of a running process or start a process in a specific memory window. The startup for an application would use getmemwindow to identify the window id for the application to use and setmemwindow to execute the application within that window. For example, the startup script may read something like this: $ cat startDB1.sh WinId=$(getmemwindow database1) setmemwindow i $WinId /home/user/executable So based on our /etc/services.window file, the startDB1 executable will be started using a memory window with an ID of 50. How can we tell if the memory window was declared and what shared memory segments are found in that window? The memwin_stats is the command to display information about shared memory segments and the memory window being used. # ./memwin_stats -m Shared Memory: T ID KEY MODE OWNER GROUP UserKey KernId m 0 0x2f100002 --rw------- root sys Global 0 m 1 0x411c36c1 --rw-rw-rw- root root Global 0 m 2 0x4e0c0002 --rw-rw-rw- root root Global 0 m 3 0x412041c9 --rw-rw-rw- root root Global 0 m 5 0x06347849 --rw-rw-rw- root root Global 0 m 19806 0x52140128 --rw-r-r-- root sys 50 1 In this example, we see the shared memory segments associated with the global default memory window. We also see there is a shared memory segment associated with a user defined memory window which has a window ID of 50. Code Example Our program creates and attaches to a 1K shared memory segment. It takes a user string as an argument and writes this string to the shared memory segment. Also, the key that is generated to assign to the shared memory segment is sent to stdout. We execute our program using a startup script to implement memory windows: # cat startDB1.sh WinId=$(getmemwindow database1) setmemwindow i $WinId /home/user/startDB1 Hello World! # ./startDB.sh writing to segment: "Hello World!" Key is 1377042553 # ./memwin_stats -m Shared Memory: T ID KEY MODE OWNER GROUP UserKey KernId m 0 0x2f100002 --rw------- root sys Global 0 m 1 0x411c36c1 --rw-rw-rw- root root Global 0 m 2 0x4e0c0002 --rw-rw-rw- root root Global 0 m 3 0x412041c9 --rw-rw-rw- root root Global 0 m 1204 0x52140079 --rw-r--r-- root sys 50 1 We see a shared memory segment with a key of 0x52140079 (1377042553 decimal) using a memory window with ID 50. Now we edit several copies of the startup script and our program then execute them. The copied programs will have a slight change so that it uses a different key and therefore generates a new segment. We will also change the startup script to specify different user IDs of database2 and database3 for getmemwindow(1) so that the new shared memory segments are attached to different memory windows. # ./startDB2.sh writing to segment: "DB2 says Bon Jour!" Key is 1377042733 # ./startDB3.sh writing to segment: "DB3 says Ola!" Key is 1377042734 # ./memwin_stats -m Shared Memory: T ID KEY MODE OWNER GROUP UserKey KernId m 0 0x2f100002 --rw------- root sys Global 0 m 1 0x411c36c1 --rw-rw-rw- root root Global 0 m 2 0x4e0c0002 --rw-rw-rw- root root Global 0 m 3 0x412041c9 --rw-rw-rw- root root Global 0 m 1404 0x52140079 --rw-r--r-- root sys 50 1 m 205 0x5214012d --rw-r--r-- root sys 60 2 m 10206 0x5214012e --rw-r--r-- root sys 70 3 # ipcs -mob IPC status from /dev/kmem as of Fri May 5 16:09:24 2000 T ID KEY MODE OWNER GROUP NATTCH SEGSZ Shared Memory: m 0 0x2f100002 --rw------- root sys 8 1286144 m 1 0x411c36c1 --rw-rw-rw- root root 0 348 m 2 0x4e0c0002 --rw-rw-rw- root root 1 31040 m 3 0x412041c9 --rw-rw-rw- root root 1 8192 m 1404 0x52140079 --rw-r--r-- root sys 0 1024 m 205 0x5214012d --rw-r--r-- root sys 0 1024 m 10206 0x5214012e --rw-r--r-- root sys 0 1024 In our example, the three shared memory segments are 1K in size apiece, but each of them could be 1Gb in size as long as they were created using memory windows. The ipcs(1) output shows NATTCH as 0 for the three segements because our sample program detaches from the segment after creating and writing to it. The example program source: /* ** startDB1 -- read and write to a shared memory segment */ #include #include #include #include #include #include #define SHM_SIZE 1024 /* make it a 1K shared memory segment */ int main(int argc, char *argv[]) { key_t key; int shmid; char *data; int mode; if (argc > 2) { fprintf(stderr, "usage: startDB1 [data_to_write]\n"); exit(1); } /* make the key: */ if ((key = ftok("/home/user/startDB1.c", 'R')) == -1) { perror("ftok"); exit(1); } printf("Key is \"%d\"\n", key); /* connect to (and possibly create) the segment: */ if ((shmid = shmget(key, SHM_SIZE, 0644 | IPC_CREAT)) == -1) { perror("shmget"); exit(1); } /* attach to the segment to get a pointer to it: */ data = (char *) shmat(shmid, 0, 0); if (data == (char *)(-1)) { perror("shmat"); exit(1); } /* read or modify the segment, based on the command line: */ if (argc == 2) { printf("writing to segment: \"%s\"\n", argv[1]); strncpy(data, argv[1], SHM_SIZE); } else printf("segment contains: \"%s\"\n", data); /* detach from the segment: */ if (shmdt(data) == -1) { perror("shmdt"); exit(1); } return 0; } The only change we make to the copies startDB2.c and startDB3.c is to specify a different file name in the make the key function so that these programs create a segment with a different segment ID. Note that if any of these programs are run a second time and the filename is the same for the make the key function, it will not create a new segment but instead it will attach and modify the segment that already exists with the same key. The startup scripts for the example programs: # more startDB1.sh WinId=$(getmemwindow database1) setmemwindow -i $WinId /home/user/startDB1 "Hello World!" # more startDB2.sh WinId=$(getmemwindow database2) setmemwindow -i $WinId /home/user/startDB2 "DB2 says Bon Jour!" # more startDB3.sh WinId=$(getmemwindow database3) setmemwindow -i $WinId /home/user/startDB3 "DB3 says Ola!" 4 Gb 4 Gb 0 Gb 2 Gb 3 Gb 1 Gb 3 Gb 2 Gb 0 Gb 1 Gb IO Shared Memory Shared Libraries Shared MMFs TEXT DATA Shared MMFs DATA TEXT Shared Libraries Shared Memory IO 1 Gb 0 Gb 2 Gb 3 Gb 4 Gb TEXT DATA Shared MMFs Shared Libraries Shared Memory IO Shared Memory  EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8   EMBED Word.Picture.8  H B O  )+BDTV_l5NZ$ 6'Jy*########$$$ $b$k$i%v%&&&D'3(F(((() *&*Y+jUmHnHu5OJQJ] 89:;<?MefFVXHIXY G H T ` m y z    YZ\  $$Ifa$`  '()lDdX$$Iflt-  04 la $$Ifa$X$$Ifl-  04 la )29@ABISHX$$Ifl-  04 la $$Ifa$ST[\]^_l DBBBBX$$Ifl-  04 la $$Ifa$X$$Ifl-  04 la lm,56NZ[$Icd 78lX$$Ifl-  04 la $$Ifa$dDHX$$Ifl-  04 la $$Ifa$X$$Iflt-  04 la dDX$$Ifl-  04 la X$$Ifl-  04 la $$Ifa$()TU  V|}(/JKy+,,:!;!M!_!j!###########lX$$Ifl-  04 la $$Ifa$####$$$$`D`X$$Ifl-  04 la $$Ifa$X$$Iflt-  04 la $$$%$/$1$6$7$hDX$$Ifl-  04 la X$$Ifl-  04 la $$Ifa$7$8$9$:$$%g%h%i%v%w%o&p&&&''E'F'''3(F(G(((((( & F(())7)Q)R)m))) * *&*'*,,//////////////Y+~-//////////////////[0\0z0~0000000000000000000011~pjK$< UVmHnHuj B*Uphj9$< UVmHnHujB*UphjtB*Uph"j"1< OJQJUVmHnHu B*phjHB*Uph jU jU"j-< OJQJUVmHnHu jHUjUmHnHu0J5B*ph,//////////////0[0]0^0_0`0a0b0c0d0e0z0000`111!1"191:1;1<1b122235{<<1A>ABB5CIC GGVGfGGGIJpWqWWWWWWWWWWWWWWWWƹƹ穟瑇jVB*Uphj|< UVmHnHujB*UphjΉ< UVmHnHu50J5B*OJQJphB*OJQJphjDB*Uphj[$< UVmHnHu B*phjHB*UphjrB*Uph/0=1a1b1c1d1O3P3444 55#5$5t55555588999` & F^` & F`9::::(:7:F:U:d:s:t:::z<{<<<<<X=Y===<>=>Q>`>>`>>6?}?? @R@S@0A1A>A?A6B7BBBBBBB!C4C5CICXCCC.DuDDDEEsEtE G GGCGUGVGfGGGGGGHOHHH$IkIIIIIJ@JJJJJK\KKK%LhLiLMMMMMMMMMMN&N:NQNfN{N|NNNNNNNNOOO1OoOOOOOOOP P.P/PgPPPPPPQ#\`!TxD(`^O<># @0hWX"x͔AKQPV+ТK *m x+ ݵ6ЫǞ"= xH=f_ޮd7d(9?ͼ0hya=8SgYAd+NM(+8y8-`"JpٶY$,e@.{pA.57[A%VVo7?~wfK{JH3iu9E ">K2HHp-"}¤s&q@M8G;~:T Q 4khh4Q5hMҬ፻ =F-9fW<%r>_Yz?3qUQ\U:!1?A?uagOs%8t~+}}Gq~9 4xr_5Fde= 49_=M*YaNE)/f),*;ӲESϛXuI\E3eDiyt}Z\:EM"2>&Ddt B  S A? 2xD(`^O<>#\`!TxD(`^O<># @0hWX"x͔AKQPV+ТK *m x+ ݵ6ЫǞ"= xH=f_ޮd7d(9?ͼ0hya=8SgYAd+NM(+8y8-`"JpٶY$,e@.{pA.57[A%VVo7?~wfK{JH3iu9E ">K2HHp-"}¤s&q@M8G;~:T Q 4khh4Q5hMҬ፻ =F-9fW<%r>_Yz?3qUQ\U:!1?A?uagOs%8t~+}}Gq~9 4xr_5Fde= 49_=M*YaNE)/f),*;ӲESϛXuI\E3eDiyt}Z\:EM"2>&Dd.B  S A? 2<MӟaݸI `!MӟaݸI@hWx͒=OA=n"+D"R,YF1")C'%raXiMGEߠ0_@)Cdgg{wA^fggwngA ߲ny Zv9A3uA{>+Y.ԩ\|g6i1<ۑ*$ΤM:h 17avQso7o9KILIu9n37˜(Iw]*sE*k1*|+E7*Џ55NVY)/>? *#NQ_+5Z_lȗ!'߮f?f4XrKQ89Ifwm呵 -> pwx=Ūl[EC5a?&r<& }] &TIι]i|כXŪl[E3ܾ?$ݷ۲SyK} Rp/ /Dd.B  S A? 2<MӟaݸI`!MӟaݸI@hWx͒=OA=n"+D"R,YF1")C'%raXiMGEߠ0_@)Cdgg{wA^fggwngA ߲ny Zv9A3uA{>+Y.ԩ\|g6i  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz|}~m=Root Entryu FJGData {HWordDocumentt<ObjectPoolw P8GJG_1020669366 F`.G`.G1TableCompObjhObjInfo [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ" " !""""l  ,2$E`FOBbo]@ 0(  B S  ?"@, "p@GTimes New Roman5Symbol3& Arial?5 Courier New"1hEFEf!0dResponse CenterResponse Center "%(+,-./01345679  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWordDocWord.Picture.89qObjectPool `.G`.GWordDocumentSummaryInformation( DocumentSummaryInformation8q "bjbjt+t+  AA ]@@@@@ L @dddddwwwwyyyyyy$fwswwwwdddwwwwddw$2wwwww^wdX `ſ@@ww SHARED OBJECT Area 2 "mH !"$$$l$$!" N N!z#"z##*$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@Cſ@$ſ՜.+,0 hp  Hewlett Packard1  Title_1020670242, FAGAG1TableCompObj hObjInfo [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ9 9   -9999l  ,2$E`FOBbo]@ t(  <  # B S  ?-9t@ &&&%9@@GTimes New Roman5Symbol3& Arial?5 Courier New"1hEFEf&!0d.Response CenterResponse CenterObjectPoolAGAGWordDocumentSummaryInformation(DocumentSummaryInformation8q 9bjbjt+t+  AA/ ]TTTTT ` T(xxxxx$f"xxSxxx$<^xl d`ſTT SHARED OBJECT area 2SHARED OBJECT area 3 -.9 jUmHmH%,-/0123456789X$$$l$$$l$$%&*+,-/01234689 N N!z#"z##%$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@6ſ@>ſ&՜.+,0 hp  Hewlett Packard.1  Title_1021715513l F@JG@JG1TableCompObjhObjInfo [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ$ $   $$$$l  ,2$E`FOBbo]@ t(  <  # B S  ?$t@ Dt$`@GTimes New Roman5Symbol3& Arial?5 Courier New"1hE+FF+F&!0dResponse CenterResponse Center  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWorObjectPool@JG@JGWordDocumentSummaryInformation(DocumentSummaryInformation8q $bjbjt+t+  AA ]TTTTT ` T(xxxxx$f"xxSxxx$<^xl @RϿTT DATA (private) & TEXT $ jUmHmH !"#$$$$l$$!#$ N N!z#"z##>+$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@F#@.Ͽ@|RϿ՜.+,0 hp  Hewlett Packard1  Title_1021715531L$ FYGYG1TableCompObj hObjInfo  [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ$ $   $$$$l  ,2$E`FOBbo]@ t(  <  # B S  ?$t@ y$`@GTimes New Roman5Symbol3& Arial?5 Courier New"1hF+FF+F&!0dResponse CenterResponse CenterObjectPool"YGYGWordDocumentSummaryInformation(!#DocumentSummaryInformation8     4 !"#%&'()*+-./0123>6789:;<W@ABCDEFHIJKLMNPQRSTUV`YZ[\]^_ybcdefghjklmnoprstuvwx|}~q $bjbjt+t+  AA ]TTTTT ` T(xxxxx$f"xxSxxx$<^xl Єb\ϿTT DATA (private) & TEXT $ jUmHmH !"#$$$$l$$!#$ N N!z#"z##>+$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@|RϿ@|RϿ՜.+,0 hp  Hewlett Packard1  Title_1021715547& FKjGKjG1TableCompObj%( hObjInfo [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ$ $   $$$$l  ,2$E`FOBbo]@ t(  <  # B S  ?$t@ L$`@GTimes New Roman5Symbol3& Arial?5 Courier New"1hF+FF+F&!0dResponse CenterResponse CenterObjectPool'*KjGKjGWordDocumentSummaryInformation()+$DocumentSummaryInformation8,q $bjbjt+t+  AA ]TTTTT ` T(xxxxx$f"xxSxxx$<^xl dϿTT DATA (private) & TEXT $ jUmHmH !"#$$$$l$$!#$ N N!z#"z##>+$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@|RϿ@|RϿ՜.+,0 hp  Hewlett Packard1  Title_10190545424. F{G{G1Table5CompObj-0hObjInfo [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJF F !FFCFFl  ,2$E`FOBbo]@ 0(  B S  ?F@ %%\%F@GTimes New Roman5Symbol3& Arial?5 Courier New"1hu,Eu,E&!0d.Response CenterResponse CenterdDocWord.Picture.89q  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWordDocWord.Picture.89qObjectPool/2{G{GWordDocument?SummaryInformation(13GDocumentSummaryInformation8Oq Fbjbjt+t+ AA< ]@@@@@ L@lllll$f{lllll$2^l` Iiܶ@@ GLOBAL SHARED OBJECT area 1GLOBAL SHARED OBJECT area 2 FmH%,3:;<=>?@ABCt$$$l$$$l2$$%,3:;<=>?@ACEF CDEFN N!z#"#T$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@Gܶ@Gܶ&՜.+,0 hp  Hewlett Packard.1  Title_1019051190<D6 FPaGPaG1TableXCompObj58hObjInfo [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ# #  ####l  ,2$E`FOBbo]@ t(  <  # B S  ?#t@$}\#@GTimes New Roman5Symbol3& Arial?5 Courier New"1h8,E9,E!0dResponse CenterResponse CenterObjectPool7:PaGPaGWordDocumentaSummaryInformation(9;iDocumentSummaryInformation8qq #bjbjt+t+  AA ]@@@@@ L @ddddd$ f"ddSddd$2^dX PoyԶ@@ DATA (private)TEXT # jUmHmH !"#$$$l$$$l$$ "# N N!z#"z##T$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@pQԶ@tԶ՜.+,0 hp  Hewlett Packard1  Title_1019050996> FP,GP,G1Table{CompObj=@hObjInfoR [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ# #  ####l  ,2$E`FOBbo]@ t(  <  # B S  ?#t@$}\#@GTimes New Roman5Symbol3& Arial?5 Courier New"1h8,E9,E!0dResponse CenterResponse CenterObjectPool?BP,GP,GWordDocumentSummaryInformation(ACDocumentSummaryInformation8q #bjbjt+t+  AA ]@@@@@ L @ddddd$ f"ddSddd$2^dX PoyԶ@@ DATA (private)TEXT # jUmHmH !"#$$$l$$$l$$ "# N N!z#"z##T$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@pQԶ@tԶ՜.+,0 hp  Hewlett Packard1  Title_1019054332F FGG1TableCompObjEHhObjInfo [$@$NormalmH <A@<Default Paragraph Font +4@IUa    +4@IUXa  aaa`l  ,2$E`FOBbo]@ D( Y}0 <  #  r  6 r  6 r  6 r  6 r  6 r   6 r   6 r   6 B S  ?ax"t l !t 65t \ t6Nt(t6Lgxt6 r8 td/t@\a@GTimes New Roman5Symbol3& Arial"1hq,Er,E!0dResponse CenterResponse Center  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWordDocWord.Picture.89qObjectPoolGJGGWordDocumentSummaryInformation(IKDocumentSummaryInformation8q abjbjt+t+  AA V]  22222ggggiiiiii$X L fgUgggg22#2gggg22gggggg^g2& ۶gg Soft Limits shmmax maxdsiz maxdsiz_64 maxssiz maxssiz_64 maxtsiz maxtsiz_64   &(35<>HJQS]a B*hnH  5B*hnH  jUmH '(45=>IJRS^_`a  '(45=>IJRS^_`N N!z#"z##T$x%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@۶@4P۶՜.+,0 hp  Hewlett Packard1  Title_1020672256TN FP˹GQG1TableCompObjMPhObjInfo [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ/ / ! $////l  ,2$E`FOBbo]@ (  NB   S D B S  ?/ t@lֈ/@GTimes New Roman5Symbol3& Arial?5 Courier New"1hEFEf!0d$Response CenterResponse CenterObjectPoolORP˹GP˹GWordDocumentSummaryInformation(QSDocumentSummaryInformation8q /bjbjt+t+  AA% ]TTTTT ` T:xxxxx$0$f%"%xxexxx$<^xl +ſTT I/O GLOBAL SHARED OBJECT area 1 / jUmHmH#$%&'()*+,-./$$$l$$$#$%&'()*,./ N N!z#"#)$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@ſ@bſ՜.+,0 hp  Hewlett Packard$1  Title_1020670736d\V F G G1TableCompObjUXhObjInfo  [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ# #   ####l  ,2$E`FOBbo]@ t(  <  # B S  ?#t@(X#p@GTimes New Roman5Symbol3& Arial?5 Courier New"1hEFEf!0dResponse CenterResponse Center  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWordDocWord.Picture.89q  FMicrosoft Word Picture MSWorObjectPoolWZ G GWordDocumentSummaryInformation(Y[DocumentSummaryInformation8q #bjbjt+t+  AA ]TTTTT ` T(xxxxx$f"xxSxxx$<^xl PǒſTT DATA (private)TEXT # jUmHmH !"#$$$l$$$l$$ "# N N!z#"z##%$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@(Qſ@(Qſ     ' !"#$%&0)*+,-./I2345678:;<=>?@BCDEFGHSKLMNOPQUVWXYZ[]^_`abcefghijknopqrstuvwxyz{|}~՜.+,0 hp  Hewlett Packard1  Title_1020670755^ F0G0G1TableCompObj]`!hObjInfo# [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ# #   ####l  ,2$E`FOBbo]@ t(  <  # B S  ?#t@@S#p@GTimes New Roman5Symbol3& Arial?5 Courier New"1hEFEf!0dResponse CenterResponse CenterObjectPool_b0G0GWordDocumentSummaryInformation(acDocumentSummaryInformation8q #bjbjt+t+  AA ]TTTTT ` T(xxxxx$f"xxSxxx$<^xl ſTT DATA (private)TEXT # jUmHmH !"#$$$l$$$l$$ "# N N!z#"z##%$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@(Qſ@(Qſ՜.+,0 hp  Hewlett Packard1  Title_1020670717f F%G%G1Table(CompObjeh$hObjInfo& [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ# #   ####l  ,2$E`FOBbo]@ t(  <  # B S  ?#t@@S#p@GTimes New Roman5Symbol3& Arial?5 Courier New"1hEFEf!0dResponse CenterResponse CenterObjectPoolgj%G%GWordDocument1SummaryInformation(ik9DocumentSummaryInformation8Aq #bjbjt+t+  AA ]TTTTT ` T(xxxxx$f"xxSxxx$<^xl ſTT DATA (private)TEXT # jUmHmH !"#$$$l$$$l$$ "# N N!z#"z##%$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@F#@yſ@(Qſ՜.+,0 hp  Hewlett Packard1  Title_1020674199n FGG1TableJCompObjmp'hObjInfo) [$@$NormalmH <A@<Default Paragraph Font0Z@0 Plain TextOJQJ/ / ! $////l  ,2$E`FOBbo]@ (  NB   S D B S  ?/ t@׈/@GTimes New Roman5Symbol3& Arial?5 Courier New"0hEFEf!0d$Response CenterResponse CenterdDocWord.Picture.89qOh+'0( @L h t  /How to check to see if SHMEM_MAGIC is enabled:0ow Response Centerespesp Normal.dotnMartin Burnett2rtObjectPoolorGGWordDocumentTSummaryInformation(qs\DocumentSummaryInformation8dq /bjbjt+t+  AA% ]TTTTT ` T:xxxxx$0$f%"%xxexxx$<^xl p歗ſTT I/O GLOBAL SHARED OBJECT area 1 / jUmHmH#$%&'()*+,-./$$$l$$$#$%&'()*,./ N N!z#"#)$T%Oh+'0x  4 @ LX`hpssResponse Centerespesp Normal.dotnResponse Center2spMicrosoft Word 8.0@@˓ſ@˓ſ՜.+,0 hp  Hewlett Packard$1  Title1<ۑ*$ΤM:h 17avQso7o9KILIu9n37˜(Iw]*sE*k1*|+E7*Џ55NVY)/>? *#NQ_+5Z_lȗ!'߮f?f4XrKQ89Ifwm呵 -> pwx=Ūl[EC5a?&r<& }] &TIι]i|כXŪl[E3ܾ?$ݷ۲SyK} Rp/ /Dd.B  S A? 2<MӟaݸI`!MӟaݸI@hWx͒=OA=n"+D"R,YF1")C'%raXiMGEߠ0_@)Cdgg{wA^fggwngA ߲ny Zv9A3uA{>+Y.ԩ\|g6i1<ۑ*$ΤM:h 17avQso7o9KILIu9n37˜(Iw]*sE*k1*|+E7*Џ55NVY)/>? *#NQ_+5Z_lȗ!'߮f?f4XrKQ89Ifwm呵 -> pwx=Ūl[EC5a?&r<& }] &TIι]i|כXŪl[E3ܾ?$ݷ۲SyK} Rp/ /@Dd(B  S A? 201mV6{Z`!~01mV6{ 5 E(6LxTAKA~;]X5^ ZH$w5JE =J%B\XB^zz93zY0=s+y;]ݐ ߾}o}3׀O^d&`уO6j6V`4ʹ  xƑSLy"~I&$yWBܩ՝F,l!l>fDLZ ًWso.- Yok;E^]ZY~ Kj Tcsim|Fs"]]v<֛ G?Tf.]3[GB1~[h zxa$*DdB   S A? 2V_<羨p`!hV_<羨" @5 hW(66x͖1oPgA,Hm.@"J]R# l2)9iJL*;:wp1΀H߽^'زr>}w^l!XahNPuS/ xI7^5(]qHo’"{G~@I$Τt:ԀT׆[IϳAE?|{si9zHLBfΥ?z@>lHEwG1f(=Ty"y-n}j[ScfvVVtԅc~?hء??pXk;4vrz?~(ե+TJ{!9_P"u%-a;bR.hĄ{{qJ4ZOjs?'WQ٨W mMr^hir]IZ-fF4WJGKC7t8o(ؕ s2kp~i*DdB   S A? 2V_<羨p`!hV_<羨" @5 hW(66x͖1oPgA,Hm.@"J]R# l2)9iJL*;:wp1΀H߽^'زr>}w^l!XahNPuS/ xI7^5(]qHo’"{G~@I$Τt:ԀT׆[IϳAE?|{si9zHLBfΥ?z@>lHEwG1f(=Ty"y-n}j[ScfvVVtԅc~?hء??pXk;4vrz?~(ե+TJ{!9_P"u%-a;bR.hĄ{{qJ4ZOjs?'WQ٨W mMr^hir]IZ-fF4WJGKC7t8o(ؕ s2kp~i*DdB   S A? 2V_<羨p`!hV_<羨" @5 hW(66x͖1oPgA,Hm.@"J]R# l2)9iJL*;:wp1΀H߽^'زr>}w^l!XahNPuS/ xI7^5(]qHo’"{G~@I$Τt:ԀT׆[IϳAE?|{si9zHLBfΥ?z@>lHEwG1f(=Ty"y-n}j[ScfvVVtԅc~?hء??pXk;4vrz?~(ե+TJ{!9_P"u%-a;bR.hĄ{{qJ4ZOjs?'WQ٨W mMr^hir]IZ-fF4WJGKC7t8o(ؕ s2kp~igDd"B   S A? 2aC pAKc!`!aC pAKc@hWزVsxo@?>'BT@ Bbҁ"1%܈:R tH (3)b`bЙ @tw8N]lP(>G  `;݇1bBW7Wk^mn[] N ?ؐТ!Obswz4#ً(1Ml(`8V<{Ұ׿6^/}k 宒&]IvDM`dwu=<8x7 yu޻z JxVգI:&{Ox&{4`I3[}wfYTddyS͒} sTj$ʢk0\@ImЙuYc|)d.'Ɨ)TOf (+*J.e#\-םc i88c1֜fdoTOY3X@Ŀ0UqCIaXNdzo-E-[A8wVP$eKsښb/yr&TO:+τj2NӑmEG>[3zh&%xADK3l3eՓβA]yԉ% ) MO= <`ѡ< ]l㕯 Dd(B   S A? 2 \&S^ aXs $`! \&S^ aXs EL x{xVQMBΒKEtL' EB !I$!BIHG{|6k|em \$^e T H*ug ghc F|JK0viwBVRxiQ֏# =0 fpCArdN2.%܂ģ yO{ک](8|2|e,mɥRo]^U{r\.^lj *$<*BxXؔĶus?ⷨ߾m7UH6#e֭ϘϘgܻWzFU5k!1 I z{>|zI]{yߟŧ?ey~~pߞ[P'Nۥ}bsO+cקK^BRWYOҽ ʚk8!oůƉ_EJ{=n_/~dMOUib?MMtdL# ~^ smJ[U') -Yɔee~AVX1D9]f 4@uy5jjjzk [ط57kٜNy:/?.__eT>~8o8ޥ#00SS'Mܛe3gfgݧ? D~)o ޢȽͫ|***Wc#WZ~kWz_F0o/mx~ߎ0;B>a9]&)w9UU𫰪sqzG]b!CxCCx܌ E>~"#5߃ݭ< ?LޫxE~o++s|!hs"~6[b ދHGFBV s,ͮ^e8H^ɾA!8NȾ8zDln[Z[띤=q.z/w 7ۏĿQȽw4iiizw߉xOiO=y9^/_[_r7o}DȽ[|fff %1;,rHMњ s,ͮށ}E^E~E@=G-ohߐw4^ȽͭR¾^KV聳p6Α;Y{BzX\p|8ܻ|nOʛʟwm8Ϸ{c{/_KyKK>Gy? r;F~o7"1);LB$'e)I0JgUQuq}=Qzu"}^~ )a߃w& #.0G?y_zc4j\#k?w j1{S̓1I>~"o"$ɘG0=ʟHb,/_[_H1]翧n|FFF/B2a2YabLdeiv%1g#Kigeg8R^۾6HzG`>5?] 4ywucyy<~1p%ͻިȽ[p|xxx'`6CxX>~aCzF=g~/-/{FY[xگ[Ƚ/̟3 z؃_W={ɱ0iia,9<9Kk8j&aZxի\r88Fо!!1"q Ȼwu២9r۱;K~7oގȽԔXXeS”td,!5xI)wӫIk!r8KþYgc.p\*a?w)%{כõcyccտ^}3ygq<&g?7?O1DZb^_{JȽ:uuuz3v_~K. lZX6lpʨ^U~eKe:yEh'ooߞ׎VȽ3gtywz럁A!*f?7?Dop51F>~4o4q't-zwE=jGs=?2VJW+^{ޕ_[_{؂?#{ ba\ZX`_+| 8pPr0ށJi>k;\‰hmN;1r4&jߕוU.]wJ7JJ܆1 w﴿w{ƒy/E,Ky/m%_cF--f|/b=w{nݼz{ž~SR3a4{EMy z5E34G oko~ B "0_#GFG]9&c VmnO՛~̒ϴɛɟ7K~,,_=_$rMx]~5o5o+|MFoeމyvDv,;Q!Dߧbiv%y}/w~5Mu胾'oߟ׏W~wz;W;EYN)q;ɅYr>1H,"Dd B  S A? 2rpa$L7r/drN.2`!Fpa$L7r/drԞ @VhWx͓1O@SPC,HRDJ](C%eCȸU 22UVډORL齻yCݽwtX=)Z~Q'z߭ѻ2Ț^SᏘW,ZWN7l3s(0d+yp I8ʀ!}rmjNثFx~UlMFr4Vgki ccE-}yх&UEy鐵ԯ^"〦^ouښc3_: 28Dz>ugQnm4 X*Cm4}I(QYe/PV 8 I\EC뒻9.- T.vς?C'Hk߽27|wF").ruZ4͔U< t;[/a)R &i=i"')EWZņlw"<9-."-[L"RS%oDdt B  S A ? 2q_ \+ u;eƦM65`!E_ \+ u;eƦ @0hWXx͓1o@&E4JD+HQ+(X (CjL +Օv'Atp.gGuB4;;-y4:EZ(UlJ*ډzp'"ͺϣ)>1| Dd B  S A? 2rpa$L7r/drN=8`!Fpa$L7r/drԞ @VhWx͓1O@SPC,HRDJ](C%eCȸU 22UVډORL齻yCݽwtX=)Z~Q'z߭ѻ2Ț^SᏘW,ZWN7l3s(0d+yp I8ʀ!}rmjNثFx~UlMFr4Vgki ccE-}yх&UEy鐵ԯ^"〦^ouښc3_: 28Dz>ugQnm4 X*Cm4}I(QYe/PV 8 I\EC뒻9.- T.vς?C'Hk߽27|wF").ruZ4͔U< t;[/a)R &i=i"')EWZņlw"<9-."-[L"RS%o Dd(B  S A ?  2 Ŧg(in% E;`! Ŧg(in% EL x{xVWNu"J|t!$2:HP$BBB!I%)s~zz?_{٧m0V !AG:$W  H*uς!t7`hAa.'OM7> hڝP9H)\֏#3A 92'ŗBCP|7ţ Ucջ揨ޭ`p Cnߖ+R+v(]+->d@ عzBѥgŧ#nVF, E;4(YlEݔ0"ly^zYry;iݹAP55xF[wkw ~F<>#Mvm{ϘϘgߧz?#STM Jo%?>{/{%yߟŧ)OYſ剓R>9'NN-SKOOc/} IA^gy{?MI J7K')k}xO,y 6I,]/Uqz4kxbb̢&`Vttj?\y6HqkZi´p7~)?#w2eYva,ӑ + 2aN’{u̵QK^Ӿ&&^-hhVy-ZDdEWy...z]s1eK#GFG]?1S1M>~:oޔȽ9ٸG>~o=y _ly"0+y++^_ _Fo_}˼?wI'*aeTAZLde1{59.f_W_M~ }s^3~S&{͝Q^GNyG_y?~|".60Pzc"n$$l?wލ{w3y33Կ 4Ex{:r5 *_n\UXo{?6mmmz?oGjBv}J 0bv2WŁ?@@hcp,7o;1{'y;vvvz'Go>8Wg;GȽ!pW/лP"\'n_7!rM>~omcxJ~!)zODb~/ɗ/-/{Ie'ۯ}TȽ-^~3o3[GTL S3aNJo,,^?K/[?G4FxG5;m[Z[o^8glyo޼gwy0Ηw`5ۏ]ǿVȽ[ͷftz7߂xq=y)/-/[k!>ux?0r;&|+hQ[MHLPIYaJR&2鲘]Ls1/Əg8J^߾>(zGD2D ysz-['N8C˾ zE 4@y?~~~z` *\-g?w5*{S1E>~2o20Ϸ{C{/sExkky{/rJ~oW_A0DB0\&2鲘]4sTWīįWY Pwh^3sS47okoD)N=yOלyy<~yqû{7'FDz7O\܏|<ރ{ /_[_3Xޕ_{ۑ{_y>7y}!7z{"MN }cajr:2yrpFCuW'qcq}#^#~#cE.N&nߝ׍I{yo޼zH¥L>~42z"n0_ y&_٘{q|\}{D=e~O/-/{BIxoWۯSȽ̟:uuuz؅|n/vEULI +|J,LIIG|6k}GO;y?w\>-,0|:2y,ᨊP 99jz/wH!g_W_O#':;wuw;1r 8MӾ''i" P 7$rjU+c?7?FoUw`&eNL;"1?=0^+XW+W^/{%rxO~ o {c b~oMok^B0DP! zAñ8BVXB&2>{áuyuu? mq<y{;| zȻwuw BE.]w \.m?7?Zr+p n &vmzF=h~ջ_,ŋX/ۿ{LȽwmjռzo뿃M|zEf{wvwLd!bV_Ld}b̮!QG^۾66^mm[뵊f>'ssy\O /l?w>Ƚ̗b|HHHQb*a:nb fti{lټzsxD~)o  {oUx_lķMx7}gߩKgTICzjV OJ2D y}/WC&}K^ ~sf{]]Yɾ^g.G_C~z}߹ߡ.rJwYN.rߐAbwn1Table`wSummaryInformation(v*DocumentSummaryInformation82TCompObj8jMicrosoft Word 9.0 @q@FF@oG@oG C՜.+,0$ hp  Hewlett Packard"OS2 /How to check to see if SHMEM_MAGIC is enabled: Title i0@0 Normal_HmH sH tH 88 Heading 1$$@&a$5B*8@8 Heading 2$@& 5OJQJ<A@< Default Paragraph Font0Z@0 Plain TextOJQJ4>@4 Title$a$5CJOJQJ W` Strong5 $*06<@Oant~*Gd/LT +*)$%('&0/.-,6543217:;<=>B?@AJ $*06<@Oant~*Gd/LO      !"#$%&'()*+,T 89:;<?MefHIXYGHT`myz  Y Z \  '()29@ABIST[\]^_lm,56NZ[$Icd 78()TU  V|}(/JKy+,:;M_j      % / 1 6 7 8 9 : !g!h!i!v!w!o"p"""##E#F###3$F$G$$$$$$$%%7%Q%R%m%%% & &&&'&((+++++++++++++++++++++++++++,[,],^,_,`,a,b,c,d,e,z,,,,=-a-b-c-d-O/P/000 11#1$1t111111445556666(676F6U6d6s6t666z8{88888X9Y999<:=:Q:`:::6;};; <R<S<0=1=>=?=6>7>>>>>>>!?4?5?I?X???.@u@@AAsAtA C CCCCUCVCfCCCCCCDODDD$EkEEEEEF@FFFFG\GGG%HhHiHIIIIIIIIIIJ&J:JQJfJ{J|JJJJJJJKKK1KoKKKKKKKL L.L/LgLLLLLLMDJNQUVWWXXZ[\]^_`abcdefghikmnopqrstuvwXY++++++~,,,,,,,,,,--!-9-;-T:::::::*BDG_ad|~ *,/GIO::::::::::QR,2$ptS'`io@gp p0e0e     A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||@5Qr(  V  # " V  # "  V  # "  V  # " V  # "  V  # " V  # " V  # " V  # "  V  # "  P    "  V  # "  V  # "  V   #  "  P $  "  P %  " P &  " P '  " P (  " P )  " P *  " P +  " V , # " V - # " V . # "! V / # "& V 0 # "# P 1  !" !P 2   "  P 3  " P 4  "  P 5  "$ P 6  "% V 7 # "7"" "\ : 3 #:" #\ ; 3 $;" $\ < 3 %<" %\ = 3 &=" &V > # '" '\ ? 3 )?", )\ @ 3 *@"- *\ A 3 +A". +\ B 3 (B"' (\B D S D"+\B G S D"*\B H S D")\B I S D"(\ J 3 ,J"/ ,\B L S D"3\B O S D"2\B P S D"1zB Q <D?"0B S  ? )*BCTU     ++++++++[,z,{,|,},T>'Q$t:Y6t= t<y e t;YE tQ) ttSt#ct) 2t ut) Tt$<t) Kt%{t) Kt) t&: t'^ t(. nt) nt) t) t*P t) t+ `t) t,) zt1$!t2!t3!t-) Xt4!Xt.) zt7A!t0) qt5_!t6!ot/) qtB9 tIyytHtG))tD(t? x t@ tAx tJ9 tQ4 tP)4 )tO4 tL4 t0 _1020669245 _1020670242 _1021715479 _1021715516 _1021715535 _1019051349 _1019051375 _1019051468 _1019051509 _1019051617 _1019051689 _1019051749 _1019051757 _1019051798 _1019051953 _1019051980 _1019052018 _1019052055 _1019052077 _1019052094 _1019052127 _1019052131 _1019053758 _1019054522 _1019050671 _1019050940 _1019052352 _1019052366 _1019052528 _1019052563 _1019052583 _1019052661 _1019052799 _1019052809 _1019052836 _1019052848 _1019054199 _1019054298 _1020668883 _1020668989 _1020669735 _1020669970 _1020672215 _1020670720 _1020670739 _1020670700 _1020673925 _1020674188+,,-9-SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTT6TSTpTTTT@@@@@@@@@ @ @ @ @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@+,,-9-SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTT6TSTpTTTT++++,,,,-:-<-=-0000T<>V\s~%|  k q %+lr $9=JQ $,0W\dk()8>   & - !!~!!2"8"""# #;$=$$$$$$$$$$$E%J%R%Y%m%s%C(T(226!6(6.676=6F6O6U6^6d6m66677}8888=:A:::::6;7;};~;;; < < ==e=n=>>>>>>>?5?9?????.@/@u@v@@@BB CCC!CVCZCfCmCCCD DODPDDDDD$E%EkElEEEEF+F1FuFFFFFFGG\G]GGGGG%H&HIIIIJJJJ'J.J;JBJRJYJgJnJ}JJJJJJJJKKKK!K#K9K@KwK{KKKKKKKKKLL6L=LkLmLLLLLLLMM@MBMdMjM}MMMMMMMM%N,NMNQNZN`NNNNNNNNNNOPP&Q2QcQgQQQQQRRFRT333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333Response Center:C:\data\ms\word\AutoRecovery save of shared_mem_final3.asdResponse Center#C:\stuff\ipcs\shared_mem_final3.docResponse Center#C:\stuff\ipcs\shared_mem_final3.docResponse Center#C:\stuff\ipcs\shared_mem_final3.docResponse Center#C:\stuff\ipcs\shared_mem_final3.docResponse Center#C:\stuff\ipcs\shared_mem_final3.docResponse Center:C:\data\ms\word\AutoRecovery save of shared_mem_final3.asdResponse Center:C:\data\ms\word\AutoRecovery save of shared_mem_final3.asdResponse Center:C:\data\ms\word\AutoRecovery save of shared_mem_final3.asdMartin Burnett"C:\Downloads\shared_mem_final3.doc; P P("Xw  ^` o()hh^h`o()"Xw;  ()ABST[\    6 7 FRT@tTP@UnknownGz Times New Roman5Symbol3& z Arial?5 z Courier New"1hafaf Gf C") 2!20dOS52.How to check to see if SHMEM_MAGIC is enabled:Response CenterMartin Burnett  FMicrosoft Word Document MSWordDocWord.Document.89q