Massachusetts Institute of Technology
Simulation for performance modeling of computer architectures is a compute intensive operation requiring many compute resources and CPU cycles. Typical usage models involve running multiple sequential jobs across multiple machines. Multithreading can be used to speed up individual simulation jobs, but only provides higher throughput than multiprogramming on large workloads if speedup scales linearly or super linearly with the number of threads. Scalable multithreading performance requires effective parallel decomposition of models to eliminate sequential bottlenecks, and minimizing contention on mutual exclusion locks. Scheduling of parallel work is also crucial, and several scheduling algorithms are evaluated.