Building DECA from Source

You will need to have Apache Maven version 3.1.1 or later installed in order to build DECA.

Note: The default configuration is for Hadoop 2.7.3. If building against a different version of Hadoop, please pass -Dhadoop.version=<HADOOP_VERSION> to the Maven command.
git clone
cd avocado
export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=128m"
mvn clean package -DskipTests


[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.647s
[INFO] Finished at: Thu May 23 15:50:42 PDT 2013
[INFO] Final Memory: 19M/81M
[INFO] ------------------------------------------------------------------------

You might want to take a peek at the scripts/jenkins-test script and give it a run. We use this script to test that DECA is working correctly.

Running DECA

DECA is packaged as an überjar and includes all necessary dependencies, except for Apache Hadoop and Apache Spark.

You might want to add the following to your .bashrc to make running DECA easier:

alias deca-submit="${DECA_HOME}/bin/deca-submit"

$DECA_HOME should be the path to where you have checked DECA out on your local filesystem. The alias calls a script that wraps the spark-submit command to set up DECA. You will need to have the Spark binaries on your system; prebuilt binaries can be downloaded from the Spark website. Our continuous integration setup builds DECA against Spark 2.0.0, Scala 2.11, and Hadoop versions 2.3.0 and 2.6.0.

Once this alias is in place, you can run DECA by simply typing deca-submit at the command line.


Native Linear Algebra Libraries

For best performance, DECA should be linked against native linear algebra libraries, like ATLAS, or Intel’s Math Kernel Library. If we are running on an Apache Spark cluster, we will need to ensure that our Apache Spark distribution bundles the interfaces to the native linear algebra libraries. If we are running locally, we should include these libraries in the DECA JAR. We can do this by running with the native-lgpl Maven profile:

mvn -P native-lgpl package

The bindings to the native libraries are licensed under the LGPL <>. As an Apache licensed project, we cannot bundle LGPL’ed libraries in our binary distributions.