Giter Club home page Giter Club logo

flecsi's People

Contributors

andrewreisner avatar certik avatar cferenba avatar charest avatar cmsquared avatar ddaniel avatar eddy16112 avatar gshipman avatar hkaiser avatar jlippuner avatar jpietarilagraham avatar julienloiseau avatar junghans avatar ktsai7 avatar luspi avatar nickm319 avatar nray avatar ollielo avatar onurcaylak avatar opensdh avatar rfbird avatar rspavel avatar ryosukep avatar spad12 avatar staleylanl avatar sumathil avatar timmah avatar tuxfan avatar wohlbier avatar zetwal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flecsi's Issues

MPI Execution Model

Add build support for MPI runtime and implement mpi_execution_policy_t type.

Issues with the cmake version of legion

The following header files are not in the install directory for legion:

  • lowlevel_config.h
  • realm/realm_config.h (basically any realm header)
  • common.h
  • accessor.h
  • arrays.h
    etc...

also from the legion/runtime/legion directory

  • legion_constraint.h

Basically it looks like any header file in the legion/runtime directory is not included.

mesh_graph_partition::partition is NOT vtxdist in ParMetis

If the goal of mesh::compute_graph_partition() is to generate the Distributed CSR format as in ParMetis, the current implementation of mesh_graph_partition::partition member is wrong. The current implementation lists the number of elements in each partition instead of the indices to the "global" sequence of the elements. For example, partitioning the Sagittarius mesh of 4 cells into two equal partitions, the mesh_graph_partition::partition should be [0, 2, 4] instead of [0, 2, 2] as currently implemented.

Make test in Dockerfile

Create and switch to a user in the Dockerfile so we can run "make test" without error in MPI build.

ASSERT_DEATH in zip.cc

What is the purpose of ASSERT_DEATH in the zip.cc? Is it expecting the test program to crash?

On my system, if I compile it with Release or RelWithDebInfo, the test program does not crash:

/home/ollie/git/flecsi/flecsi/utils/test/zip.cc:52: Failure
Death test: zip(a, b, c_fail)
Result: failed to die.
Error msg:

Is this the correct behavior or not?

CMAKE_PREFIX_PATH ignored for ExodusII and LAPACKE

If the goal of recent changes to project.cmake and packages.cmake is to use CMAKE_PREFIX_PATH instead of TPL_INSTALL_PREFIX, the cmake rules for linking to ExodusII and LAPACKE should also be changed accordingly. Otherwise, the dependencies are not linked.

$ grep TPL_INSTALL_PREFIX *
packages.cmake:  if(EXISTS ${TPL_INSTALL_PREFIX}/include/exodusII.h
packages.cmake:     AND EXISTS ${TPL_INSTALL_PREFIX}/lib/libexodus.a)
packages.cmake:    set(IO_LIBRARIES ${TPL_INSTALL_PREFIX}/lib/libexodus.a
packages.cmake:      ${TPL_INSTALL_PREFIX}/lib/libnetcdf.a
packages.cmake:      ${TPL_INSTALL_PREFIX}/lib/libhdf5_hl.a
packages.cmake:      ${TPL_INSTALL_PREFIX}/lib/libhdf5.a
packages.cmake:      ${TPL_INSTALL_PREFIX}/lib/libszip.a
packages.cmake:      ${TPL_INSTALL_PREFIX}/lib/libz.a
packages.cmake:    include_directories( ${TPL_INSTALL_PREFIX}/include )
packages.cmake:  if(EXISTS ${TPL_INSTALL_PREFIX}/include/lapacke.h
packages.cmake:     AND EXISTS ${TPL_INSTALL_PREFIX}/lib/liblapacke.a)
packages.cmake:    include_directories(${TPL_INSTALL_PREFIX}/include)
packages.cmake:          ${TPL_INSTALL_PREFIX}/lib/liblapacke.a
packages.cmake:          ${TPL_INSTALL_PREFIX}/lib/liblapack.a
packages.cmake:          ${TPL_INSTALL_PREFIX}/lib/libblas.a
project.cmake:set( TPL_INSTALL_PREFIX ""
project.cmake:if (NOT TPL_INSTALL_PREFIX STREQUAL "")
project.cmake:  message(WARNING "TPL_INSTALL_PREFIX is obsolete, use CMAKE_PREFIX_PATH instead (and rebuild the latest version third-party libraries)")
project.cmake:  list(APPEND CMAKE_PREFIX_PATH "${TPL_INSTALL_PREFIX}")

Legion Execution Model

Update build system with legion support and implement legion_execution_policy_t type.

Fresh clone appears to fail

Fresh clone fails because of what appears to be relative paths to submodules if one follows the README.md:

cmalone@varan:~/code$ git clone --recursive [email protected]:flecsi/flecsi.git flecsi-la
Cloning into 'flecsi-la'...a': git clone --recursive [email protected]:flecsi/flecsi
remote: Counting objects: 6079, done.
remote: Compressing objects: 100% (99/99), done.
remote: Total 6079 (delta 45), reused 0 (delta 0), pack-reused 5980
Receiving objects: 100% (6079/6079), 2.54 MiB | 1.60 MiB/s, done.
Resolving deltas: 100% (4292/4292), done.
Checking connectivity... done.
Submodule 'cinch' ([email protected]:flecsi/cinch.git) registered for path 'cinch'
Cloning into 'cinch'...
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
fatal: clone of '[email protected]:flecsi/cinch.git' into submodule path 'cinch' failed

If instead one clones from losalamos/flecsi.git, which is the real repository, then you get things correct. Either the README.md needs updated, or the relative paths need updated.

Also note, my fork fails in the same way, effectively rendering it useless unless I go in and manually change the submodule location - or I recursively make forks of all the submodules - neither of which I should need to do...

Cloning into 'cinch'...
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
fatal: clone of '[email protected]:cmsquared/cinch.git' into submodule path 'cinch' failed

Action to small??

There is a mysterious warning message saying some enum class is to small:

flecsi/Build/include/flecsi/tree/tree_topology.h:1092:20: warning: ‘flecsi::tree_topology_dev::tree_branch<long unsigned int, 2ul>::action_’ is too small to hold all values of ‘enum class flecsi::tree_topology_dev::action’ action action_ : 2;

What is that about? Can it be change to some larger number?

Generate mesh inputs for scalability tests

We need meshes in an array of sizes to test scalability of FleCSI. A combination of structured and unstructured meshes of different sizes and complexities will be useful.

corners surrounding vertex broken

There is a problem with corners surrounding a vertex. To reproduce, update to the latest version of
src/specializations/burton/test/burton.cc
and look at the output from the last test. The first vertex reports that it has all of the corners, and it has corner 0 twice. The output you should see is below. The corner ids for all other vertices seem reasonable.

corners_for_vertices

vertex: 0
corner: 0
corner: 0
corner: 1
corner: 2
corner: 3
corner: 4
corner: 5
corner: 6
corner: 7
corner: 8
corner: 9
corner: 10
corner: 11
corner: 12
corner: 13
corner: 14
corner: 15

vertex: 1
corner: 1
corner: 4

vertex: 2
corner: 5

vertex: 3
corner: 3
corner: 8

vertex: 4
corner: 2
corner: 7
corner: 9
corner: 12

vertex: 5
corner: 6
corner: 13

vertex: 6
corner: 11

vertex: 7
corner: 10
corner: 15

vertex: 8
corner: 14

Flexi in Flecsi

There are several references to flexi in the current flecsi code base.

driver/flecsi-serial.cc:#include <flexi/utils/common.h>
driver/flecsi-serial.cc: return flexi::execution_t<>::execute_task(driver, argc, argv);
examples/01_simple_task/types.h:#include <flexi/specializations/burton/burton.h>
examples/01_simple_task/types.h:#include <flexi/execution/task.h>
examples/01_simple_task/types.h:using burton_mesh_t = flexi::burton_mesh_t;
examples/01_simple_task/types.h:using flexi::persistent;

Interesting enough, they are not caught by any test suites because the executables are not built.

someone... don't know who... moved losalamos/gtest.git to flecsi/gtest.git

Cloning into 'flecsi'...
remote: Counting objects: 3923, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 3923 (delta 20), reused 0 (delta 0), pack-reused 3881
Receiving objects: 100% (3923/3923), 1.26 MiB | 1.55 MiB/s, done.
Resolving deltas: 100% (2740/2740), done.
Checking connectivity... done.
Submodule 'cinch' ([email protected]:losalamos/cinch.git) registered for path 'cinch'
Cloning into 'cinch'...
remote: Counting objects: 1430, done.
remote: Compressing objects: 100% (534/534), done.
remote: Total 1430 (delta 850), reused 1428 (delta 848), pack-reused 0
Receiving objects: 100% (1430/1430), 1.22 MiB | 1.45 MiB/s, done.
Resolving deltas: 100% (850/850), done.
Checking connectivity... done.
Submodule path 'cinch': checked out '983233d2f55e8dedfab4b055158de214a534a146'
Submodule 'gtest' ([email protected]:losalamos/gtest.git) registered for path 'gtest'
Cloning into 'gtest'...
ERROR: Repository not found.
fatal: Could not read from remote repository.

Implementing the Runtime Context

So how do we want to do this? Do we want to have different classes for each runtime controlled by compiler-time switches, or do we want to have each runtime specific context inherit from a parent context_t?

Partition Id Type Development

Look at the possibility of defining a new id_t with local/global/partition information available through its interface.

Flecsi fails with lapacke errors

On Moonlight, I am getting the following error:

/lustre/scratch1/turquoise/certik/repos/flecsi/src/specializations/burton/test/burton_gradients.cc:84:29: fatal error: lapacke/lapacke.h: No such file or directory

Which can be fixed by:

--- a/src/specializations/burton/test/burton_gradients.cc
+++ b/src/specializations/burton/test/burton_gradients.cc
@@ -81,7 +81,7 @@ protected:

 // this may not be a portable way to point to lapacke.h. it works on darwin.
 #include <ccomplex>
-#include <lapacke/lapacke.h>
+#include <lapacke.h>

 const int N = 10;

But then I get:

[ 18%] Linking CXX executable test/specializations/burton_gradients
/usr/bin/ld: cannot find -llapacke
collect2: error: ld returned 1 exit status

which I don't know how to fix, because the third-party didn't install any lapacke.so:

$ ls $TPL_INSTALL_PREFIX/lib
cmake            libhdf5_hl.a      libnetcdf.settings  libscotchmetis.a
libexodus.a      libhdf5.settings  libscotch.a         libszip.a
libexoIIv2for.a  libmetis.a        libscotcherr.a      libz.a
libhdf5.a        libnetcdf.a       libscotcherrexit.a  pkgconfig

Here are my copy & paste instructions to build on Moonlight:

bash
module load friendly-testing git gcc cmake/3.4.1

export TPL_INSTALL_PREFIX=$HOME/ext/flecsi-libs

git clone https://github.com/flecsi/third-party.git flecsi-thirdparty
cd flecsi-thirdparty
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=$TPL_INSTALL_PREFIX \
    -DENABLE_EXODUS=ON \
    -DENABLE_LAPACK=ON \
    -DENABLE_LAPACK=ON \
    -DENABLE_METIS=ON \
    -DENABLE_SCOTCH=ON \
    ..
make -j16


git clone --recursive -b beta-0.0-603-ge2dd9992 https://github.com/flecsi/flecsi.git
cd flecsi
mkdir build
cd build
../arch/developer-gnu
make # FAILS as indicated above
make test

FindMetis can not find suitable libmetis from TPL

FindMetis.cmake in fbc362d does not think the libmetis.a from TPL is suitable.

-- Checking for module 'metis'
--   Package 'metis' not found
-- Could NOT find METIS: Found unsuitable version "/opt/flecsi_third_party/lib/libmetis.a", but required is at least "5.1" (found /opt/flecsi_third_party/lib/libmetis.a)

However, the header file does identify itself as version 5.1.0

[ollie@salami Build]$ grep METIS_VER /opt/flecsi_third_party/include/metis.h 
#define METIS_VER_MAJOR         5
#define METIS_VER_MINOR         1
#define METIS_VER_SUBMINOR      0

Cannot clone repository

Cloning using https link fails:

git clone --recursive https://github.com/flecsi/flecsi.git
Initialized empty Git repository in /local/home/charest/flecsi/.git/
remote: Counting objects: 3722, done.
remote: Compressing objects: 100% (112/112), done.
remote: Total 3722 (delta 57), reused 0 (delta 0), pack-reused 3610
Receiving objects: 100% (3722/3722), 1.24 MiB | 1.59 MiB/s, done.
Resolving deltas: 100% (2568/2568), done.
Submodule 'cinch' ([email protected]:losalamos/cinch.git) registered for path 'cinch'
Initialized empty Git repository in /local/home/charest/flecsi/cinch/.git/
remote: Counting objects: 1426, done.
remote: Compressing objects: 100% (536/536), done.
remote: Total 1426 (delta 848), reused 1420 (delta 842), pack-reused 0
Receiving objects: 100% (1426/1426), 1.22 MiB | 1.57 MiB/s, done.
Resolving deltas: 100% (848/848), done.
Submodule path 'cinch': checked out '9798489475ba49cdd38eb91663fa0e6044ae11ce'
Submodule 'gtest' ([email protected]:losalamos/google/googletest.git) registered for path 'gtest'
Initialized empty Git repository in /local/home/charest/flecsi/cinch/gtest/.git/
fatal: remote error:
losalamos/google/googletest is not a valid repository name
Email [email protected] for help
Clone of '[email protected]:losalamos/google/googletest.git' into submodule path 'gtest' faile

Cloning using ssh link fails:

git clone --recursive [email protected]:flecsi/flecsi.git
Initialized empty Git repository in /local/home/charest/flecsi/.git/
Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts.
remote: Counting objects: 3722, done.
remote: Compressing objects: 100% (112/112), done.
remote: Total 3722 (delta 57), reused 0 (delta 0), pack-reused 3610
Receiving objects: 100% (3722/3722), 1.24 MiB, done.
Resolving deltas: 100% (2568/2568), done.
Submodule 'cinch' ([email protected]:losalamos/cinch.git) registered for path 'cinch'
Initialized empty Git repository in /local/home/charest/flecsi/cinch/.git/
remote: Counting objects: 1426, done.
remote: Compressing objects: 100% (536/536), done.
remote: Total 1426 (delta 848), reused 1420 (delta 842), pack-reused 0
Receiving objects: 100% (1426/1426), 1.22 MiB | 1.53 MiB/s, done.
Resolving deltas: 100% (848/848), done.
Submodule path 'cinch': checked out '9798489475ba49cdd38eb91663fa0e6044ae11ce'
Submodule 'gtest' ([email protected]:losalamos/google/googletest.git) registered for path 'gtest'
Initialized empty Git repository in /local/home/charest/flecsi/cinch/gtest/.git/
fatal: remote error:
losalamos/google/googletest is not a valid repository name
Email [email protected] for help
Clone of '[email protected]:losalamos/google/googletest.git' into submodule path 'gtest' failed
Failed to recurse into submodule path 'cinch

Legion Build

It looks like you have already completed this, but I thought I'd put it in anyway. You can have the pleasure of closing the issue if it's already done... ;-)

Burton test blessed file

This test depends on the particular order of entries of a std::map, which doesn't seem to be consistent across runs. We need a more robust test that doesn't depend on the specific order of the storage mechanism (this is arbitrary).

G++ compiler bug

G++ does not correctly compile drivers using anything other than the default_execution_policy_t type. This is a bug in G++ with variadic templates. Clang++ is able to correctly compile and run. I suggest that people use clang++ for the time being if they need this functionality. This does not affect the normal build.

Interface Laundry List

  • Create common iterator interface (use "->" access where possible)
  • Add data versioning (Ben - private issue)
  • Add new data interface (Ben - private issue)
  • Do 3D (Marc)
  • Add documentation
  • Enforce 80 column width

ParMetis in third_party

Are we going to use ParMetis for distributed graph partition for the mesh? If so, can you add ParMetis in the third_party repo? Or should this be an issue the flecsi-third-party repo?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.