Skip to content
Switch branches/tags
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


© CETIC 2017

Placer is a component of the European Project TANGO ( ).

Placer is distributed under a GNU LGPL License, version 3.0 or above.


Placer is a model-based tool that, given a model of heterogeneous (or at least multi-core) hardware and a task-based complex software, finds a mapping of the software tasks on the various processing elements of the hardware, together with a routing of the transmissions on the available busses, and provides a schedule for the tasks and transmissions. The mapping can minimize either the run time, energy consumption, or both in a multi-objective fashion.



Placer is an R&D Tool that runs on the JVM. As such it can run on any office machine running a JVM, with say 10Gb of RAM available for the tool.

To use Placer you need to install two pieces of software:

Installation and configuration procedure

Just copy the .jar of the release, once with requirements are installed and run it through command line. In the repository, \data contains two examples: example1.json and smallExample.json and the output that should be produced by Placer: placement_of_example1.json and placment_of_smallExample.json, respectively


Placer is a command-line tool. A documentation of all parameter is available through the command line as well using the –help flag:

> java -jar Placer.jar --help

Placer version Beta5

Usage: placer [options]

  --help                   prints this usage text
  --in <file>              the JSon file representing the placement problem
  --out <file>             the file where the JSon representing the placements will be stored
  --discrepancy <value>    the maximal discrepancy to use during the search must be >=0 , lower is faster but incomplete, use 20 for instance (5 if in a hurry). default is MaxInt
  --strategy strategy1,strategy2,...
                           Search strategies to use, in the order they must be searched. The available search stategies are:
                                 HEFT  (not very good in CP context)
                 when not specified, a default search strategy is used.

  --timeLimit <value>      the maximal run time for Placer in seconds, default is MaxInt, also used for LNS
  --verbose                prints some verbosities
  --license                prints license and stops
  --lns <value>            use LNS, only for single objective goal (minMakespan,minEnergy,...) not for sat or Pareto
  --lnsMaxFails <value>    for LNS: the maximal number of fail per CP search default is 2000
  --lnsTimeLimit <value>   for LNS: the time limit for each LNS search.
  --lnsRelaxProba <value>  for LNS: the probability (in percentage) to maintain an element from one solution to the relaxed one, default is 90
  --lnsNbRelaxations <value>
                           for LNS: the total number of relaxation to try out, default is 500
  --lnsNbRelaxationNoImprove <value>
                           for LNS: the maximal number of consecutive relaxation without improvement, default is 200
  --lnsCarryOnObjForMultiHardware <value>
                           when using multi hardware, should Placer carry on the best values for the objective function from one hardware to the next one?
                                 0 is no;
                                 1 is yes, but if first solution cannot be found, try again without carry on (this is the default)
                                 2 is yes, and without retry
  --lnsUseEarlyStop <value>
                           when using LNS, this option ask the solver to first make a search with all limits (time and fails) divided by ten, and stop if this search was not fruitful. If the search was fruitful, it then proceeds with the normal set limits (time and fails)
  --benchmark <value>      run the tool, reports the run time and obj, and optionally saves the outfile, if an outfile is given.
Note: Placer is a java software so that all options taken by the JVM also apply.
Among them, you should consider the -Xmx and -Xms parameters to grant more memory to Placer:
example: java -Xms4G -Xmx15G -jar Placer.jar --in=...

another example of usage: notice that OscaR is quite verbose during its execution, even if verbosities are disabled.

> java -Xms5G -Xmx20G Placer.jar  --in=aquascanDemo1.json
		--out=aquascanOut1.json --timeLimit=10

maxHorizon:      291553
creating tasks
creating processors
constants about adjacency
creating busses
creating transmissions
registering tasks and transmissions to processors and busses
registering execution constraints per processors and task
INFO: skipping tautological cumulative constraint: temporary storage for processor Core1, summedMaxAmount:146506, min available resource:1048576
INFO: skipping tautological cumulative constraint: temporary storage for processor Core2, summedMaxAmount:146506, min available resource:1048576
INFO: skipping tautological cumulative constraint: temporary storage for processor Core3, summedMaxAmount:146506, min available resource:1048576
INFO: skipping tautological cumulative constraint: temporary storage for processor Core4, summedMaxAmount:146506, min available resource:1048576
computing makeSpan on tasks
redundant bin-packing constraint on usage per bus
computing total energy consumption
posting mapping constraints
posting MustBeUsedConstraint(Core1)
posting MustBeUsedConstraint(Core2)
posting MustBeUsedConstraint(Core3)
posting MustBeUsedConstraint(Core4)
breaking symmetry among List(Core1, Core2, Core3, Core4) by workload
starting search
solution found, makeSpan=125024 energy:0
solution found, makeSpan=88643 energy:0
solution found, makeSpan=88642 energy:0
solution found, makeSpan=88641 energy:0
nNodes: 975297
nFails: 487355
time(ms): 10002
completed: false
timeInTrail: 605
nSols: 4

Process finished with exit code 0