Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Current »


IncrediBuild Terminology Overview

The image above illustrates the general architecture of the IncrediBuild environment.

The IncrediBuild environment consists of three major components:

-The Initiator agent: This is where the host software is installed (the machine from which the executions are initiated).

-The Helper agents: These are installed on remote machines (there could be one, or as many as you need).

-The Coordinator: This can be installed on any of the participating machines, preferebly a high-availability machine. Optionally a Backup Coordinator can be installed as well.

Machines that will be used as Helpers only need the IncrediBuild agent installed, there is no need to install the accelerated software, copy your source code or set up your tool chain on machines that will only act as Helpers.


Jobs and Tasks

Jobs – A Job is the entire process tree being executed by IncrediBuild. The Job at the Initiator is broken up into Tasks.

  • Tasks are executed at the OS-level within a process tree.
  • Tasks can also invoke subtasks, both tasks and sub-tasks can be distributed to run on remote machines.
  • Tasks represent the process to be executed either by an Initiator or Helper Agent. 

Example: In Visual Studio, the tasks that are being executed remotely by IncrediBuild are usually compilation tasks. In C++ compilations, the cl.exe which is a compilation process, will be distributed by IncrediBuild to be executed remotely. As there are many compilation tasks when performing a full rebuild, IncrediBuild can potentially distribute hundreds of compilation tasks to be executed concurrently on remote machines (Helpers), thus, highly accelerating the entire compilation exeuction.

Initiator and Helper Agents

An IncrediBuild Agent should be installed on each machine that you'd like to be part of the IncrediBuild pool. Essentially, any Agent can act either as an Initiator (when it initiates executions via IncrediBuild) or as a Helper (when it contributes its idle CPU's to processes distributed by IncrediBuild across the network). In order for an Agent to be able to act as an Initiator, an IncrediBuild solution should be assigned to the Agent. For more information on the various IncrediBuild solutions, check out the IncrediBuild solutions page.

Initiator Agents – Once assigned with a proper solution an Agent can initiate executions with IncrediBuild. Tasks spawned as part of these execution may be distributed by IncrediBuild across the various idle CPU's on Agents available as part of the IncrediBuild pool, resulting in much faster execution. Every Initiator Agent can also function as a Helper Agent.

Helper Agents – The installed IncrediBuild Agents act as Helper Agents on all computers that are designated to participate in the IncrediBuild pool, inclusive of any remote or cloud-based machine.

These machines will be able to execute distributed tasks. On machines acting as Helpers, you don't need to have anything besides an IncrediBuild Agent. For example, if you are distributing Visual Studio compilations using IncrediBuild to Helper A, this Helper doesn't need to have Visual Studio installed on it, neither the compiler or other build tools nor the source code you are compiling, only an IncrediBuild Agent should be installed on this host machine. Also, once a compilation is being distributed to be processed on Helper A will conclude, IncrediBuild will transparently make sure that everything that was generated by this distributed compilation process will be synced back to the Initiator machine (such as object files, pdb files, etc).


IncrediBuild Coordinator 

The coordinator is the component which manages resource availability in an IncrediBuild pool. It communicates with the Agents to identify the resources that are available or unavailable and manages them accordingly.

The Coordinator performs the following functions:

  • Subscribes and unsubscribes Agents from participating within the resource pool.
  • Maintains up-to-date Agent information through Status Reports received from Agents.
  • When tasks are waiting to be distributed, the Coordinator provides the Initiator with the necessary Helper agents.
  • The Coordinator is responsible for allocating IncrediBuild solutions and core packages to Agents.


To summarize the relationship between an Initiator Agent, Coordinator, and Helper Agent:

1)The Initiator calculates how many additional remote cores it requires.

2) The Initiator sends a request to the Coordinator for necessary number of Helper Agents.

3) The Coordinator scans the network, checks where resources are available, and assigns them for the Initiator to use.

For example, if the Initiator wants to execute 10 concurrent processes in a distributed manner and requests for 10 Helper cores, it may receive all or some of them from the Coordinator. After completing the execution of these 10 processes, if the Initiator needs to distribute 8 additional processes, as it already has 10 Helper cores assigned to it, it will not request additional remote cores from the Coordinator but will instead release two remote cores back to the resource pool.

As mentioned above, when a process is distributed to be executed on a Helper machine, IncrediBuild's virtualization takes care of everything for you behind the scene as though the remote code is a local core. You don't need to install anything besides an IncrediBuild Agent on this remote machine, nor copy your source files or executables. Also, any file that will be generated by the distrbuted process will automatically be copied by IncrediBuild to its designated path on the Initiator machine. 


  • No labels