1. A non-transitory computer readable medium storing instructions that enable a computer system to: determine bandwidth utilization of two threads using a software library; assign two threads to processors based on bandwidth utilization of the two threads in combination; determine whether the bandwidth utilization of the two combined threads exceeds a threshold value; use a cache simulator to measure coupling between the two threads in terms of the number of accesses to cache lines shared between the two threads; and store a coupling degree matrix by rating two threads in terms of the total amount of accesses to cache lines shared between two threads.