Getting Started Guides (ScaleGraph 2.2)

Requirement for using ScaleGraph library

  1. MPI shared library - transportation layer for ScaleGraph library. OpenMPI is not currently supported.
  2. wget
  3. cmake 2.8 or above
  4. g++ 4.2 or above
  5. Extended X10 runtime - our extended version of official X10 runtime
  6. ScaleGraph library - source code of ScaleGraph library
  7. X10DT (optional) - an Eclipse-based IDE for developing X10 application

Extended 10 runtime,  ScaleGraph library and X10DT are available at our download page.


1. MPI Environment

ScaleGraph uses MPI environment as its transport layer. ScaleGraph has been developed mainly on MVAPICH2 1.9 (License: BSD License).  For installation, please refer to the installation page of respective MPI implementation.

Because ScaleGraph integrates another library such as ARPACK and ParMetis in which MPI library is also used, to make X10 MPI transport layer functions properly with those libraries, the MPI multithreaded feature in MPI implementation is necessary. The MPI implementations that do not support MPI multithreaded feature such as OpenMPI are not able to use with ScaleGraph library. The recommended MPI implementations are as follows:



ARPACK library is required by Spectral Clustering algorithm. From ScaleGraph 2.2 release, users are not required to manually install the ARPACK library; the library will be downloaded, complied and installed by the Makefile in ScaleGraph home folder. For more information about ARPACK, please refer to ARPACK web site.


3. Extended X10

Follow the instruction on building X10 page, but use Extended X10 source code from download page. Supply "-DX10RT_MPI=true" option in build command. Example build command,

$ cd x10.dist
$ ant -DX10RT_MPI=true dist


4. ScaleGraph Library

For installation, download ScaleGraph source code from download page and then extract the archive to a folder of your choice. Go to ScaleGraph home folder and then run make.

$ cd scalegraph
$ make

The Makefile will download and build ARPACK and ParMetis libraries and then build ScaleGraph linkable library (X10 library). If make run successfully, the third-party libraries and ScaleGraph linkable library will be placed in SCALEGRAPH_HOME/lib folder and SCALEGRAPH_HOME/x10lib folder, respectively.

Include SCALEGRAPH_HOME/lib folder in LD_LIBRARY_PATH variable. 


5. X10DT

X10DT is an IDE for developing X10 applications. The distribution includes Eclipse, X10DT plugins, and X10 compiler and runtime. You can get X10DT for ScaleGraph from download page. After downloading, extract zip file to a folder of your choice. To run X10DT, execute 'x10dt'.

Note: The official X10DT from X10 page are not compatible with ScaleGraph library.



You can compile source code by x10c++, the X10 compiler for C++ back end, and supply -x10rt mpi,  -x10lib, and path_to_scalegraph_home/x10lib/ . In some cases, the compiler might run out of memory, you can supply -J-Xmx2G to allow the compiler to allocate more memory. 

$ x10c++ -J-Xmx2G -x10rt  mpi -x10lib SCALEGRAPH_HOME/x10lib/ your_source_files.x10

 You can include debug symbols and optimize your application by supplying additional flags, i.e,

$ x10c++ -cxx-prearg -g -J-Xmx2G -x10rt mpi  -O -NO_CHECKS -x10lib SCALEGRAPH_HOME/x10lib/ your_source_files.x10

SX10 2.3.1_2.2 which is released along with ScaleGraph 2.2 has the fast compilation feature. The feature speeds up the compilation by parallel compiling C++ source files. Users can use this feature by supply -make -make-arg -j

$ x10c++ -J-Xmx2G -x10rt  mpi -make -make-arg -j -x10lib SCALEGRAPH_HOME/x10lib/ your_source_files.x10

You can limit the number parallel compilation tasks by supply a number after -j as shown below.

$ x10c++ -J-Xmx2G -x10rt  mpi -make -make-arg -j4 -x10lib SCALEGRAPH_HOME/x10lib/ your_source_files.x10



Your executable from the compilation is an MPI executable, you can run it by MPI launcher, e.g., mpirun, mpirun_rsh. X10_NTHREADS and GC_NPROCS are the environment variables for X10 runtime to determine the number of worker threads and the number of garbage collector threads, respectively.

$ mpirun_rsh -n 4 -hostfile HOSTS X10_NTHREADS=8 GC_NPROCS=4 your_app app_arguments

To run spectral clustering, you are required to supply X10RT_MPI_THREAD_MULTIPLE=true.


Download the ScaleGraph