Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • T Trilinos
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 936
    • Issues 936
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 22
    • Merge requests 22
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • James Willenbring
  • Trilinos
  • Issues
  • #431

Closed
Open
Created Jun 10, 2016 by James Willenbring@jmwilleMaintainer

Interfacing librsb into Epetra

Created by: michelemartone

rsb.hpp.txt Epetra_CrsMatrix.h.txt Epetra_CrsMatrix.cpp.txt @mhoemmen @maherou

Hi. After my talk at EUROTUG'16 on Apr. 18-20 2016 near Munich [ https://www.mhpc.mw.tum.de/index.php?id=38 ] and subsequent discussion with Michael and Mark I've been encouraged to propose an incremental integration of the sparse matrix type RSB (provided by librsb [ http://librsb.sourceforge.net/ ]) into Epetra. So following such a minimalist approach I have modified a few lines in Epetra_CrsMatrix (from trilinos-12.6.1) to use librsb for: MV/MTV/SV/SM, in code delimited by the HAVE_EPETRA_RSB preprocessor symbol; and constructs in Epetra_CrsMatrix::FillComplete and in the copy constructor. So the prototype I am providing creates an RSB copy of the matrix just for the purposes of using it in the operations above.

I am also working on a proper "Epetra_RsbMatrix" class, but let's first see if this one here is able to sustain some tests for the above operations.

The way I suggest to build this is:

  • get my / michele martone's GPG key

    gpg --search EF1258B8
  • download librsb from

    https://sourceforge.net/projects/librsb/files/librsb-1.2.0-rc3.tar.gz/download

    download its signature from

    https://sourceforge.net/projects/librsb/files/librsb-1.2.0-rc3.tar.gz.asc/download

    verify signature

    gpg --verify librsb-1.2.0-rc3.tar.gz.asc

    build librsb

    tar xzf librsb-1.2.0-rc3.tar.gz cd librsb-1.2.0-rc3 ./configure CFLAGS="-O3 -fPIC" FCFLAGS="-O3 -fPIC" --prefix=/opt/librsb make

    quick check

    make qtests

    long check (I recommend to skip it)

    make tests make install
  • use attached version of Epetra_CrsMatrix.cpp and Epetra_CrsMatrix.h and put attached rsb.hpp (the Epetra-agnostic C++ wrapper to librsb) into e.g. /opt/librsb/include/
  • build Epetra including e.g. /opt/librsb/bin/librsb-config --I_opts
  • link with e.g. /opt/librsb/bin/librsb-config --ldflags -fopenmp -lm -lz

I attach the source files I have used, with ".txt" appended to the filename. The rsb.hpp file is meant to become part of a future release of librsb.

I am new here, so if there is a more practical approach to follow to provide this proof-of-concept test, please suggest it to me.

Assignee
Assign to
Time tracking