RootMpi Report

From: Omar Andrés Zapata Mesa <andresete.chaos_at_gmail.com>
Date: Sun, 3 Jun 2012 19:56:45 -0500


Hello Dears ROOTERS!
this is a report about current status of Mpi module for ROOT.

  1. The website was migrated to 3 new websites for information
  2. The repository https://github.com/omazapa/RootMpi have not the code for RootParallelGui, the new repository for it is https://github.com/omazapa/RootParallelGui.
  3. The new features are: (please show status here<http://gfif.udea.edu.co/web/tiki-index.php?page=RootMpi#Current%20Status>)
    • Colletive communication for Bcast,Scatter,Gather,Reduce,AllGather, AllReduce
    • RootMpi support for MS Windows using Visual Studio 2010 and root 5.32 and OpenMpi.
    • RootParallelGui support for MS Windows using Visual Studio 2010 and root 5.32, OpenMpi and Qt4.8
    • Cint integration for both, RootMpi and RootParalellGui, please see below how it work. (very nice)
  4. The next in the work.
    • Write a rootmpi exec program to compile and run code in an easy way(According to actual Cint Support).
    • Work in documentation for RootParallelGui and Create Configuration Dialogs
    • Work in Multidimensional Integration
    • Design and write some tests peformance for this initial code.

About Cint integration for Mpi and RootParallelGui

Ok, the ClassDef and ClassImp was written to support run code in root interpreter,
but it need at the moment an extra help calling mpirun

Example Macro:
IntegrationOneDim.C

{#include<Math/Math.h>#include<TMath.h>
gSystem->Load("libRMpi");

   ROOT::Mpi::TEnvironment env(gApplication->Argc(), gApplication->Argv());    ROOT::Mpi::TIntraCommunicator world;

   ROOT::Mpi::TIntegratorOneDim integrator1(TMath::BesselJ0);    ROOT::Mpi::TIntegratorOneDim integrator2(TMath::CosH);

   int root = 0; //the result is send to this rank

   integrator1.Integrate(root, 0, 1);
   integrator2.Integrate(root, 1, 10);

   if (world.Rank() == root) {

      std::cout << "Solution 1: " << integrator1.GetSolution() << std::endl;
      std::cout << "Solution 2: " << integrator2.GetSolution() << std::endl;
   }}

To run this macro you need call mpirun with interpreter example

$mpirun -np 2 root -l -x -q IntegrationOneDim.C

-l -x -q are options for root interpreter see root --help

if you open root interpreter you can load libRMpi with gSystem->Load("libRMpi");
and you can see classes, use tab-completion etc... but you can not run processes because the communication system that provide mpirun is not internally implemented in root interpreter.

You can call RootParrallelGui from root interpreter and run the macro.

root [0] gROOT->LoadClass("TGQt");** $Id: TGQt.cxx 36275 2010-10-11 08:05:21Z brun $ this=0x1f4a630
Symbol font family found: "Standard Symbols L"

root [1] gSystem->Load("libParallelGuiMpi");
root [2] ROOT::ParallelGuiMpiLauncher mpigui;
root [3] mpigui.Show();

then in the gui select mpi macro, set options and run!

or you can call from command line RootParrallelGui executable.

You can download debian/ubuntu packages from http://gfif.udea.edu.co/rootmpi/

root-parallel-gui_2012.06.03-amd64.deb and root-plugin-mpi_2012.06.03-amd64.deb

NOTE: I have not implemented yet cmake/cpack to create installer for windows(with nsis) and rpm for redhat based systems, but I hope write it shortly.

Please enjoy and for any suggestion you are more that wellcome!!

-- 
Omar Andres Zapata Mesa
Fundamental Interaction Phenomenology Gruop (Gfif)
Head Developer
http://gfif.udea.edu.co
Gfif Developers (Gfif Dev)
Division of computer science
System Engineering Student
Universidad de Antioquia At Medellin - Colombia
Usuario Linux  #490962
Received on Mon Jun 04 2012 - 02:57:33 CEST

This archive was generated by hypermail 2.2.0 : Mon Jun 04 2012 - 11:50:01 CEST