ohmmscore library

What is ohmmscore?

ohmmscore is a class library and consists of the base components commonly used by ohmms and other applications. It is used to write test codes to evaluate C++ compilers and HPC libraries.

The performance data generated by ohmmscore benchmark suite are available at publications.

Benchmark codes

The benchmark directory contains source codes to measure abstraction penalty for simple blas 1 level operations. The bin/ohmmspete uses benchmark/vector.cpp with PETE/OhmmsPETE classes. The performance of other C++ class libraries which implement expression template techniques can be also measured by compiling benchmark/blitz.cpp and benchmark/ublasvector.cpp, which requires installing blitz and boost libraries. blitz needs to be configured with the same C++ compiler, while nothing needs to be done for boost. However, skipping the proper installation step of boost library may result in its poor performance.

Customizing cmake-related files for the local environments are very easy. Simply add the directory where you have installed blitz (boost/ublas) to the directory list in FIND_PATH of CMake/FindBlitz++.cmake (CMake/FindBoost.cmake). The current list to search blitz library is


  FIND_PATH(BLITZ_INCLUDE_DIR blitz/blitz.h
    /usr/apps/include
    /usr/apps/tools/blitz
    /usr/include
    /opt/include
    /usr/local/include
  )

If you would like to share the timing data with the developers, send the output (tbody element of docbook) to with the header "Abstraction Penalty" and the information on the hardware, OS and compilation options.

How-to

Require cmake to compile the libraries and benchmark codes.

  • Download a tar-gziped file

  • untar the file: tar -zxvf ohmmscore.tgz

  • Set environment variables. Without these environment settings, cmake will use the default GNU compilers.

    CXX
    c++ compiler
    CC
    C compiler
  • Find the line with COMPILER in CMakeLists.txt. Uncomment the line for the compiler of your choice. The lines starting with # are comments. The default is GNU compiler as shown below.


    #COMPILER choose one of the cmake files to customize the compiler options
    #If nothing is chosen, default settings by cmake will  be used.
    #INCLUDE(${PROJECT_CMAKE}/Intel8.cmake)
    #INCLUDE(${PROJECT_CMAKE}/Intel7.cmake)
    INCLUDE(${PROJECT_CMAKE}/GNUCompilers.cmake)
    #INCLUDE(${PROJECT_CMAKE}/IBMCompilers.cmake)

  • Out-of-source compilation

    • Create a directory to build the library and binaries, e.g., build: mkdir build

    • Change to the build directory: cd build

    • run cmake to create Makefiles: cmake ..

    • make everything: make

  • Run it: bin/ohmmspete -n size -i iterations


   
Site search Web search