Skip to content
Carbon Research Group edited this page Dec 15, 2013 · 14 revisions

Graphite won’t build on my system! What do I do?

See Getting Started. Are you using 64-bit host and target architectures? Are you running Debian Squeeze or Ubuntu 12.04? (Other versions of Ubuntu or Debian don’t count.) Have you installed all of the dependencies (PIN, boost, etc.)? If the answers to all these are “yes”, shoot us an email!

How can I configure the simulator?

Configuration is contained in the file “carbon_sim.cfg” in the root directory. There are lot of options, and it can be overwhelming. Some of the options are obvious (cache size), while others may not be obvious at all or have obscure implications. Unfortunately, the best way to find this out currently is to search the source to see where the option is used:

$ git grep [option-name]

How do I view the simulation outputs (e.g, cache miss rate, network latencies, instruction count, etc)?

Graphite writes all simulation outputs/logs to a directory that is automatically generated at runtime. The output filename is “sim.out” by default. For details, look at Simulation Outputs.

How can I build my application with Graphite?

Graphite requires no source code modification, but it does require the application to be built in a specific way. Also note that new applications have the potential to expose hitherto unknown bugs in Graphite, such as unimplemented syscall emulation.

If you want to use our test infrastructure, the simplest place to start is to look at the makefile for one of the current application or unit tests. “/tests/apps/hello_world/Makefile”, for example. If you want to see a more complicated example of how to integrate with another projects make system, look at the makefiles for the SPLASH2 benchmarks (e.g., “/tests/benchmarks/fmm/Makefile”).

If you want to approach the problem from the opposite direction, you modify your own makefiles to support Graphite. This approach is much less tested, however. A good start is to look at the build flags passed when building an existing benchmark, say by executing:

$ make hello_world_app_test$

In particular, the application must be built statically and linked with our library (libcarbon_sim.a). Other libraries, such as the Pin threading library (libos-services.a) and boost may need to be added. You must also force definition of certain symbols in the output binary so that they are available to Graphite at runtime, specifically “CarbonStartSim” and “CarbonStopSim” by passing “-u CarbonStartSim -u CarbonStopSim” to the link line.

What license is Graphite distributed under?

The Graphite source code is released under the standard MIT license. Please see the LICENSE file in the top level of the source tree for details.