Parallel Programming Guide for HP-UX Systems

Memory classes
Private versus shared memory
Chapter 7126
Private versus shared memory
Private and shared data are differentiated by their accessibility and by
the physical memory classes in which they are stored.
thread_private data is stored in node-local memory. Access to
thread_private is restricted to the declaring thread.
When porting multinode applications to the HP single-node machine, all
legacy shared memory classes (such as near_shared, far_shared, and
block_shared) are automatically mapped to the node_private memory
class. This is the default memory class on the K-Class and V-Class
servers.
thread_private
thread_private data is private to each thread of a process. Each
thread_private data object has its own unique virtual address within a
hypernode. This virtual address maps to unique physical addresses in
hypernode-local physical memory.
Any sharing of thread_private data items between threads (regardless
of whether they are running on the same node) must be done by
synchronized copying of the item into a shared variable, or by message
passing.
NOTE thread_private data cannot be initialized in C, C++, or in Fortran DATA
statements.
node_private
node_private data is shared among the threads of a process running on
a given node. It is the default memory class on the V-Class single-node
server, and does not need to be explicitly specified. node_private data
items have one virtual address, and any thread on a node can access that
node’s node_private data using the same virtual address. This virtual
address maps to a unique physical address in node-local memory.