CompJoules
CompJouleS is a software-based tool to estimate energy consumption of an algorithm running on a computing device, including CPUs, GPUs, and FPGAs. Users can track and measure energy, device temperature and utilization over time for a user-defined algorithm running on a specific computing device, with support for CPUs, GPUs, and FPGAs. CompJouleS is available as a Python package and can be invoked or integrated into existing code to track program-level or function-level energy metrics. CompJouleS offers a non-hardware-invasive, fast and accessible way to include energy consumption as a design variable for algorithms and software applications running on different hardware platforms. For a specific set of algorithms, CompJouleS can also provide insight into algorithmic complexity by providing metrics such as total floating-point operations or number of Multiply-Accumulate operations; thus, forming a comprehensive software tool for hardware-software profiling.