Added (optional) sockets to the syntax of the KMP_PLACE_THREADS environment variable.
Some limitations:
- the number of sockets and then optional offset should be specified first (before other parameters).
- the letter designation is mandatory for sockets and then for other parameters.
- if number of cores is specified first, then the number of sockets is defaulted to all sockets on the machine; also, the old syntax is partially supported if sockets are skipped.
- if number of threads per core is specified first, then the number of sockets and cores per socket are defaulted to all sockets and all cores per socket respectively.
- the number of cores per socket cannot be specified before sockets or after threads per core.
- the number of threads per core can be specified before or after core-offset (old syntax required it to be before core-offset);
- parameters delimiter can be: empty, comma, lower-case x;
- spaces are allowed around numbers, around letters, around delimiter.
Approximate shorthand specification:
KMP_PLACE_THREADS="[num_sockets(S|s)[[delim]offset(O|o)][delim]][num_cores_per_socket(C|c)[[delim]offset(O|o)][delim]][num_threads_per_core(T|t)]"