Abstraction-Level Energy Accounting for Many-core Programming Languages