Enabling Task Parallelism For Many-Core Architectures