Welcome to Morpheus!

Morpheus is an exciting new linear algebra package. It currently contains a dense matrix and dense vector class, but we hope to expand its features as it grows in popularity.

Okay, so Morpheus is really just a test project for an ATPESC tutorial...but at least it has a cool name!

gcov tutorial

  1. Please log in to vesta
    ssh <username>@vesta.alcf.anl.gov
  2. Clone the Morpheus repository
    git clone https://github.com/amklinv/morpheus.git
  3. Build the tests
    cd morpheus
    make
    Note that the proper coverage flags have been added to your makefile. Also note that this step generates a set of .gcno files for you.
  4. Run the tests
    ./runtests
    runtests is a perl script which runs the three tests for you. This step generates the .gcda files.
  5. Run gcov on the Morpheus source code
    gcov *.cpp
    Ignore the system files; we are not responsible for testing them. This will generate our .gcov files
  6. Examine Morpheus_Vector.cpp.gcov and Morpheus_Matrix.cpp.gcov
    These are regular text files, so you may use your text editor of choice (vim, emacs, eclipse...or you can just cat the file). Lines that have been tested are marked by the number of times they were executed. Lines that have NOT been tested are preceeded by #####. Dashes denote lines that contain no instructions, such as blank lines or curly braces.
    Example:
          5:   85:bool Matrix::isSymmetric() const
          -:   86:{
          5:   87:  if(nrows_ != ncols_)
      #####:   88:    return false;
          -:   89:
         30:   90:  for(int r=0; r<nrows_; r++)
          -:   91:  {
        150:   92:    for(int c=0; c<ncols_; c++)
          -:   93:    {
        125:   94:      if(data_[r][c] != data_[c][r])
      #####:   95:        return false;
          -:   96:    }
          -:   97:  }
          -:   98:
          5:   99:  return true;
          -:  100:}
       

Food for thought..

Doxygen

To create the html pages you're currently looking at, all you have to do is type doxygen in the source directory. (Doxygen is already installed on Vesta.) It reads Doxyfile, which I generated with doxywizard on my workstation and checked into the repository. Alternatively, you can generate such files by hand.

Didn't you say Doxygen can generate LaTeX manuals?

Yes. You can find the one for this site here.

What about the beautiful GUIs you showed us?

lcov and doxywizard are great tools for a personal workstation, but not-so-great tools for computing clusters. I personally prefer using the GUIs, but it's important to know how to use gcov and doxygen too, since they're available on more systems. If you desperately need the HTML files generated by lcov, they are available here.

 All Classes Files Functions Variables

Generated on 2 Aug 2016 for Morpheus by  doxygen 1.6.1