A survey of application mapping techniques for many-core designs