1. A method of allocating hardware resources for an application program configured to execute in a computer of a type having a Non-Uniform Memory Access (NUMA) architecture, the method comprising: in the application program, specifying a resource allocation preference for use in allocating hardware resources for the application program, and specifying an allocation strength preference for use in determining whether to allocate alternate hardware resources when the resource allocation preference specified by the application program cannot be met; and using the resource allocation preference and allocation strength preference specified by the application program to allocate a selected hardware resource for the application program; wherein the computer includes a plurality of hardware resources distributed among a plurality of nodes, wherein each node includes processor and memory hardware resources, wherein the processor hardware resources in each node have shorter access times when accessing the memory hardware resources located in the same node than when accessing the memory hardware resources in other nodes, wherein the resource allocation preference includes a home node preference for the application program, wherein the allocation strength preference includes a node strength preference for use in determining whether to allocate hardware resources from another node when a hardware resource disposed in a home node selected using the home node preference is not available, and wherein allocating the selected hardware resource for the application program includes allocating memory for the application program from a memory hardware resource disposed in a selected node among the plurality of nodes.