Multidimensional Scaling is an algorithm for constructing mappings of the given points in a target dimensional space based on pairwise proximity information. It is a compute and data intensive application, which requires O(N2) computation as well as memory. For the purpose of large-scale data visualization via MDS algorithm, we apply parallelization with Message Passing Interface (MPI) to increase computational capability by using distributed memory systems, i.e. multicore cluster systems.

For the details of the parallel MDS implementation, please refer to our CCGrid 2010 paper.


Source code is available from here.

Building and Dependency

HP-MDS implementation is developed under .NET framework 3.5 and you can recompile or build through MS Visual Studio 2008 or higher version. Also, you need to configure MPI.NET appropriately to use HP-MDS.

User Guide

You can run the HP-MDS application by using command as follows:

[USAGE]: >mpiexec -n [pNum] MPI_SMACOF_bMat.exe [distMatFile] [initMappedFile("NoMappedFile")] [labelFile("NoLabelFile")] [outputFile] [threshold] [targetDim] [#Points=N] [nRow] [nCol] [blockSize] [reduce-flag] [random-flag]

The following is the parameter list which should be included to run HP-MDS:

   args[0]: distMatrixFile - original distance matrix data.
   args[1]: initMappedFile - the initial mapping file (or 'NoMappedFile').
   args[2]: labelFile - label file (or 'NoLabelFile').
   args[3]: outputFile - output file name for the MDS result.
   args[4]: threshold - threshold value for the stop condition.
   args[5]: targetDim - target dimension.
   args[6]: N - the total number of points.
   args[7]: nRow - The number of block-rows.
   args[8]: nCol - The number of block-columns.
   args[9]: blockSize - the block size of block matrix multiplication.
   args[10]: reduce-flag - 1: reduced original distance, 0: no change
   args[11]: random-flag - 1: random seed, 0: fixed seed