Most multi-processor operating systems permit the programmer to have the ability to select logical processors as opposed to individual cores. With additional programming you can determine the identity (location System/Package/Core/HT thread) of the logical processor.
For general programming, the number of threads is contolled without regard to processor (threads are not assigned affinity).
For specific applications if may be advantagous to use thread affinity. e.g. permit the application to burden all but one processor.
Tying a given thread to a given processor can potentially make better use of the cache.
Tying threads with high data sharing requirements to a set of processors on the same memory node can inhance performance.
For you. I would suggest to start with getting your application to run with multiple threads. Then experiment with the numbers of threads. Messing with Affinity is sometimes a double-edged sword.