ElectricAccelerator — Product Details

ElectricAccelerator Architecture

ElectricAccelerator takes advantage of the abundant parallelism available in software builds and capitalizes on multi-core servers and fast networks. It includes several patented features to exploit high levels of concurrency.

Electric Make
Electric Make® distributes build jobs in parallel to a cluster of nodes to automatically execute a build faster than with a sequential build. Electric Make is compatible with GNU Make, Microsoft NMAKE, Symbian's Make variant, Ant, and Visual Studio.

Electrify
Electrify monitors, traps, and distributes individual tools in a build, providing transparent access to cluster resources. Electrify runs builds in parallel for faster throughput, and unlocks resource efficiencies by keeping build machines fully utilized. It is compatible with SCons, MSBuild, Jam or any build tool that supports parallel execution of commands. Electrify can be used as a transparent bridge to the ElectricAccelerator cluster infrastructure for non-build development tasks.  Use this to accelerate unit testing, data modeling, hardware simulations, and other types of tasks.

Cluster Manager
The Cluster Manager manages the repository of build information and allocates the nodes used by Electric Make; it has the ability to scale to several hundreds of agents running dozens of simultaneous builds without affecting build performance. It provides web-based access to reports, build status, build results and build configurations. A command-line interface to the Cluster Manager is also provided.

ElectricAccelerator is also integrated with the Platform LSF grid computing solution to harness the power of grid computing to accelerate software build tasks.

Electric File System
The Electric Agent and the Electric File System run on the nodes in the cluster. Together they manage the execution of the build jobs sent from Electric Make, with the Electric File System tracking every file access during build execution to provide perfect build dependency information.

Patented Technology

Automatic Conflict Detection and Correction
Other parallel build approaches all suffer the same fundamental flaw: as the level of parallelism is increased, they generate incorrect or broken builds. The central issue is that the dependency information is incomplete. With incomplete dependencies, it's possible that build steps can be executed in the wrong order.ElectricAccelerator solves this problem with its patented automatic conflict detection and correction technology. The tool determines the true dependencies at run-time by monitoring all of the files used during the build process. ElectricAccelerator knows exactly which files were used to build every object file, library or executable.

Determining Actual File Dependencies
The first step in achieving high levels of concurrency in ElectricAccelerator is provided by the Electric File System (EFS). EFS is a lightweight caching file system that runs on each of the nodes and provides perfect information about actual file dependencies. This information allows it to detect out-of-order execution of jobs. After a job has completed, Electric Make uses its file dependency information to determine whether or not the job ran too soon. If it ran too soon, then Electric Make ignores those results and automatically re-runs the job to produce the correct results.

Increasing and Maintaining Performance
In addition to dramatically speeding up builds the first time it is run, Electric Make has the ability to use information from its initial run to further increase the performance of subsequent runs of the same build. To improve performance on subsequent builds, Electric Make saves the missing dependency information, including cross-makefile dependencies between recursive Makes. Electric Make updates the missing dependency information after every build, so that even as files evolve, performance is automatically maintained. Other approaches to parallel builds require a large on-going investment in file maintenance; Electric Make virtually eliminates this task.

Hierarchical Builds
For Make-based builds, ElectricAccelerator has an unprecedented ability to correctly handle hierarchical builds. Almost all software projects contain multiple modules, each with its own Makefile. The Makefiles are structured hierarchically, with top-level Makefiles invoking lower-level Makefiles recursively, so that the entire project can be built at once starting with the topmost Makefile. Large projects routinely contain hundreds or even thousands of Makefiles.

ElectricAccelerator addresses hierarchy problems by coalescing all of the nested Makes into one large build handled by the original Electric Make invocation. When a recursive Electric Make is invoked on a node, information about the nested build is passed back to the original Electric Make. Electric Make's internal data structures are designed to accommodate multiple build environments, each characterized by a Makefile, working directory, command-line arguments, and environment variables. Coalescing the Makefiles allows out-of-order build conflicts to be detected between Makefiles. Other Make-based programs simply can't detect or correct out-of-order build steps that exist in different Makefiles. They will generate an incorrect or broken build.

"Software builds used to be so frustrating that I had to leave the building. Now I can actually wait for my builds to complete."
— Qualcomm