When I Google for “green software” top searches are about software that helps other activities become greener, such as utility power optimization or HVAC optimization. This makes sense because “smart power” has a bigger footprint than compute power consumption. Other search results focus on green IT (information technology).
I would like to contribute to the dialog about green software itself. My definition of green technologies (green software, green hardware) is technology that consumes less power while producing comparable or better results. My introduction to green technology began with power-efficient hardware design 7 years ago. I learned that power savings equals performance improvement due to thermodynamic and other considerations. This mantra (less power equals more performance) is gradually transforming semiconductor design. Technology companies that understand this best (Intel, ARM, Samsung, Google) stand to benefit in the years ahead.
In general, for every watt of power consumed by compute hardware, a watt or more of building cooling power is required. Software’s true power consumption is about 2 times that of the compute power it consumes. Compute power includes system power (CPU, RAM, driver, peripherals, and power supply losses) plus power for networking (routers, switches, etc) plus other power consumers like network-attached storage.
Some of the electrical engineering compute jobs I run take a week running 24×7 to complete, and often run on multiple CPUs and on multiple computers. Each compute job easily consumes an average of 1 Kilowatt of compute power, hence an average of 2 KW of data center power. This works out to about 335 KW*h per run. This is about $33 worth of power and is enough to power the average home’s electric needs (not counting heating and cooling) for about 8 days.
Right now the “greenness” of software is a relative. Today the software development world doesn’t have the right models to compare whether, say, particular database software is more or less green than particular financial software. Software and IT professionals can, however, assess whether one specific portfolio optimization solution is more or less green than another.
Creating green software begins with asking the right questions. The fundamental questions are “How much power does our software consume, and how can we reduce it?” I started to ask myself these questions early in the development stage of HAL0 financial software. I realized that the software running fairly large computations on the same data over and over again. Computations like the 3-year volatility of an asset. I created a simple software cache mechanism that first checked if the exact complex computation had been performed before. If it had the cache simply returned the previous result. If not the computation was performed and the result was saved in the cache. The result was a 3X speed up and an approximately 3x improvement in performance per watt for the HAL0 portfolio-optimization software. The mantra that “power saved is performance gained” is even more true in the world of software.
In other words, green software design practices and focusing on faster software often lead to the same types of software improvement. The thought process to arrive at software improvement can be different enough to give software developers new perspectives on their algorithms and code. I found that some solutions that eluded me while looking for performance-enhancement (speed ups) were easily discover by thinking about power and resource inefficiencies. Similarly some software improvement that came quickly from profiling performance data would have been unlikely to occur to me when thinking about green software methods; it is only in retrospect that I saw their performance per watt benefit. The concept of “green software” is complimentary with other software concepts such lightweight software, rapid prototyping, and time-complexity analysis and optimization.
HAL0 portfolio-optimization software is designed to be green. It is designed to get more done with less power consumption. Like all other green software, greener means faster. Some of HAL0 speedups have come from thinking green, and other haves come from “thinking fast.” The speed and efficiency of HAL0’s core engine is high, but I already envision further improvements of 5 to 10X. It is simply a question of time to implement them.