├── .clang-format ├── .codecov.yml ├── .gitignore ├── .gitlab-ci.yml ├── .gitlab-ci ├── config │ ├── mirrors.yaml │ └── upstreams.yaml ├── index.yaml └── scripts │ ├── .before-script.yml │ ├── .global-variables.yml │ ├── .templates.yml │ ├── build-n-test-jobs.yml │ ├── env-jobs.yml │ ├── schedules │ └── build-n-test-jobs.yml │ └── trigger-jobs.yml ├── .gitlab └── merge_request_templates │ └── general.md ├── .gitmodules ├── .travis.yml ├── CMakeLists.txt ├── CODEOWNERS ├── CONTRIBUTING.md ├── CONTROL_REPLICATION_REFACTOR.md ├── LICENSE ├── README.md ├── RELEASE.md ├── SCALING.md ├── VERSION ├── WORKING ├── arch ├── developer-clang ├── developer-flecsi ├── developer-gnu ├── developer-intel ├── full-clang ├── full-gnu ├── generic-clang ├── generic-gnu ├── legion-gnu └── strict-gnu ├── auxiliary ├── clang │ └── README.md ├── patterns │ ├── 01-meyers_singleton │ │ ├── main.cc │ │ └── meyers_singleton.h │ ├── 02-object_factory │ │ └── factory.h │ ├── 03-type_erasure │ │ └── type_erasure.md │ ├── 04-CRTP │ │ └── CRTP.md │ └── 05-tuple_walker │ │ └── tuple_walker.md └── vim │ ├── README.md │ ├── ftdetect_fcc.vim │ ├── install │ └── syntax_fcc.vim ├── bin └── scaling │ ├── cell.cc │ ├── connectivities.cc │ ├── create_entity.cc │ ├── edge.cc │ ├── entity_types.cc │ ├── init.cc │ ├── main.cc │ ├── main.cpp │ ├── traversal.cc │ └── vertex.cc ├── config ├── .clang-format ├── FleCSIConfig.cmake.in ├── brand.py ├── flecsi-config.h.in └── project.cmake ├── developer ├── BACKEND.md ├── CI.md ├── CXX_STANDARD.md ├── DOCUMENTATION.md ├── GIT.md ├── LARistraDependency.md ├── README.md ├── REFACTOR_NOTES.md ├── debug_build.sh ├── laristrachile.png ├── ristraDependencyGraph.png ├── template.cc ├── template.h ├── template.txt ├── travis-workflow.png └── travisCIgraph.png ├── doc ├── data_model │ ├── DataRequirements.pdf │ ├── DataRequirements.tex │ ├── FieldRequirements.tex │ ├── Introduction.tex │ ├── ParticleRequirements.tex │ ├── PhysicalModelData.tex │ ├── Requirements.tex │ ├── ResearchNote_pdf.cls │ ├── SimConstData.tex │ ├── SimMutableData.tex │ ├── algorithm.sty │ ├── algorithm2e.sty │ ├── algorithmic.sty │ ├── figures │ │ ├── Boxologies.pptx │ │ └── SimpleHierarchy.pdf │ ├── logo.eps │ ├── logo.jpg │ ├── tmadd.sty │ └── tmath.sty ├── doxygen-header.html ├── doxygen-mainpage.md ├── doxygen-setup.h ├── doxygen.conf.in ├── doxygen │ └── images │ │ ├── element_ordering │ │ ├── hexahedron-edges.png │ │ ├── hexahedron-edges.svg │ │ ├── hexahedron-faces.png │ │ ├── hexahedron-faces.svg │ │ ├── quadrilateral.png │ │ ├── quadrilateral.svg │ │ ├── tetrahedron-edges.png │ │ ├── tetrahedron-edges.svg │ │ ├── tetrahedron-faces.png │ │ ├── tetrahedron-faces.svg │ │ ├── triangle.png │ │ └── triangle.svg │ │ ├── hierarchy.png │ │ ├── scale-hierarchy.png │ │ └── tutorial-00-cfg.png ├── flecsi-documentation-figures.pptx ├── flecsi-favicon.ico ├── flecsi-square.png ├── flecsi.png ├── flecsi_dg.py ├── flecsi_dg_header.tex.in ├── flecsi_dg_title.tex ├── flecsi_ug.py ├── flecsi_ug_header.tex.in ├── flecsi_ug_title.tex ├── medium-flecsi.png ├── sagittarius.svg └── small-flecsi.png ├── docker └── Dockerfile ├── flecsi-tutorial ├── 00-driver │ ├── Makefile │ └── driver.cc ├── 01-tasks │ ├── Makefile │ └── tasks.cc ├── 02-data-clients │ ├── Makefile │ ├── README.md │ └── data-clients.cc ├── 03-index-spaces │ ├── Makefile │ └── index-spaces.cc ├── 04-fields │ ├── Makefile │ └── fields.cc ├── 05-dense-data │ ├── Makefile │ ├── dense-data.cc │ └── types.h ├── 06-sparse-data │ ├── Makefile │ └── sparse-data.cc ├── 07-ragged-data │ ├── Makefile │ └── ragged-data.cc ├── 08-mpi-interoperability │ ├── Makefile │ └── mpi-interoperability.cc ├── 09-forall │ ├── Makefile │ └── forall.fcc ├── 10-global-objects │ ├── GLOBAL-OBJECTS.md │ ├── Makefile │ └── global-objects.cc ├── XX-functions │ └── functions.cc ├── XX-futures │ └── futures.cc ├── clean ├── docker │ ├── README.md │ ├── configfiles │ │ ├── .bash │ │ │ ├── colors │ │ │ └── functions │ │ ├── .bashrc │ │ ├── .dircolors │ │ ├── .modulefiles │ │ │ └── aliases │ │ └── .vimrc │ ├── legion │ └── mpi └── specialization │ ├── README.md │ ├── control │ ├── CMakeLists.txt │ ├── control.cc │ ├── control.h │ ├── node_type.h │ └── policy.h │ ├── inputs │ └── simple2d-16x16.msh │ ├── io │ ├── CMakeLists.txt │ └── vtk │ │ ├── rectilinearGrid.h │ │ ├── structuredGrid.h │ │ ├── unstructuredGrid.h │ │ └── vtkMPI.h │ └── mesh │ ├── CMakeLists.txt │ ├── coloring.cc │ ├── coloring.h │ ├── control_points.cc │ ├── entity_types.h │ ├── inputs.h │ ├── mesh.h │ ├── policy.h │ └── tasks.h ├── flecsi ├── canonical-mesh.pdf ├── charter.md ├── code-structure.pdf ├── colored-mesh.pdf ├── coloring │ ├── CMakeLists.txt │ ├── adjacency_types.h │ ├── box_colorer.h │ ├── box_types.h │ ├── colorer.h │ ├── coloring_types.h │ ├── communicator.h │ ├── concept.h │ ├── crs.h │ ├── dcrs_utils.h │ ├── index_coloring.h │ ├── metis_colorer.h │ ├── mpi_communicator.h │ ├── naive_colorer.h │ ├── parmetis_colorer.h │ ├── parmetis_geom_colorer.h │ ├── parmetis_geomkway_colorer.h │ ├── parmetis_repart_colorer.h │ ├── simple_box_colorer.h │ └── test │ │ ├── coloring.cc │ │ ├── dcrs.cc │ │ ├── devel-dcrs.cc │ │ ├── exodus2d-mixed.exo │ │ ├── exodus3d-hex.exo │ │ ├── index_coloring.blessed │ │ ├── index_coloring.cc │ │ ├── simple2d-16x16.msh │ │ ├── simple2d-32x32.msh │ │ ├── simple2d-48x48.msh │ │ ├── simple2d-8x8.msh │ │ ├── test_simple_box_colorer_2d.cc │ │ └── test_simple_box_colorer_3d.cc ├── concurrency │ ├── CMakeLists.txt │ ├── thread_pool.h │ └── virtual_semaphore.h ├── control │ ├── CMakeLists.txt │ ├── control.h │ ├── macro.h │ ├── phase_walker.h │ ├── runtime.h │ ├── runtime_main.cc │ └── test │ │ ├── control.cc │ │ ├── node_type.h │ │ ├── policy.h │ │ ├── runtime_model.cc │ │ └── runtimes.h ├── data │ ├── CMakeLists.txt │ ├── accessor.h │ ├── client.h │ ├── common │ │ ├── data_hash.h │ │ ├── data_reference.h │ │ ├── data_types.h │ │ ├── privilege.h │ │ ├── registration_wrapper.h │ │ ├── row_vector.h │ │ └── serdez.h │ ├── data.h │ ├── data.md │ ├── data_client.h │ ├── data_client_handle.h │ ├── data_constants.h │ ├── dense_accessor.h │ ├── dense_data_handle.h │ ├── field.h │ ├── global_accessor.h │ ├── global_data_handle.h │ ├── hpx │ │ ├── data_client_handle_policy.h │ │ ├── data_handle_policy.h │ │ ├── data_policy.h │ │ ├── dense.h │ │ ├── global.h │ │ ├── meta_data.h │ │ ├── registration_wrapper.h │ │ ├── scoped.h │ │ ├── sparse.h │ │ ├── sparse_data_handle_policy.h │ │ ├── storage_policy.h │ │ └── tuple.h │ ├── internal_client.cc │ ├── internal_client.h │ ├── legion │ │ ├── color.h │ │ ├── data_client_handle_policy.h │ │ ├── data_policy.h │ │ ├── dense.h │ │ ├── dense_data_handle_policy.h │ │ ├── global.h │ │ ├── global_data_handle_policy.h │ │ ├── legion_data.h │ │ ├── scoped.h │ │ ├── sparse.h │ │ ├── sparse_data_handle_policy.h │ │ ├── storage_policy.h │ │ └── tuple.h │ ├── mpi │ │ ├── color.h │ │ ├── data_client_handle_policy.h │ │ ├── data_handle_policy.h │ │ ├── data_policy.h │ │ ├── dense.h │ │ ├── global.h │ │ ├── sparse.h │ │ ├── sparse_data_handle_policy.h │ │ └── storage_policy.h │ ├── mutator.h │ ├── ragged_accessor.h │ ├── ragged_mutator.h │ ├── set_topology_handle.h │ ├── sparse_accessor.h │ ├── sparse_data_handle.h │ ├── sparse_mutator.h │ ├── storage.h │ ├── storage_class.h │ └── test │ │ ├── client_registration.cc │ │ ├── data-handle-serial.h │ │ ├── data-handle.h │ │ ├── storage_class.cc │ │ └── storage_class.h ├── developer-guide.md ├── execution │ ├── CMakeLists.txt │ ├── common │ │ ├── execution_state.h │ │ ├── function_handle.h │ │ ├── launch.h │ │ └── processor.h │ ├── context.h │ ├── default_driver.h │ ├── driver_initialization.cc │ ├── execution-structure.pdf │ ├── execution.h │ ├── execution.md │ ├── function.h │ ├── global_object_wrapper.h │ ├── hpx │ │ ├── context_policy.cc │ │ ├── context_policy.h │ │ ├── execution_policy.h │ │ ├── future.h │ │ ├── internal_task.h │ │ ├── processor_policy.h │ │ ├── runtime_driver.cc │ │ ├── runtime_driver.h │ │ ├── runtime_main.cc │ │ └── task_wrapper.h │ ├── internal_index_space.h │ ├── kernel.h │ ├── legion │ │ ├── context_policy.cc │ │ ├── context_policy.h │ │ ├── execution_policy.h │ │ ├── finalize_handles.h │ │ ├── future.h │ │ ├── helper.h │ │ ├── init_args.h │ │ ├── init_handles.h │ │ ├── internal_field.h │ │ ├── internal_task.h │ │ ├── legion_tasks.cc │ │ ├── legion_tasks.h │ │ ├── mapper.h │ │ ├── reduction_wrapper.h │ │ ├── registration_wrapper.h │ │ ├── runtime_driver.cc │ │ ├── runtime_driver.h │ │ ├── runtime_main.cc │ │ ├── runtime_state.h │ │ ├── task_epilog.h │ │ ├── task_prolog.h │ │ └── task_wrapper.h │ ├── mpi │ │ ├── context_policy.cc │ │ ├── context_policy.h │ │ ├── execution_policy.h │ │ ├── finalize_handles.h │ │ ├── future.h │ │ ├── future.h_tmp │ │ ├── reduction_wrapper.h │ │ ├── runtime_driver.cc │ │ ├── runtime_driver.h │ │ ├── runtime_main.cc │ │ ├── task_epilog.h │ │ └── task_prolog.h │ ├── reduction.h │ ├── remap_shared.h │ ├── task.h │ └── test │ │ ├── concept_coloring.cc │ │ ├── data_client_handle.blessed │ │ ├── data_client_handle.cc │ │ ├── data_handle_task.cc │ │ ├── dense_data.blessed │ │ ├── dense_data.cc │ │ ├── devel_handle.cc │ │ ├── execution_structure.cc │ │ ├── finite_difference_dense.cc │ │ ├── finite_difference_sparse.cc │ │ ├── forall.fcc │ │ ├── future_handle.cc │ │ ├── ghost_access_drivers.cc │ │ ├── gid_to_lid_map.cc │ │ ├── global_data.blessed │ │ ├── global_data.cc │ │ ├── gpu_task.cc │ │ ├── handle_accessor.cc │ │ ├── handle_list.cc │ │ ├── handle_tuple.cc │ │ ├── harness.cc │ │ ├── harness.h │ │ ├── index_subspaces.cc │ │ ├── kokkos.cc │ │ ├── launch.cc │ │ ├── legion │ │ ├── internal_task_driver.cc │ │ ├── mapper_compaction.cc │ │ ├── read_waits_on_write.cc │ │ └── serdez.cc │ │ ├── particles.cc │ │ ├── ragged_data.blessed │ │ ├── ragged_data.cc │ │ ├── reduction_interface.cc │ │ ├── restart.cc │ │ ├── set_topology.cc │ │ ├── simple2d-16x16.msh │ │ ├── simple2d-64x64.msh │ │ ├── simple2d-8x8.msh │ │ ├── simple_function.cc │ │ ├── simple_task.cc │ │ ├── sparse_data.blessed │ │ ├── sparse_data.cc │ │ ├── task_privileges_dense.blessed │ │ ├── task_privileges_dense.cc │ │ ├── task_privileges_sparse.blessed │ │ ├── task_privileges_sparse.cc │ │ ├── test_mpi_wo_permissions.cc │ │ └── unordered_ispaces.cc ├── geometry │ ├── CMakeLists.txt │ ├── point.h │ ├── space_vector.h │ └── test │ │ ├── point.cc │ │ └── space_vector.cc ├── index_spaces.md ├── io │ ├── CMakeLists.txt │ ├── backend.h │ ├── io.h │ ├── io.md │ ├── io_base.h │ ├── io_exodus.h │ ├── io_hdf5.h │ ├── io_interface.h │ ├── legion │ │ ├── policy.cc │ │ └── policy.h │ ├── mpi │ │ └── policy.h │ ├── simple_definition.h │ └── test │ │ ├── hdf5_restart.cc │ │ ├── io.cc │ │ ├── legion │ │ └── io_hdf5.cc │ │ ├── simple2d-16x16.msh │ │ ├── simple2d-4x4.msh │ │ ├── simple2d-8x8.msh │ │ └── simple_definition.cc ├── runtime │ ├── CMakeLists.txt │ ├── flecsi_runtime_context_policy.h │ ├── flecsi_runtime_data_client_handle_policy.h │ ├── flecsi_runtime_data_handle_policy.h │ ├── flecsi_runtime_data_policy.h │ ├── flecsi_runtime_entity_storage_policy.h │ ├── flecsi_runtime_execution_policy.h │ ├── flecsi_runtime_set_topology_policy.h │ ├── flecsi_runtime_storage_policy.h │ ├── flecsi_runtime_topology_policy.h │ └── types.h ├── supplemental │ ├── coloring │ │ ├── add_colorings.cc │ │ ├── add_colorings.h │ │ ├── coloring_functions.h │ │ ├── concept_coloring.cc │ │ ├── concept_coloring.h │ │ └── tikz.h │ └── mesh │ │ ├── empty_mesh_2d.h │ │ └── test_mesh_2d.h ├── topology │ ├── CMakeLists.txt │ ├── closure_utils.h │ ├── color_topology.h │ ├── common │ │ ├── array_buffer.h │ │ └── entity_storage.h │ ├── connectivity.h │ ├── entity_storage.h │ ├── global_topology.h │ ├── hpx │ │ ├── set_storage_policy.h │ │ └── storage_policy.h │ ├── index_space.h │ ├── legion │ │ ├── set_storage_policy.h │ │ └── storage_policy.h │ ├── mesh.h │ ├── mesh_definition.h │ ├── mesh_storage.h │ ├── mesh_topology.h │ ├── mesh_types.h │ ├── mesh_utils.h │ ├── mpi │ │ ├── set_storage_policy.h │ │ └── storage_policy.h │ ├── parallel_mesh_definition.h │ ├── partition.h │ ├── set_storage.h │ ├── set_topology.h │ ├── set_types.h │ ├── set_utils.h │ ├── structured_mesh_topology.h │ ├── test │ │ ├── bindings.blessed │ │ ├── bindings.cc │ │ ├── closure.cc │ │ ├── devel-closure.cc │ │ ├── dual.blessed │ │ ├── dual.cc │ │ ├── gravity-state.cc │ │ ├── gravity.cc │ │ ├── index-space.cc │ │ ├── pseudo_random.h │ │ ├── structured.cc │ │ ├── test_definition.h │ │ ├── traversal.blessed │ │ ├── traversal.cc │ │ ├── tree.blessed │ │ ├── tree.cc │ │ ├── tree1d.cc │ │ └── tree3d.cc │ ├── topology.md │ ├── tree_topology.h │ └── types.h ├── user-guide.md └── utils │ ├── CMakeLists.txt │ ├── annotation.h │ ├── array_ref.h │ ├── bit_buffer.h │ ├── checksum.h │ ├── common.h │ ├── const_string.h │ ├── dag.h │ ├── debruijn.cc │ ├── debruijn.h │ ├── demangle.cc │ ├── demangle.h │ ├── dimensioned_array.h │ ├── export_definitions.h │ ├── factory.h │ ├── fixed_vector.h │ ├── function_traits.h │ ├── graphviz.h │ ├── hash.h │ ├── humble.h │ ├── id.h │ ├── logging.h │ ├── macros.h │ ├── mpi_type_traits.h │ ├── offset.h │ ├── reorder.h │ ├── serialize.h │ ├── set_intersection.h │ ├── set_utils.h │ ├── simple_id.h │ ├── static_verify.h │ ├── target.h │ ├── test │ ├── array_ref.blessed │ ├── array_ref.blessed.gnug │ ├── array_ref.blessed.msvc │ ├── array_ref.cc │ ├── checksum.cc │ ├── clog.cc │ ├── common.blessed │ ├── common.blessed.gnug │ ├── common.blessed.msvc │ ├── common.blessed.ppc │ ├── common.cc │ ├── const_string.cc │ ├── dag.cc │ ├── debruijn.cc │ ├── demangle.cc │ ├── factory.blessed │ ├── factory.blessed.gnug │ ├── factory.blessed.msvc │ ├── factory.cc │ ├── fixed_vector.cc │ ├── function_traits.cc │ ├── hash.cc │ ├── humble.cc │ ├── id.blessed │ ├── id.blessed.gnug │ ├── id.blessed.msvc │ ├── id.cc │ ├── logging.cc │ ├── print_type.h │ ├── reflection.cc │ ├── reorder.cc │ ├── serialize.cc │ ├── set_intersection.cc │ ├── set_utils.blessed │ ├── set_utils.cc │ ├── simple_id.cc │ ├── static_verify.cc │ ├── tuple_type_converter.blessed.gnug │ ├── tuple_type_converter.blessed.msvc │ ├── tuple_type_converter.cc │ ├── tuple_walker.blessed │ ├── tuple_walker.cc │ ├── tuple_wrapper.cc │ ├── utility.blessed.gnug │ └── utility.cc │ ├── tuple_type_converter.h │ ├── tuple_visit.h │ ├── tuple_walker.h │ ├── tuple_wrapper.h │ ├── type_traits.h │ ├── typeify.h │ └── utility.h ├── io-poc ├── CMakeLists.txt ├── analysis.h ├── control │ ├── control.h │ ├── node_type.h │ └── policy.h ├── currents.h ├── fields.h ├── io-poc.cc ├── io.h ├── mesh.h ├── particles.h ├── runtime │ └── runtime_driver.h ├── special.h └── species.h ├── spack-repo ├── packages │ ├── flecsi │ │ └── package.py │ └── legion │ │ └── package.py └── repo.yaml ├── sphinx ├── _static │ ├── flecsi.py │ └── images │ │ ├── anvil.jpg │ │ ├── ecp.png │ │ ├── favicon.ico │ │ ├── flecsi.png │ │ ├── lanl.png │ │ └── nnsa.png ├── _templates │ └── layout.html ├── conf.py.in ├── index.rst └── src │ ├── build.rst │ ├── build │ └── options.rst │ ├── developer-guide.rst │ ├── developer-guide │ ├── patterns.rst │ ├── patterns │ │ ├── CRTP.rst │ │ ├── factory.rst │ │ ├── meyers_singleton.rst │ │ ├── policies.rst │ │ └── type_erasure.rst │ ├── style-guide.rst │ └── versioning.rst │ ├── doxygen.rst │ ├── doxygen │ ├── function.rst │ └── index.rst │ ├── team.rst │ ├── team │ ├── ben.jpg │ ├── ben.rst │ ├── christoph.jpg │ ├── christoph.rst │ ├── david.jpg │ ├── david.rst │ ├── irina.jpg │ ├── irina.rst │ ├── jonas.jpg │ ├── jonas.rst │ ├── jonathan.jpg │ ├── jonathan.rst │ ├── karen.jpg │ ├── karen.rst │ ├── nick.jpg │ ├── nick.rst │ ├── oleg.jpg │ ├── oleg.rst │ ├── ollie.jpg │ └── ollie.rst │ ├── tutorial.rst │ ├── tutorial │ ├── dense.rst │ ├── driver.rst │ ├── fields.rst │ ├── flecsit.rst │ ├── index-spaces.rst │ ├── mpi-interoperability.rst │ ├── ragged.rst │ ├── sparse.rst │ ├── specialization.rst │ ├── tasks.rst │ ├── topologies.rst │ └── topologies │ │ ├── octree.rst │ │ ├── set.rst │ │ ├── structured.rst │ │ └── unstructured.rst │ ├── user-guide.rst │ └── user-guide │ ├── control.rst │ ├── data.rst │ └── execution.rst └── tools ├── CMakeLists.txt ├── bin ├── flecsi-tutorial.csh.in ├── flecsi-tutorial.in ├── flecsi-tutorial.sh.in ├── flecsi.csh.in ├── flecsi.in └── flecsi.sh.in ├── find_guard ├── find_sources ├── flecsit ├── README.rst ├── bin │ ├── flecsit-completion.bash │ └── flecsit.in ├── flecsit.md ├── flecsit │ ├── __init__.py │ ├── base.py │ ├── driver.py │ ├── factory.py │ ├── services │ │ ├── __init__.py │ │ ├── analysis.py │ │ ├── analysis_driver │ │ │ ├── __init__.py │ │ │ ├── cmakelist.py │ │ │ └── execute.py │ │ ├── compile.py │ │ ├── compile_driver │ │ │ ├── __init__.py │ │ │ ├── cmakelists.py │ │ │ └── execute.py │ │ └── service_utils.py │ └── utils.py └── setup.py ├── flecstan ├── CMakeLists.txt ├── README.rst ├── compile.sh ├── example-field │ ├── incorrect-data-model.cc │ ├── incorrect-data-model.color │ ├── incorrect-data-model.full │ ├── incorrect-data-model.json │ ├── incorrect-data-model.plain │ ├── incorrect-type.cc │ ├── incorrect-type.color │ ├── incorrect-type.full │ ├── incorrect-type.json │ ├── incorrect-type.plain │ ├── mismatching-name.cc │ ├── mismatching-name.color │ ├── mismatching-name.full │ ├── mismatching-name.json │ ├── mismatching-name.plain │ ├── mismatching-namespace.cc │ ├── mismatching-namespace.color │ ├── mismatching-namespace.full │ ├── mismatching-namespace.json │ ├── mismatching-namespace.plain │ ├── readme.rst │ ├── type-data-range.cc │ ├── type-data-range.color │ ├── type-data-range.full │ ├── type-data-range.json │ ├── type-data-range.plain │ ├── version-out-of-range.cc │ ├── version-out-of-range.color │ ├── version-out-of-range.full │ ├── version-out-of-range.json │ └── version-out-of-range.plain ├── example │ ├── 01-task-good-register-execute-inside.cc │ ├── 01-task-good-register-execute-inside.color │ ├── 01-task-good-register-execute-inside.json │ ├── 01-task-good-register-execute-inside.plain │ ├── 02-task-good-register-execute-outside.cc │ ├── 02-task-good-register-execute-outside.color │ ├── 02-task-good-register-execute-outside.json │ ├── 02-task-good-register-execute-outside.plain │ ├── 03-task-good-register-execute-global.cc │ ├── 03-task-good-register-execute-global.color │ ├── 03-task-good-register-execute-global.json │ ├── 03-task-good-register-execute-global.plain │ ├── 04-task-good-register-not-ambiguous.cc │ ├── 04-task-good-register-not-ambiguous.color │ ├── 04-task-good-register-not-ambiguous.json │ ├── 04-task-good-register-not-ambiguous.plain │ ├── 05-task-warning-register-no-execute.cc │ ├── 05-task-warning-register-no-execute.color │ ├── 05-task-warning-register-no-execute.json │ ├── 05-task-warning-register-no-execute.plain │ ├── 06-task-warning-register-execute-warn.cc │ ├── 06-task-warning-register-execute-warn.color │ ├── 06-task-warning-register-execute-warn.json │ ├── 06-task-warning-register-execute-warn.plain │ ├── 07-task-warning-execute-wrong-function.cc │ ├── 07-task-warning-execute-wrong-function.color │ ├── 07-task-warning-execute-wrong-function.json │ ├── 07-task-warning-execute-wrong-function.plain │ ├── 08-task-ugly-register-execute-odd.cc │ ├── 08-task-ugly-register-execute-odd.color │ ├── 08-task-ugly-register-execute-odd.json │ ├── 08-task-ugly-register-execute-odd.plain │ ├── 09-task-compile-register-not-scope.cc │ ├── 09-task-compile-register-not-scope.color │ ├── 09-task-compile-register-not-scope.json │ ├── 09-task-compile-register-not-scope.plain │ ├── 10-task-compile-execute-not-scope.cc │ ├── 10-task-compile-execute-not-scope.color │ ├── 10-task-compile-execute-not-scope.json │ ├── 10-task-compile-execute-not-scope.plain │ ├── 11-task-compile-register-not-token.cc │ ├── 11-task-compile-register-not-token.color │ ├── 11-task-compile-register-not-token.json │ ├── 11-task-compile-register-not-token.plain │ ├── 12-task-compile-register-ambiguous.cc │ ├── 12-task-compile-register-ambiguous.color │ ├── 12-task-compile-register-ambiguous.json │ ├── 12-task-compile-register-ambiguous.plain │ ├── 13-task-compile-register-duplicate.cc │ ├── 13-task-compile-register-duplicate.color │ ├── 13-task-compile-register-duplicate.json │ ├── 13-task-compile-register-duplicate.plain │ ├── 14-task-run-flecsi-register-duplicate-hash.cc │ ├── 14-task-run-flecsi-register-duplicate-hash.color │ ├── 14-task-run-flecsi-register-duplicate-hash.json │ ├── 14-task-run-flecsi-register-duplicate-hash.plain │ ├── 15-task-run-segfault-register-forgot.cc │ ├── 15-task-run-segfault-register-forgot.color │ ├── 15-task-run-segfault-register-forgot.json │ ├── 15-task-run-segfault-register-forgot.plain │ ├── 16-task-run-segfault-execute-odd.cc │ ├── 16-task-run-segfault-execute-odd.color │ ├── 16-task-run-segfault-execute-odd.json │ ├── 16-task-run-segfault-execute-odd.plain │ ├── 17-task-run-segfault-register-typo.cc │ ├── 17-task-run-segfault-register-typo.color │ ├── 17-task-run-segfault-register-typo.json │ ├── 17-task-run-segfault-register-typo.plain │ ├── 18-task-run-segfault-register-odd.cc │ ├── 18-task-run-segfault-register-odd.color │ ├── 18-task-run-segfault-register-odd.json │ ├── 18-task-run-segfault-register-odd.plain │ ├── 19-task-good-task-return-value.cc │ ├── 19-task-good-task-return-value.color │ ├── 19-task-good-task-return-value.json │ ├── 19-task-good-task-return-value.plain │ ├── 20-task-compile-argument-missing.cc │ ├── 20-task-compile-argument-missing.color │ ├── 20-task-compile-argument-missing.json │ ├── 20-task-compile-argument-missing.plain │ ├── 21-task-compile-argument-too-few.cc │ ├── 21-task-compile-argument-too-few.color │ ├── 21-task-compile-argument-too-few.json │ ├── 21-task-compile-argument-too-few.plain │ ├── 22-task-compile-argument-too-many.cc │ ├── 22-task-compile-argument-too-many.color │ ├── 22-task-compile-argument-too-many.json │ ├── 22-task-compile-argument-too-many.plain │ ├── 23-task-good-argument-int2double.cc │ ├── 23-task-good-argument-int2double.color │ ├── 23-task-good-argument-int2double.json │ ├── 23-task-good-argument-int2double.plain │ ├── 24-task-good-argument-double2int.cc │ ├── 24-task-good-argument-double2int.color │ ├── 24-task-good-argument-double2int.json │ ├── 24-task-good-argument-double2int.plain │ ├── 25-task-compile-register-duplicate-but.cc │ ├── 25-task-compile-register-duplicate-but.color │ ├── 25-task-compile-register-duplicate-but.json │ ├── 25-task-compile-register-duplicate-but.plain │ └── README.rst ├── src │ ├── flecstan-analysis.cc │ ├── flecstan-analysis.h │ ├── flecstan-arg.cc │ ├── flecstan-arg.h │ ├── flecstan-config.h │ ├── flecstan-config.h.in │ ├── flecstan-diagnostic.cc │ ├── flecstan-diagnostic.h │ ├── flecstan-macro.h │ ├── flecstan-main.cc │ ├── flecstan-misc.cc │ ├── flecstan-misc.h │ ├── flecstan-prep.cc │ ├── flecstan-prep.h │ ├── flecstan-utility.cc │ ├── flecstan-utility.h │ ├── flecstan-visitor.cc │ ├── flecstan-visitor.h │ ├── flecstan-yaml.cc │ └── flecstan-yaml.h └── talks │ ├── 2018-aug-13.pdf │ ├── 2018-oct-23.pdf │ ├── 2019-jul-02.pdf │ └── 2019-mar-12.pdf ├── format ├── mesh-gen └── main.cc ├── replace_double_underscore.sh ├── simple-ast ├── 2018-oct-23.pdf ├── one.hh ├── runme ├── two.cc └── visit.cc └── texit /.codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | precision: 1 3 | round: down 4 | range: "70...100" 5 | ignore: 6 | - flecsi/.*/test/.* 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | *.pyc 3 | CMakeCache.txt 4 | CMakeFiles 5 | cmake_install.cmake 6 | compile_commands.json 7 | *~ 8 | .DS_Store 9 | build 10 | build* 11 | builds 12 | *_build 13 | *.Linux 14 | *.tex 15 | *.log 16 | *.aux 17 | .vscode 18 | 19 | flecsi-tutorial/*/*.tex 20 | flecsi-tutorial/*/*.log 21 | flecsi-tutorial/*/*.aux 22 | flecsi-tutorial/*/*.pdf 23 | flecsi-tutorial/*/driver 24 | flecsi-tutorial/*/tasks 25 | flecsi-tutorial/*/data-clients 26 | flecsi-tutorial/*/functions 27 | flecsi-tutorial/*/futures 28 | flecsi-tutorial/*/index-spaces 29 | flecsi-tutorial/*/fields 30 | flecsi-tutorial/*/dense-data 31 | flecsi-tutorial/*/sparse-data 32 | flecsi-tutorial/*/ragged-data 33 | flecsi-tutorial/*/forall 34 | flecsi-tutorial/*/global-objects 35 | flecsi-tutorial/*/mpi-interoperability 36 | -------------------------------------------------------------------------------- /.gitlab-ci/config/mirrors.yaml: -------------------------------------------------------------------------------- 1 | mirrors: 2 | public-mirrors: file:///projects/ngc/public/ristra_spack_mirrors/ristra-deps-mirror 3 | -------------------------------------------------------------------------------- /.gitlab-ci/config/upstreams.yaml: -------------------------------------------------------------------------------- 1 | upstreams: 2 | public-spack: 3 | install_tree: /projects/ngc/public/ristra_module_gen/spack-v0.15.4/opt/spack 4 | modules: 5 | tcl: /projects/ngc/public/ristra_module_gen/spack-v0.15.4/share/spack/modules 6 | -------------------------------------------------------------------------------- /.gitlab-ci/index.yaml: -------------------------------------------------------------------------------- 1 | include: 2 | - .gitlab-ci/scripts/.templates.yml 3 | - .gitlab-ci/scripts/.global-variables.yml 4 | - .gitlab-ci/scripts/.before-script.yml 5 | - .gitlab-ci/scripts/env-jobs.yml 6 | - .gitlab-ci/scripts/build-n-test-jobs.yml 7 | - .gitlab-ci/scripts/trigger-jobs.yml 8 | - .gitlab-ci/scripts/schedules/build-n-test-jobs.yml 9 | -------------------------------------------------------------------------------- /.gitlab-ci/scripts/.before-script.yml: -------------------------------------------------------------------------------- 1 | before_script: 2 | - '[ "$(git rev-parse origin/$CI_COMMIT_REF_NAME)" != "$CI_COMMIT_SHA" ] && curl --header "PRIVATE-TOKEN: $MY_CI_API_TOKEN" -X POST https://gitlab.lanl.gov/api/v4/projects/$CI_PROJECT_ID/pipelines/$CI_PIPELINE_ID/cancel' 3 | - export HOME=${CI_PROJECT_DIR} 4 | - export TMPDIR=${CI_PROJECT_DIR} 5 | - unset SPACK_ROOT 6 | - source ${CI_PROJECT_DIR}/spack/share/spack/setup-env.sh || /bin/true 7 | - echo ${CI_RUNNER_TAGS} 8 | - export FLECSI_SPACK_SPEC="${FLECSI_SPACK_SPEC} $([ ${CI_RUNNER_TAGS} == 'laristra-setuid-shared' ] && echo 'target=x86_64')" 9 | - export FLECSI_SPACK_SPEC="${FLECSI_SPACK_SPEC} $([ ${FLECSI_BUILD_TYPE} == 'Debug' ] && echo '+debug_backend')" 10 | - | 11 | if [[ ${FLECSI_MPI_PROVIDER} == 'openmpi' ]]; 12 | then 13 | export FLECSI_SPACK_FULL_SPEC="${FLECSI_SPACK_SPEC} ^${FLECSI_MPI_PROVIDER}@${FLECSI_OPENMPI_VERSION}%gcc@${FLECSI_GCC_VERSION} ${FLECSI_OPENMPI_SPEC}"; 14 | else 15 | export FLECSI_SPACK_FULL_SPEC="${FLECSI_SPACK_SPEC} ^${FLECSI_MPI_PROVIDER}@${FLECSI_MPICH_VERSION}%gcc@${FLECSI_GCC_VERSION} ${FLECSI_MPICH_SPEC}"; 16 | fi 17 | - | 18 | if [[ -d ${CI_PROJECT_DIR}/spack ]]; 19 | then 20 | spack reindex; 21 | spack -e spack_env module tcl refresh -y; 22 | fi 23 | -------------------------------------------------------------------------------- /.gitlab-ci/scripts/.templates.yml: -------------------------------------------------------------------------------- 1 | ############# 2 | # Templates # 3 | ############# 4 | 5 | .common: 6 | only: 7 | refs: 8 | - "1.4" 9 | - "1" 10 | - merge_requests 11 | except: 12 | refs: 13 | - schedules 14 | 15 | .nightly: 16 | only: 17 | refs: 18 | - schedules 19 | variables: 20 | - $FLECSI_SCHEDULE == "nightly" 21 | except: 22 | 23 | .cache: 24 | cache: 25 | #key: ${CI_JOB_NAME_NOSTAGE%.*}-${CI_COMMIT_REF_SLUG} 26 | key: ${CI_COMMIT_REF_SLUG}-${CI_JOB_NAME} 27 | paths: 28 | - ${CCACHE_DIR} 29 | 30 | .artifacts: 31 | artifacts: 32 | name: "flecsi-${CI_COMMIT_REF_SLUG}-${CI_JOB_NAME}-${CI_JOB_ID}" 33 | paths: 34 | - ${CI_PROJECT_DIR}/build #/builds/next-generation-codes/laristra/flecsale-mm/build 35 | when: always 36 | expire_in: 3 hours 37 | dependencies: [] 38 | 39 | .shell_runner: 40 | tags: 41 | - laristra-setuid-shared 42 | 43 | .batch_runner: 44 | tags: 45 | - darwin-slurm-shared 46 | variables: 47 | SCHEDULER_PARAMETERS: "--nodes=1 --partition=skylake-gold" 48 | 49 | .job: 50 | retry: 0 51 | extends: 52 | - .common 53 | - .cache 54 | - .shell_runner 55 | -------------------------------------------------------------------------------- /.gitlab-ci/scripts/build-n-test-jobs.yml: -------------------------------------------------------------------------------- 1 | ##################### 2 | # Build_n_Test Jobs # 3 | ##################### 4 | 5 | centOS_openmpi_mpi_gcc: 6 | extends: .build_n_test 7 | dependencies: [ openmpi_mpi ] 8 | variables: 9 | FLECSI_RUNTIME: "mpi" 10 | FLECSI_BUILD_TYPE: "Debug" 11 | FLECSI_MPI_PROVIDER: "openmpi" 12 | 13 | centOS_mpich_mpi_clang: 14 | extends: centOS_openmpi_mpi_gcc 15 | dependencies: [ mpich_mpi ] 16 | variables: 17 | FLECSI_MPI_PROVIDER: "mpich" 18 | 19 | centOS_openmpi_legion_gcc: 20 | extends: centOS_openmpi_mpi_gcc 21 | dependencies: [ openmpi_legion ] 22 | variables: 23 | FLECSI_RUNTIME: "legion" 24 | 25 | centOS_mpich_legion_clang: 26 | extends: centOS_openmpi_legion_gcc 27 | dependencies: [ mpich_legion ] 28 | variables: 29 | FLECSI_MPI_PROVIDER: "mpich" 30 | 31 | centOS_openmpi_hpx_gcc: 32 | extends: centOS_openmpi_mpi_gcc 33 | dependencies: [ openmpi_hpx ] 34 | variables: 35 | FLECSI_RUNTIME: "hpx" 36 | allow_failure: true 37 | 38 | centOS_mpich_hpx_clang: 39 | extends: centOS_openmpi_hpx_gcc 40 | dependencies: [ mpich_hpx ] 41 | variables: 42 | FLECSI_MPI_PROVIDER: "mpich" 43 | -------------------------------------------------------------------------------- /.gitlab-ci/scripts/trigger-jobs.yml: -------------------------------------------------------------------------------- 1 | flecsale-mm: 2 | stage: Trigger 3 | only: 4 | - merge_requests 5 | - "1.4" 6 | variables: 7 | UPSTREAM_REPO: "flecsi" 8 | UPSTREAM_BRANCH: $CI_COMMIT_REF_NAME 9 | UPSTREAM_URL: $CI_PROJECT_URL 10 | CXXFLAGS: "-Wno-deprecated-declarations" 11 | trigger: 12 | project: laristra/flecsale-mm-ci 13 | branch: master 14 | strategy: depend 15 | allow_failure: true 16 | -------------------------------------------------------------------------------- /.gitlab/merge_request_templates/general.md: -------------------------------------------------------------------------------- 1 | ## Description 2 | 3 | 4 | ## Related Issues 5 | 6 | 7 | ## Checklist 8 | - Add `WIP:` to MR title until the MR is ready to merge 9 | - Add "Description" section above for your MR 10 | - Mention any other repo with MRs that would need coordination with this MR 11 | - Add "Related Issues" section above if any (eg, `Fixes #{issue number}`) 12 | - Ping any `@username` in description or comments as necessary 13 | - Ping `@ktsai` if you are changing CI related code 14 | - Add/adjust tests if needed 15 | - Add related documentation 16 | - Build the code locally 17 | - Run the tests/examples locally 18 | - Get code review 19 | - Ping `@merger-username(s)` when ready for merge 20 | 21 | ## Mergers require the following to be done before merging: 22 | - Code review had been done 23 | - If this repo/branch is mirrored to Github, make sure your MR is safe to be pushed to open 24 | - Gitlab CI has passed 25 | - All "issues" in the MR have been resolved 26 | - `WIP:` has been removed 27 | - Branch is up-to-date with `1.4` 28 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "cinch"] 2 | path = cinch 3 | url = ../../laristra/cinch.git 4 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Lines starting with a `#` will be ignored 2 | # https://docs.gitlab.com/ee/user/project/code_owners.html#the-syntax-of-code-owners-files 3 | # This will ping the code owner(s) if we have the approval setup (not available with community edition) 4 | 5 | # Rules defined later in the file take precedence over the rules defined before 6 | 7 | .travis.yml @laristra 8 | docker/ @laristra 9 | .gitlab-ci.yml @laristra 10 | spack-repo/ @laristra 11 | 12 | CODEOWNERS @laristra @ddd -------------------------------------------------------------------------------- /RELEASE.md: -------------------------------------------------------------------------------- 1 | # FleCSI Release Notes 2 | 3 | * Add Legion support for sparse and ragged storage classes 4 | * Add MPI support for color and global storage classes 5 | * Resolve issues with global 6 | * Add tutorial examples, e.g., interop, specialization 7 | * Pass through improved error handling (uniform appraoch -> clog) 8 | * Make sure that clog can be disabled (overhead) 9 | * Fix Legion warnings 10 | * Improve unit test coverage, clean-up tests 11 | * Improve documentation, add instructions for building documentation 12 | * Improve CMake options, try to make defaults behave well 13 | * Merge topolgoy storage implementations for all runtimes 14 | * Document flecsit 15 | * What is the difference between Legion::Runtime and Legion::HighLevelRuntime? 16 | * utils/uint128.h: Why is there material in FleCSI with a non-LANL copyright? 17 | * Fix FindGraphviz.cmake to error correctly when lib is not found. 18 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | echo "1.4" 4 | -------------------------------------------------------------------------------- /WORKING: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # Working issues 3 | #------------------------------------------------------------------------------# 4 | 5 | - Update copyrights with standard header. 6 | - Add context interface for adjacency information. 7 | - Add functional form for specialization tlt initialization. 8 | 9 | - Check context header dependencies (Circular? How does this work?) 10 | 11 | - Enable CLOG_MPI if MPI_ENABLE is on. 12 | 13 | - Adding blender 14 | - Define subset index spaces 15 | - Fix futures 16 | 17 | *** 18 | - Make macro interface self-contained -> users don't need to use the 19 | flecsi namespace. 20 | 21 | - Add new permissions: 22 | na - no access / not applicable 23 | ro - read only 24 | wo - write only 25 | rw - read write 26 | 27 | Also fix behavior in task mappings 28 | 29 | - Add index sub-spaces 30 | all 31 | exclusive 32 | shared 33 | ghost 34 | owned 35 | 36 | - Determine whether or not ghost copies are per variable 37 | 38 | NOTE: Currently, we cannot accommodate communication latency hiding because 39 | we do not have an implementation of the na permissions. 40 | -------------------------------------------------------------------------------- /auxiliary/patterns/01-meyers_singleton/main.cc: -------------------------------------------------------------------------------- 1 | #include "meyers_singleton.h" 2 | 3 | int 4 | main(int argc, char ** argv) { 5 | 6 | // Call the singleton instance and invoke the print method. 7 | singleton_t::instance().print(); 8 | 9 | return 0; 10 | } // main 11 | -------------------------------------------------------------------------------- /auxiliary/vim/README.md: -------------------------------------------------------------------------------- 1 | # FleCSI: Vim Syntax Highlighting 2 | 7 | 8 | 12 | # Vim Syntax Highlighting 13 | 14 | The FleCSI C++ language extensions add new syntax that can be 15 | highlighted in vim. To install the files, simply execute the *install* 16 | script in this directory: 17 | 18 | ``` 19 | $ ./install 20 | ``` 21 | 22 | The files will be copied into the appropriate location in your home 23 | directory. When you open a file with the FleCSI *.fcc* or *.fh* file, 24 | your code will be correctly highlighted. 25 | 26 | 27 | -------------------------------------------------------------------------------- /auxiliary/vim/ftdetect_fcc.vim: -------------------------------------------------------------------------------- 1 | au BufNewFile,BufRead *.fcc,*.fh setf fcc 2 | -------------------------------------------------------------------------------- /auxiliary/vim/install: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | mkdir -p ~/.vim/syntax 4 | mkdir -p ~/.vim/ftdetect 5 | 6 | cp syntax_fcc.vim ~/.vim/syntax/fcc.vim 7 | cp ftdetect_fcc.vim ~/.vim/ftdetect/fcc.vim 8 | -------------------------------------------------------------------------------- /auxiliary/vim/syntax_fcc.vim: -------------------------------------------------------------------------------- 1 | " Vim syntax file 2 | " Language: FleCSI C++ 3 | " Current Maintainer: Ben Bergen (https://github.com/ristra/flecsi) 4 | " Last Change: 2018 Jan 23 5 | 6 | " quit when a syntax file was already loaded 7 | if exists("b:current_syntax") 8 | finish 9 | endif 10 | 11 | runtime! syntax/cpp.vim 12 | unlet b:current_syntax 13 | 14 | " FleCSI extensions 15 | syn keyword flecsiRepeat forall reduceall scan 16 | 17 | " Default highlighting 18 | hi def link flecsiRepeat Repeat 19 | 20 | let b:current_syntax = "fcc" 21 | -------------------------------------------------------------------------------- /bin/scaling/cell.cc: -------------------------------------------------------------------------------- 1 | class Cell_$DOMAIN : public mesh_entity_t<2, $NUM_DOMAINS> 2 | { 3 | public: 4 | Cell_$DOMAIN(mesh_topology_base_t & mesh) : mesh_(mesh) {} 5 | 6 | void set_precedence(size_t dim, uint64_t precedence) {} 7 | 8 | std::vector create_entities(flecsi::id_t cell_id, 9 | size_t dim, 10 | domain_connectivity<$NUM_DIMENSIONS> & c, 11 | flecsi::id_t * e) { 12 | flecsi::id_t * v = c.get_entities(cell_id, 0); 13 | 14 | e[0] = v[0]; 15 | e[1] = v[2]; 16 | 17 | e[2] = v[1]; 18 | e[3] = v[3]; 19 | 20 | e[4] = v[0]; 21 | e[5] = v[1]; 22 | 23 | e[6] = v[2]; 24 | e[7] = v[3]; 25 | 26 | return {2, 2, 2, 2}; 27 | } 28 | 29 | private: 30 | mesh_topology_base_t & mesh_; 31 | }; 32 | -------------------------------------------------------------------------------- /bin/scaling/connectivities.cc: -------------------------------------------------------------------------------- 1 | std::tuple, Vertex_$DOMAIN, Edge_$DOMAIN>, 2 | std::tuple, Vertex_$DOMAIN, Cell_$DOMAIN>, 3 | std::tuple, Edge_$DOMAIN, Vertex_$DOMAIN>, 4 | std::tuple, Edge_$DOMAIN, Cell_$DOMAIN>, 5 | std::tuple, Cell_$DOMAIN, Vertex_$DOMAIN>, 6 | std::tuple, Cell_$DOMAIN, Edge_$DOMAIN> -------------------------------------------------------------------------------- /bin/scaling/create_entity.cc: -------------------------------------------------------------------------------- 1 | case $DOMAIN: { 2 | switch(D) { 3 | case 1: 4 | return mesh->make(*mesh); 5 | default: 6 | assert(false && "invalid topological dimension"); 7 | } 8 | break; 9 | } 10 | -------------------------------------------------------------------------------- /bin/scaling/edge.cc: -------------------------------------------------------------------------------- 1 | class Edge_$DOMAIN : public mesh_entity_t<1, $NUM_DOMAINS> 2 | { 3 | public: 4 | Edge_$DOMAIN(mesh_topology_base_t &) {} 5 | }; 6 | -------------------------------------------------------------------------------- /bin/scaling/entity_types.cc: -------------------------------------------------------------------------------- 1 | std::pair, Vertex_$DOMAIN>, 2 | std::pair, Edge_$DOMAIN>, 3 | std::pair, Cell_$DOMAIN> -------------------------------------------------------------------------------- /bin/scaling/init.cc: -------------------------------------------------------------------------------- 1 | { 2 | vector vs; 3 | 4 | size_t id = 0; 5 | for(size_t j = 0; j < height + 1; ++j) { 6 | for(size_t i = 0; i < width + 1; ++i) { 7 | auto v = mesh->make(); 8 | mesh->add_entity<0, $DOMAIN>(v); 9 | vs.push_back(v); 10 | } 11 | } 12 | 13 | id = 0; 14 | size_t width1 = width + 1; 15 | for(size_t j = 0; j < height; ++j) { 16 | for(size_t i = 0; i < width; ++i) { 17 | auto c = mesh->make(*mesh); 18 | 19 | mesh->add_entity<2, $DOMAIN>(c); 20 | 21 | mesh->init_cell<$DOMAIN>( 22 | c, {vs[i + j * width1], vs[i + (j + 1) * width1], 23 | vs[i + 1 + j * width1], vs[i + 1 + (j + 1) * width1]}); 24 | } 25 | } 26 | 27 | mesh->init<$DOMAIN>(); 28 | } 29 | -------------------------------------------------------------------------------- /bin/scaling/main.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "flecsi/topology/mesh_topology.h" 5 | #include "flecsi/utils/common.h" 6 | 7 | using namespace std; 8 | using namespace flecsi; 9 | using namespace topology; 10 | 11 | $ENTITIES 12 | 13 | class TestMesh2dType 14 | { 15 | public: 16 | static constexpr size_t num_dimensions = $NUM_DIMENSIONS; 17 | 18 | static constexpr size_t num_domains = $NUM_DOMAINS; 19 | 20 | using entity_types = std::tuple<$ENTITY_TYPES>; 21 | 22 | using connectivities = std::tuple<$CONNECTIVITIES>; 23 | 24 | using bindings = std::tuple<>; 25 | 26 | template 27 | static mesh_entity_base_t * 28 | create_entity(mesh_topology_base_t * mesh, size_t num_vertices) { 29 | switch(M) { 30 | $CREATE_ENTITY 31 | default: 32 | assert(false && "invalid domain"); 33 | } 34 | } 35 | }; 36 | 37 | using TestMesh = mesh_topology_t; 38 | 39 | TEST(mesh_topology, traversal) { 40 | 41 | size_t width = 2; 42 | size_t height = 2; 43 | 44 | auto mesh = new TestMesh; 45 | 46 | $INIT 47 | 48 | $TRAVERSAL 49 | } 50 | -------------------------------------------------------------------------------- /bin/scaling/vertex.cc: -------------------------------------------------------------------------------- 1 | class Vertex_$DOMAIN : public mesh_entity_t<0, $NUM_DOMAINS> 2 | { 3 | public: 4 | template 5 | uint64_t precedence() const { 6 | return 0; 7 | } 8 | Vertex_$DOMAIN() = default; 9 | Vertex_$DOMAIN(mesh_topology_base_t &) {} 10 | }; 11 | -------------------------------------------------------------------------------- /developer/GIT.md: -------------------------------------------------------------------------------- 1 | # Git Cheat Sheet 2 | 3 | # Branch Creation 4 | 5 | This section shows how to create a branch from your current local 6 | changes, push it to the origin, and set the upstream branch location. 7 | 8 | ``` 9 | $ git checkout -b new-branch-name 10 | $ git push -u origin new-branch-name 11 | ``` 12 | 13 | # Prune Directories 14 | 15 | This section shows how to move a subdirectory from one project to 16 | another, while preserving commit history. 17 | 18 | Isolate the subdirectory you want to move: 19 | ``` 20 | $ git clone project-has-subdirectory 21 | $ cd project-has-subdirectory 22 | $ git remote rm origin 23 | $ git filter-branch --subdirectory-filter subdirectory -- --all 24 | $ mkdir subdirectory 25 | $ mv * subdirectory 26 | $ git add . 27 | $ git commit 28 | ``` 29 | 30 | Merge isolated subdirectory into the new project: 31 | ``` 32 | $ git clone project-gets-subdirectory 33 | $ cd project-gets-subdirectory 34 | $ git remote add has_subdirectory_branch project_has_subdirectory 35 | $ git pull has_subdirectory_branch master --allow-unrelated-histories 36 | $ git remote rm has_subdirectory_branch 37 | ``` 38 | 39 | 40 | -------------------------------------------------------------------------------- /developer/LARistraDependency.md: -------------------------------------------------------------------------------- 1 | ![logo](laristrachile.png) 2 | 3 | # LA Ristra Repo Summary 4 | 5 | * `flecsi-buildenv`: FleCSI's build environment using docker for Travis-CI 6 | * `flecsi-third-party`: Third party libraries for FleCSI and other project 7 | * `flecsi`: A set of computational science infrastructure tools 8 | designed to aid in the implementation of multi-physics application development 9 | * `flecsph`: A distributed parallel implementation of SPH problem using FleCSI framework 10 | * `libristra`: A set of support utilities for other LA Ristra projects 11 | * `flecsi-sp`: A set of various specializations for use with the FleCSI 12 | core programming system 13 | * `flecsale`: A project for studying multi-phase continuum dynamics problems with 14 | different runtime environments using FleCSI's framework 15 | * ` portage-buildenv`: Portage's build environment using docker for Travis-CI 16 | * `tangram`: A framework for interface reconstruction in computational physics applications 17 | * `portage`: A framework for general purpose data remapping - between meshes, particles or meshes and particles - in computational physics applications. 18 | 19 | # LA Ristra Dependency Graph 20 | 21 | ![graph](ristraDependencyGraph.png) 22 | -------------------------------------------------------------------------------- /developer/REFACTOR_NOTES.md: -------------------------------------------------------------------------------- 1 | # Refactor Notes 2 | 3 | **Code Review Issues** 4 | 5 | * Should *data_handle.h* be renamed to *dense_data_handle.h*??? 6 | 7 | * Boost demangle somehow got added without any checks. 8 | 9 | 10 | -------------------------------------------------------------------------------- /developer/laristrachile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/developer/laristrachile.png -------------------------------------------------------------------------------- /developer/ristraDependencyGraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/developer/ristraDependencyGraph.png -------------------------------------------------------------------------------- /developer/template.cc: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | /*! @file */ 15 | 16 | namespace flecsi {} // namespace flecsi 17 | -------------------------------------------------------------------------------- /developer/template.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | namespace flecsi {} // namespace flecsi 19 | -------------------------------------------------------------------------------- /developer/template.txt: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | # /@@///// /@@ @@////@@ @@////// /@@ 4 | # /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | # /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | # /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | # /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | # /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | # // /// ////// ////// //////// // 10 | # 11 | # Copyright (c) 2016 Los Alamos National Laboratory, LLC 12 | # All rights reserved 13 | #------------------------------------------------------------------------------# 14 | -------------------------------------------------------------------------------- /developer/travis-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/developer/travis-workflow.png -------------------------------------------------------------------------------- /developer/travisCIgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/developer/travisCIgraph.png -------------------------------------------------------------------------------- /doc/data_model/DataRequirements.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/data_model/DataRequirements.pdf -------------------------------------------------------------------------------- /doc/data_model/PhysicalModelData.tex: -------------------------------------------------------------------------------- 1 | % FleCSI Data Requirements: Physical Data requirementes section. 2 | 3 | \section{Physical Model Data Requirements}\label{PhysicalModelRequirementsSec} 4 | 5 | Physical models are used to represent physics that is too expensive to compute on--the--fly. 6 | Instead, that data is typically stored in tabular form. 7 | Many tables may be required in the course of a simulation. 8 | This section captures the requirements for such data. 9 | 10 | \begin{table}[hbt] 11 | \begin{tabular}{c p{5 in}} 12 | \toprule 13 | Requirement & Description \\ 14 | \midrule 15 | \reqNumber & This needs more specification \\ 16 | 17 | \bottomrule 18 | \end{tabular} 19 | \parbox{5in}{\caption{Requirements for Physical Model Data}\label{phys_data_req_table}} 20 | \stepcounter{reqTable} 21 | \end{table} 22 | 23 | -------------------------------------------------------------------------------- /doc/data_model/SimConstData.tex: -------------------------------------------------------------------------------- 1 | % FleCSI Data Requirements: Simulation Launch configuration data requirementes section. 2 | 3 | \section{Static Simulation Configuration Data Requirements}\label{SimConstRequirementsSec} 4 | 5 | Certain data is specified at simulation launch time; it remains static throughout the run. 6 | This data may be required throughout the simulation. 7 | It may include physical data, such as the domain extents, or 8 | computational data, such as the starting time step, or the (static) 9 | configuration of the run. 10 | This data excludes things that change over the course of the simulation, 11 | such as current simulation time, or current mesh partition. 12 | 13 | \begin{table}[hbt] 14 | \begin{tabular}{c p{5 in}} 15 | \toprule 16 | Requirement & Description \\ 17 | \midrule 18 | \reqNumber & This needs more specification \\ 19 | 20 | \bottomrule 21 | \end{tabular} 22 | \parbox{5in}{\caption{Requirements for Simulation Launch Data}\label{sim_launch_data_req_table}} 23 | \stepcounter{reqTable} 24 | \end{table} 25 | 26 | -------------------------------------------------------------------------------- /doc/data_model/SimMutableData.tex: -------------------------------------------------------------------------------- 1 | % FleCSI Data Requirements: Simulation State Data requirementes section. 2 | 3 | \section{Mutable Simulation Configuration Data Requirements}\label{SimMutableRequirementsSec} 4 | 5 | 6 | 7 | \begin{table}[hbt] 8 | \begin{tabular}{c p{5 in}} 9 | \toprule 10 | Requirement & Description \\ 11 | \midrule 12 | \reqNumber & Partition Data \\ 13 | \reqNumber & Cycle Information \\ 14 | & \Note{1}{to include: cycle number, cycle start time, delta-t, ... more spec needed}\\ 15 | & \Note{2}{should include data that can be registered and set by the user/package.}\\ 16 | & \Note{2a}{is granularity finer than cycle/time-step required?}\\ 17 | \bottomrule 18 | \end{tabular} 19 | \parbox{5in}{\caption{Requirements for Mutable Simulation State Data}\label{mutable_sim_state_data_req_table}} 20 | \stepcounter{reqTable} 21 | \end{table} 22 | 23 | \begin{table}[hbt] 24 | \begin{tabular}{c p{5 in}} 25 | \toprule 26 | Requirement & Description \\ 27 | \midrule 28 | \reqNumber & Communications topology \\ 29 | & \Note{1}{There may be multiple partitions of a single mesh.}\\ 30 | & \Note{2}{There may be multiple meshes, each partitioned differently.}\\ 31 | \bottomrule 32 | \end{tabular} 33 | \parbox{5in}{\caption{Requirements for Partitioning Data}\label{partition_data_req_table}} 34 | \stepcounter{reqTable} 35 | \end{table} 36 | 37 | -------------------------------------------------------------------------------- /doc/data_model/algorithm.sty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/data_model/algorithm.sty -------------------------------------------------------------------------------- /doc/data_model/algorithm2e.sty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/data_model/algorithm2e.sty -------------------------------------------------------------------------------- /doc/data_model/algorithmic.sty: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/data_model/algorithmic.sty -------------------------------------------------------------------------------- /doc/data_model/figures/Boxologies.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/data_model/figures/Boxologies.pptx -------------------------------------------------------------------------------- /doc/data_model/figures/SimpleHierarchy.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/data_model/figures/SimpleHierarchy.pdf -------------------------------------------------------------------------------- /doc/data_model/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/data_model/logo.jpg -------------------------------------------------------------------------------- /doc/data_model/tmadd.sty: -------------------------------------------------------------------------------- 1 | \newcommand{\msection}[1]{\underline{{\bf#1}}\\\vspace{-1\baselineskip}} 2 | \newcommand{\tradem}[1]{#1$^{\text{\tiny TM}}$} 3 | \newcommand{\ucatm}[1]{\footnote{#1 is a trademark 4 | of the Regents of the University of California, Los Alamos National 5 | Laboratory}} 6 | \newcommand{\binput}{\begin{tabbing}} 7 | \newcommand{\einput}{\end{tabbing}} 8 | \newcommand{\itsets}{\hspace{.25in}\=} 9 | \newcommand{\itsetl}{\hspace{.75in}\=} 10 | \newcommand{\latin}[1]{\textit{#1}} 11 | %%PROBLEM ENVIRONMENTS 12 | 13 | \theoremstyle{definition} 14 | \newtheorem{exa}{Example} 15 | \newtheorem{prob}{Problem} 16 | \newtheorem{tprob}{Test Problem} 17 | \newtheorem{sexa}{Example}[section] 18 | \newtheorem{sprob}{Problem}[section] 19 | \newtheorem{stprob}{Test Problem}[section] 20 | -------------------------------------------------------------------------------- /doc/data_model/tmath.sty: -------------------------------------------------------------------------------- 1 | \newcommand{\bra}[1]{\ensuremath{\langle #1|}} 2 | \newcommand{\ket}[1]{\ensuremath{|#1\rangle}} 3 | \newcommand{\obra}[2]{\ensuremath{\langle #1|#2}} 4 | \newcommand{\oket}[2]{\ensuremath{#2|#1\rangle}} 5 | \newcommand{\bket}[2]{\ensuremath{\langle #1|#2\rangle}} 6 | \newcommand{\obket}[3]{\ensuremath{\langle #1|#3|#2\rangle}} 7 | \newcommand{\kbra}[2]{\ensuremath{|#2\rangle\langle #1|}} 8 | \newcommand{\ve}[1]{\ensuremath{\mathbf{#1}}} 9 | \newcommand{\dive}[1]{\ensuremath{\nabla\cdot\mathbf{#1}}} 10 | \newcommand{\curl}[1]{\ensuremath{\nabla\times\mathbf{#1}}} 11 | \newcommand{\pder}[2]{\ensuremath{\frac{\partial #1}{\partial #2}}} 12 | \newcommand{\der}[2]{\ensuremath{\frac{d #1}{d #2}}} 13 | \newcommand{\grad}[1]{\ensuremath{\nabla #1}} 14 | \newcommand{\ele}[2]{\ensuremath{^{#1}\text{#2}}} 15 | \newcommand{\sn}[2]{\ensuremath{#1\times 10^{#2}}} 16 | -------------------------------------------------------------------------------- /doc/doxygen/images/element_ordering/hexahedron-edges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/doxygen/images/element_ordering/hexahedron-edges.png -------------------------------------------------------------------------------- /doc/doxygen/images/element_ordering/hexahedron-faces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/doxygen/images/element_ordering/hexahedron-faces.png -------------------------------------------------------------------------------- /doc/doxygen/images/element_ordering/quadrilateral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/doxygen/images/element_ordering/quadrilateral.png -------------------------------------------------------------------------------- /doc/doxygen/images/element_ordering/tetrahedron-edges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/doxygen/images/element_ordering/tetrahedron-edges.png -------------------------------------------------------------------------------- /doc/doxygen/images/element_ordering/tetrahedron-faces.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/doxygen/images/element_ordering/tetrahedron-faces.png -------------------------------------------------------------------------------- /doc/doxygen/images/element_ordering/triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/doxygen/images/element_ordering/triangle.png -------------------------------------------------------------------------------- /doc/doxygen/images/hierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/doxygen/images/hierarchy.png -------------------------------------------------------------------------------- /doc/doxygen/images/scale-hierarchy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/doxygen/images/scale-hierarchy.png -------------------------------------------------------------------------------- /doc/doxygen/images/tutorial-00-cfg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/doxygen/images/tutorial-00-cfg.png -------------------------------------------------------------------------------- /doc/flecsi-documentation-figures.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/flecsi-documentation-figures.pptx -------------------------------------------------------------------------------- /doc/flecsi-favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/flecsi-favicon.ico -------------------------------------------------------------------------------- /doc/flecsi-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/flecsi-square.png -------------------------------------------------------------------------------- /doc/flecsi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/flecsi.png -------------------------------------------------------------------------------- /doc/flecsi_dg_header.tex.in: -------------------------------------------------------------------------------- 1 | %~---------------------------------------------------------------------------~% 2 | % Copyright (c) 2014 Los Alamos National Security, LLC 3 | % All rights reserved. 4 | %~---------------------------------------------------------------------------~% 5 | 6 | \usepackage{fancyhdr} 7 | \usepackage{multicol} 8 | \pagestyle{fancy} 9 | 10 | \lhead{${${PROJECT_NAME}_VERSION}} 11 | \chead{FleCSI Developer Guide} 12 | \rhead{\today} 13 | 14 | \newcommand{\flecsi}{\emph{FleCSI}} 15 | \newcommand{\contributor}[2]{{\Large \textbf{#1}\\}{\large #2}\\} 16 | \newcommand{\mention}[1]{{\large \textbf{#1}}\\} 17 | 18 | %~---------------------------------------------------------------------------~% 19 | % Formatting for vim. 20 | % vim: set tabstop=4 shiftwidth=4 expandtab : 21 | %~---------------------------------------------------------------------------~% 22 | -------------------------------------------------------------------------------- /doc/flecsi_ug_header.tex.in: -------------------------------------------------------------------------------- 1 | %~---------------------------------------------------------------------------~% 2 | % Copyright (c) 2014 Los Alamos National Security, LLC 3 | % All rights reserved. 4 | %~---------------------------------------------------------------------------~% 5 | 6 | \usepackage{fancyhdr} 7 | \pagestyle{fancy} 8 | 9 | \lhead{${${PROJECT_NAME}_VERSION}} 10 | \chead{FleCSI User Guide} 11 | \rhead{\today} 12 | 13 | \newcommand{\flecsi}{\emph{FleCSI}} 14 | 15 | %~---------------------------------------------------------------------------~% 16 | % Formatting for vim. 17 | % vim: set tabstop=4 shiftwidth=4 expandtab : 18 | %~---------------------------------------------------------------------------~% 19 | -------------------------------------------------------------------------------- /doc/flecsi_ug_title.tex: -------------------------------------------------------------------------------- 1 | %~---------------------------------------------------------------------------~% 2 | % Copyright (c) 2014 Los Alamos National Security, LLC 3 | % All rights reserved. 4 | %~---------------------------------------------------------------------------~% 5 | 6 | \title{\textbf{\emph{FleCSI} User Guide}} 7 | \date{\today} 8 | \author{\begin{tabular}{rl} 9 | \textbf{\emph{FleCSI} Project Team:} & Ben Bergen \\ 10 | & Marc Charest \\ 11 | & Li-Ta (Ollie) Lo \\ 12 | & Nick Moss \\ 13 | & Chris Sewell \\ 14 | & John Wohlbier 15 | \end{tabular}} 16 | 17 | %~---------------------------------------------------------------------------~% 18 | % Formatting for vim. 19 | % vim: set tabstop=4 shiftwidth=4 expandtab : 20 | %~---------------------------------------------------------------------------~% 21 | -------------------------------------------------------------------------------- /doc/medium-flecsi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/medium-flecsi.png -------------------------------------------------------------------------------- /doc/small-flecsi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/doc/small-flecsi.png -------------------------------------------------------------------------------- /flecsi-tutorial/clean: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | for dir in `/usr/bin/ls -d [0-9][0-9]-*`; do 4 | (cd $dir; make clean); 5 | done 6 | -------------------------------------------------------------------------------- /flecsi-tutorial/docker/configfiles/.modulefiles/aliases: -------------------------------------------------------------------------------- 1 | #%Module1.0##################################################################### 2 | 3 | set-alias ls "ls --color" 4 | set-alias ll "ls -la" 5 | 6 | set-alias dls "dropbox filestatus -l" 7 | 8 | set-alias rm "rm -i" 9 | set-alias cp "cp -i" 10 | set-alias mv "mv -i" 11 | 12 | set-alias partitions "squeue -o \"%.7i %.12P %.8j %.8u %.2t %.10M %.6D %R\"" 13 | 14 | set-alias dirusage "du -h --max-depth=1 . | sort -h -r" 15 | 16 | set-alias mls "module list" 17 | set-alias ml "module load" 18 | set-alias mu "module unload" 19 | set-alias ma "module avail" 20 | set-alias ms "module show" 21 | 22 | set-alias sb "source ~/.bashrc" 23 | 24 | set-alias ati "salloc -p ati -N 1" 25 | set-alias apu "salloc -p AMD_A8APU -N 1" 26 | set-alias tesla "salloc -p tesla -N 1" 27 | 28 | set-alias vi "vim" 29 | set-alias vsplit "vim -O" 30 | set-alias view "vim -R" 31 | 32 | set-alias ssh "ssh -XA" 33 | 34 | #set-alias make "ben_make" 35 | set-alias mkae "make" 36 | set-alias maek "make" 37 | set-alias amke "make" 38 | set-alias amek "make" 39 | set-alias kmae "make" 40 | 41 | set-alias xfig "xfig -specialtext -latexfonts -startlatexFont default -startgridmode 1 -startposnmode 2" 42 | -------------------------------------------------------------------------------- /flecsi-tutorial/specialization/README.md: -------------------------------------------------------------------------------- 1 | # FleCSI: Tutorial - Specialization 2 | 6 | 7 | 8 | 9 | # Tutorial - Specialization 10 | 11 | FleCSI is intended as a developer tool that can be used to create 12 | interfaces for application developers and scientists. As such, FleCSI 13 | requires a *specialization* layer that customizes the core FleCSI data 14 | structures to provide an interface that makes sense for the particular 15 | application or set of applications that are being targeted. In this 16 | sense, FleCSI is a tool for creating domain-specific interfaces. 17 | 18 | The source code in this directory defines a specialization that supports 19 | the interfaces used in our tutorial. In particular, this tutorial 20 | specialization defines a two-dimensional unstructured mesh interface 21 | that is suitable for applications requiring nearest-neighbor ghost 22 | dependencies. 23 | 24 | 25 | -------------------------------------------------------------------------------- /flecsi-tutorial/specialization/control/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # Copyright (c) 2014 Los Alamos National Security, LLC 3 | # All rights reserved. 4 | #------------------------------------------------------------------------------# 5 | 6 | set(control_HEADERS 7 | control.h 8 | node_type.h 9 | policy.h 10 | PARENT_SCOPE 11 | ) 12 | 13 | set(control_SOURCES 14 | control.cc 15 | PARENT_SCOPE 16 | ) 17 | -------------------------------------------------------------------------------- /flecsi-tutorial/specialization/control/control.cc: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | 15 | #include 16 | #include 17 | 18 | namespace flecsi { 19 | namespace tutorial { 20 | 21 | static const bool specialization_control_registered = 22 | flecsi::execution::context_t::instance().register_top_level_driver( 23 | control_t::execute); 24 | 25 | } // namespace tutorial 26 | } // namespace flecsi 27 | -------------------------------------------------------------------------------- /flecsi-tutorial/specialization/io/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #~----------------------------------------------------------------------------~# 2 | # Copyright (c) 2014 Los Alamos National Security, LLC 3 | # All rights reserved. 4 | #~----------------------------------------------------------------------------~# 5 | 6 | if(ENABLE_FLECSI_TUTORIAL_VTK) 7 | 8 | set(io_HEADERS 9 | vtk/rectilinearGrid.h 10 | vtk/unstructuredGrid.h 11 | vtk/vtkMPI.h 12 | vtk/structuredGrid.h 13 | ) 14 | 15 | endif() 16 | 17 | #------------------------------------------------------------------------------# 18 | # Export header list to parent scope. 19 | #------------------------------------------------------------------------------# 20 | 21 | set(io_HEADERS 22 | ${io_HEADERS} 23 | PARENT_SCOPE 24 | ) 25 | 26 | set(io_SOURCES 27 | PARENT_SCOPE 28 | ) 29 | 30 | #----------------------------------------------------------------------------~-# 31 | # Formatting options for vim. 32 | # vim: set tabstop=2 shiftwidth=2 expandtab : 33 | #----------------------------------------------------------------------------~-# 34 | -------------------------------------------------------------------------------- /flecsi-tutorial/specialization/io/vtk/vtkMPI.h: -------------------------------------------------------------------------------- 1 | #if defined(ENABLE_VTK) 2 | 3 | #ifndef _VTK_MPI_H_ 4 | #define _VTK_MPI_H_ 5 | 6 | #include 7 | #include 8 | 9 | #include 10 | 11 | #include 12 | 13 | class VTKMpi 14 | { 15 | vtkMPIController * controller; 16 | 17 | public: 18 | VTKMpi(); 19 | VTKMpi(int external); 20 | ~VTKMpi(); 21 | 22 | void init(); 23 | void terminate(); 24 | }; 25 | 26 | inline VTKMpi::VTKMpi() { 27 | controller = NULL; 28 | } 29 | 30 | inline VTKMpi::VTKMpi(int external) { 31 | controller = NULL; 32 | init(); 33 | } 34 | 35 | inline VTKMpi::~VTKMpi() { 36 | terminate(); 37 | } 38 | 39 | inline void 40 | VTKMpi::init() { 41 | controller = vtkMPIController::New(); 42 | controller->Initialize(NULL, NULL, 1); 43 | controller->SetGlobalController(controller); 44 | } 45 | 46 | inline void 47 | VTKMpi::terminate() { 48 | if(controller != NULL) { 49 | controller->Finalize(1); 50 | controller->Delete(); 51 | controller = NULL; 52 | } 53 | } 54 | 55 | #endif //_VTK_MPI_H_ 56 | #endif // ENABLE_VTK 57 | -------------------------------------------------------------------------------- /flecsi-tutorial/specialization/mesh/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # Copyright (c) 2014 Los Alamos National Security, LLC 3 | # All rights reserved. 4 | #------------------------------------------------------------------------------# 5 | 6 | set(mesh_HEADERS 7 | coloring.h 8 | entity_types.h 9 | mesh.h 10 | policy.h 11 | tasks.h 12 | PARENT_SCOPE 13 | ) 14 | 15 | set(mesh_SOURCES 16 | coloring.cc 17 | control_points.cc 18 | PARENT_SCOPE 19 | ) 20 | -------------------------------------------------------------------------------- /flecsi-tutorial/specialization/mesh/coloring.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | 15 | #pragma once 16 | 17 | #include 18 | #include 19 | 20 | namespace flecsi { 21 | namespace tutorial { 22 | 23 | struct coloring_map_t { 24 | size_t vertices; 25 | size_t cells; 26 | }; // struct coloring_map_t 27 | 28 | void add_colorings(coloring_map_t map); 29 | flecsi_register_mpi_task(add_colorings, flecsi::tutorial); 30 | 31 | } // namespace tutorial 32 | } // namespace flecsi 33 | -------------------------------------------------------------------------------- /flecsi/canonical-mesh.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/flecsi/canonical-mesh.pdf -------------------------------------------------------------------------------- /flecsi/charter.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # NGC Mesh Charter 4 | 5 | ## Authorities: 6 | 7 | ## Agents: 8 | 9 | ## Completion Criteria: 10 | 11 | ## Resources: 12 | 13 | ## Constraints: 14 | 15 | ## Priorities: 16 | 17 | ## Assumptions: 18 | -------------------------------------------------------------------------------- /flecsi/code-structure.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/flecsi/code-structure.pdf -------------------------------------------------------------------------------- /flecsi/colored-mesh.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/flecsi/colored-mesh.pdf -------------------------------------------------------------------------------- /flecsi/coloring/test/devel-dcrs.cc: -------------------------------------------------------------------------------- 1 | /*~-------------------------------------------------------------------------~~* 2 | * Copyright (c) 2014 Los Alamos National Security, LLC 3 | * All rights reserved. 4 | *~-------------------------------------------------------------------------~~*/ 5 | 6 | #include 7 | 8 | #include 9 | #include 10 | 11 | clog_register_tag(dcrs); 12 | 13 | DEVEL(dcrs) { 14 | clog_set_output_rank(0); 15 | 16 | flecsi::io::simple_definition_t sd("simple2d-8x8.msh"); 17 | std::set naive = flecsi::coloring::naive_coloring<2, 2>(sd); 18 | 19 | { 20 | clog_tag_guard(dcrs); 21 | clog_container_one(info, "naive coloring", naive, clog::space); 22 | } // guard 23 | 24 | } // DEVEL 25 | 26 | /*~------------------------------------------------------------------------~--* 27 | * Formatting options for vim. 28 | * vim: set tabstop=2 shiftwidth=2 expandtab : 29 | *~------------------------------------------------------------------------~--*/ 30 | -------------------------------------------------------------------------------- /flecsi/coloring/test/exodus2d-mixed.exo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/flecsi/coloring/test/exodus2d-mixed.exo -------------------------------------------------------------------------------- /flecsi/coloring/test/exodus3d-hex.exo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/flecsi/coloring/test/exodus3d-hex.exo -------------------------------------------------------------------------------- /flecsi/coloring/test/index_coloring.blessed: -------------------------------------------------------------------------------- 1 | 0 2 | 1 3 | 2 4 | 8 5 | 9 6 | 10 7 | 16 8 | 17 9 | 18 10 | 24 11 | 25 12 | 26 13 | 32 14 | 33 15 | 34 16 | 40 17 | 41 18 | 42 19 | 48 20 | 49 21 | 50 22 | 56 23 | 57 24 | 58 25 | 3 26 | 4 27 | 11 28 | 12 29 | 19 30 | 20 31 | 27 32 | 28 33 | 35 34 | 36 35 | 43 36 | 44 37 | 51 38 | 52 39 | 59 40 | 60 41 | -------------------------------------------------------------------------------- /flecsi/control/test/runtime_model.cc: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | 15 | #include 16 | #include 17 | #include 18 | -------------------------------------------------------------------------------- /flecsi/data/common/data_reference.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! 17 | @file 18 | 19 | This file defines the type identifier type \em data_reference_base_t. 20 | */ 21 | 22 | namespace flecsi { 23 | namespace data { 24 | 25 | /*! 26 | This empty base class is the base of all FleCSI data model types. 27 | */ 28 | 29 | struct data_reference_base_t {}; 30 | 31 | } // namespace data 32 | } // namespace flecsi 33 | -------------------------------------------------------------------------------- /flecsi/data/common/privilege.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | namespace flecsi { 19 | 20 | enum privilege_t : size_t { 21 | reserved = 0, 22 | ro = 1, 23 | wo = 2, 24 | rw = 3, 25 | na = 4, 26 | }; // enum privilege_t 27 | 28 | } // namespace flecsi 29 | -------------------------------------------------------------------------------- /flecsi/data/data_constants.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | namespace flecsi { 19 | namespace data { 20 | 21 | //----------------------------------------------------------------------------// 22 | //! Enumeration of supported storage types. 23 | //----------------------------------------------------------------------------// 24 | 25 | enum storage_label_type_t : size_t { 26 | base, 27 | dense, 28 | global, 29 | color, 30 | sparse, 31 | ragged, 32 | scoped, 33 | tuple, 34 | local, 35 | subspace 36 | }; // enum storage_label_type_t 37 | 38 | } // namespace data 39 | } // namespace flecsi 40 | -------------------------------------------------------------------------------- /flecsi/data/hpx/data_handle_policy.h: -------------------------------------------------------------------------------- 1 | /*~--------------------------------------------------------------------------~* 2 | * Copyright (c) 2015 Los Alamos National Security, LLC 3 | * All rights reserved. 4 | *~--------------------------------------------------------------------------~*/ 5 | 6 | #ifndef flecsi_data_hpx_data_handle_policy_h 7 | #define flecsi_data_hpx_data_handle_policy_h 8 | 9 | /// 10 | /// \file 11 | /// \date Initial file creation: Apr 04, 2017 12 | /// 13 | 14 | namespace flecsi { 15 | 16 | /// 17 | /// \class hpx_data_handle_policy_t data_handle_policy.h 18 | /// \brief hpx_data_handle_policy_t provides... 19 | /// 20 | struct hpx_data_handle_policy_t {}; // class hpx_data_handle_policy_t 21 | 22 | } // namespace flecsi 23 | 24 | #endif // flecsi_data_hpx_data_handle_policy_h 25 | 26 | /*~-------------------------------------------------------------------------~-* 27 | * Formatting options for vim. 28 | * vim: set tabstop=2 shiftwidth=2 expandtab : 29 | *~-------------------------------------------------------------------------~-*/ 30 | -------------------------------------------------------------------------------- /flecsi/data/hpx/sparse_data_handle_policy.h: -------------------------------------------------------------------------------- 1 | /*~--------------------------------------------------------------------------~* 2 | *~--------------------------------------------------------------------------~*/ 3 | 4 | #pragma once 5 | 6 | //----------------------------------------------------------------------------// 7 | //! @file 8 | //! @date Initial file creation: Apr 04, 2017 9 | //----------------------------------------------------------------------------// 10 | 11 | namespace flecsi { 12 | 13 | //----------------------------------------------------------------------------// 14 | 15 | struct hpx_sparse_data_handle_policy_t { 16 | // +++ The following fields are set from get_handle(), reading 17 | // information from the context which is data that is the same 18 | // across multiple ranks/colors and should be used ONLY as read-only data 19 | 20 | field_id_t fid; 21 | 22 | size_t reserve; 23 | size_t num_exclusive_entries; 24 | }; // class mpi_sparse_data_handle_policy_t 25 | 26 | } // namespace flecsi 27 | 28 | /*~-------------------------------------------------------------------------~-* 29 | *~-------------------------------------------------------------------------~-*/ 30 | -------------------------------------------------------------------------------- /flecsi/data/internal_client.cc: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | /*! @file */ 15 | 16 | #include 17 | 18 | namespace flecsi { 19 | namespace data { 20 | 21 | flecsi_register_data_client(global_data_client_t, global_client, global_client); 22 | flecsi_register_data_client(color_data_client_t, color_client, color_client); 23 | 24 | } // namespace data 25 | } // namespace flecsi 26 | -------------------------------------------------------------------------------- /flecsi/data/internal_client.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | 15 | #pragma once 16 | 17 | /*! @file */ 18 | 19 | #include 20 | 21 | namespace flecsi { 22 | namespace data { 23 | 24 | /*! 25 | global_data_client_t is a type used for the global data client registration 26 | */ 27 | struct global_data_client_t : flecsi::topology::global_topology_u {}; 28 | 29 | /*! 30 | color_data_client_t is a type used for the color data client registration 31 | */ 32 | struct color_data_client_t : flecsi::topology::color_topology_u {}; 33 | 34 | } // namespace data 35 | } // namespace flecsi 36 | -------------------------------------------------------------------------------- /flecsi/data/legion/storage_policy.h: -------------------------------------------------------------------------------- 1 | /*~--------------------------------------------------------------------------~* 2 | *~--------------------------------------------------------------------------~*/ 3 | 4 | #pragma once 5 | 6 | //----------------------------------------------------------------------------// 7 | // @file 8 | // @date Initial file creation: Apr 17, 2016 9 | //----------------------------------------------------------------------------// 10 | 11 | namespace flecsi { 12 | namespace data { 13 | 14 | struct legion_storage_policy_t {}; // struct legion_storage_policy_t 15 | 16 | } // namespace data 17 | } // namespace flecsi 18 | 19 | /*~-------------------------------------------------------------------------~-* 20 | *~-------------------------------------------------------------------------~-*/ 21 | -------------------------------------------------------------------------------- /flecsi/data/mpi/data_handle_policy.h: -------------------------------------------------------------------------------- 1 | /*~--------------------------------------------------------------------------~* 2 | *~--------------------------------------------------------------------------~*/ 3 | 4 | #pragma once 5 | 6 | //----------------------------------------------------------------------------// 7 | //! @file 8 | //! @date Initial file creation: Apr 04, 2017 9 | //----------------------------------------------------------------------------// 10 | 11 | #include 12 | 13 | namespace flecsi { 14 | 15 | //----------------------------------------------------------------------------// 16 | 17 | struct mpi_data_handle_policy_t { 18 | // +++ The following fields are set from get_handle(), reading 19 | // information from the context which is data that is the same 20 | // across multiple ranks/colors and should be used ONLY as read-only data 21 | 22 | field_id_t fid; 23 | size_t index_space; 24 | size_t data_client_hash; 25 | bool * ghost_is_readable; 26 | }; // class mpi_data_handle_policy_t 27 | 28 | } // namespace flecsi 29 | 30 | /*~-------------------------------------------------------------------------~-* 31 | *~-------------------------------------------------------------------------~-*/ 32 | -------------------------------------------------------------------------------- /flecsi/data/mpi/sparse_data_handle_policy.h: -------------------------------------------------------------------------------- 1 | /*~--------------------------------------------------------------------------~* 2 | *~--------------------------------------------------------------------------~*/ 3 | 4 | #pragma once 5 | 6 | //----------------------------------------------------------------------------// 7 | //! @file 8 | //! @date Initial file creation: Apr 04, 2017 9 | //----------------------------------------------------------------------------// 10 | 11 | namespace flecsi { 12 | 13 | //----------------------------------------------------------------------------// 14 | 15 | struct mpi_sparse_data_handle_policy_t { 16 | // +++ The following fields are set from get_handle(), reading 17 | // information from the context which is data that is the same 18 | // across multiple ranks/colors and should be used ONLY as read-only data 19 | 20 | field_id_t fid; 21 | bool * ghost_is_readable; 22 | bool * ghost_was_resized; 23 | }; // class mpi_sparse_data_handle_policy_t 24 | 25 | } // namespace flecsi 26 | 27 | /*~-------------------------------------------------------------------------~-* 28 | *~-------------------------------------------------------------------------~-*/ 29 | -------------------------------------------------------------------------------- /flecsi/data/mpi/storage_policy.h: -------------------------------------------------------------------------------- 1 | /*~--------------------------------------------------------------------------~* 2 | *~--------------------------------------------------------------------------~*/ 3 | 4 | #pragma once 5 | 6 | namespace flecsi { 7 | namespace data { 8 | 9 | struct mpi_storage_policy_t {}; // struct mpi_storage_policy_t 10 | 11 | } // namespace data 12 | } // namespace flecsi 13 | 14 | /*~-------------------------------------------------------------------------~-* 15 | *~-------------------------------------------------------------------------~-*/ 16 | -------------------------------------------------------------------------------- /flecsi/data/mutator.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | #include 19 | #include 20 | 21 | namespace flecsi { 22 | 23 | // this empty base class which is the base of all accessors is used by the 24 | // handle tuple walkers for type checking 25 | struct mutator_base_t : public data::data_reference_base_t {}; 26 | 27 | template 28 | struct mutator_u {}; 29 | 30 | template 31 | struct mutator_u : public mutator_base_t {}; // struct mutator_u 32 | 33 | } // namespace flecsi 34 | -------------------------------------------------------------------------------- /flecsi/data/storage_class.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | #ifndef POLICY_NAMESPACE 19 | #error "You must define a data policy namespace before including this file." 20 | #endif 21 | 22 | #include 23 | 24 | namespace flecsi { 25 | namespace data { 26 | namespace POLICY_NAMESPACE { 27 | 28 | /// 29 | /// \struct storage_class_u 30 | /// 31 | /// \tparam T Specialization parameter. 32 | /// \tparam ST Data store type. 33 | /// \tparam MD Metadata type. 34 | /// 35 | template 36 | struct storage_class_u {}; 37 | 38 | } // namespace POLICY_NAMESPACE 39 | } // namespace data 40 | } // namespace flecsi 41 | -------------------------------------------------------------------------------- /flecsi/execution/common/execution_state.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | #include 19 | 20 | namespace flecsi { 21 | 22 | enum execution_state_t : size_t { 23 | SPECIALIZATION_TLT_INIT, 24 | SPECIALIZATION_SPMD_INIT, 25 | DRIVER 26 | }; // enum execution_state_t 27 | 28 | } // namespace flecsi 29 | -------------------------------------------------------------------------------- /flecsi/execution/default_driver.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! 17 | @file 18 | */ 19 | 20 | namespace flecsi { 21 | namespace execution { 22 | 23 | /*! @cond IGNORE */ 24 | 25 | void 26 | driver(int argc, char ** argv) {} 27 | 28 | /*! @endcond */ 29 | 30 | } // namespace execution 31 | } // namespace flecsi 32 | -------------------------------------------------------------------------------- /flecsi/execution/driver_initialization.cc: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | /*! 15 | @file 16 | */ 17 | 18 | #include 19 | 20 | //----------------------------------------------------------------------------// 21 | //! 22 | //----------------------------------------------------------------------------// 23 | 24 | int 25 | driver_initialization(int argc, char ** argv) { 26 | return flecsi::execution::context_t::instance().initialize(argc, argv); 27 | } // driver_initialization 28 | -------------------------------------------------------------------------------- /flecsi/execution/execution-structure.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/flecsi/execution/execution-structure.pdf -------------------------------------------------------------------------------- /flecsi/execution/hpx/processor_policy.h: -------------------------------------------------------------------------------- 1 | /*~--------------------------------------------------------------------------~* 2 | * Copyright (c) 2015 Los Alamos National Security, LLC 3 | * All rights reserved. 4 | *~--------------------------------------------------------------------------~*/ 5 | 6 | #ifndef flecsi_execution_hpx_processor_policy_h 7 | #define flecsi_execution_hpx_processor_policy_h 8 | 9 | /// 10 | /// \file 11 | /// \date Initial file creation: Apr 12, 2017 12 | /// 13 | 14 | namespace flecsi { 15 | namespace execution { 16 | 17 | enum class serial_processor_type_t : size_t { loc, toc, mpi }; 18 | 19 | } // namespace execution 20 | } // namespace flecsi 21 | 22 | #endif // flecsi_execution_hpx_processor_policy_h 23 | 24 | /*~-------------------------------------------------------------------------~-* 25 | * Formatting options for vim. 26 | * vim: set tabstop=2 shiftwidth=2 expandtab : 27 | *~-------------------------------------------------------------------------~-*/ 28 | -------------------------------------------------------------------------------- /flecsi/execution/hpx/task_wrapper.h: -------------------------------------------------------------------------------- 1 | /*~--------------------------------------------------------------------------~* 2 | * Copyright (c) 2015 Los Alamos National Security, LLC 3 | * All rights reserved. 4 | *~--------------------------------------------------------------------------~*/ 5 | 6 | #ifndef flecsi_execution_hpx_task_wrapper_h 7 | #define flecsi_execution_hpx_task_wrapper_h 8 | 9 | clog_register_tag(wrapper); 10 | 11 | namespace flecsi { 12 | namespace execution { 13 | 14 | template 15 | struct functor_task_wrapper_u {}; 16 | 17 | template 21 | struct task_wrapper_u { 22 | //--------------------------------------------------------------------------// 23 | //! The task_args_t type defines a task argument type for task 24 | //! execution through the HPX runtime. 25 | //--------------------------------------------------------------------------// 26 | 27 | // using task_args_t = 28 | // typename utils::base_convert_tuple_type< 29 | // accessor_base_t, data_handle_u, ARG_TUPLE>::type; 30 | }; 31 | 32 | } // namespace execution 33 | } // namespace flecsi 34 | #endif // flecsi_execution_hpx_task_wrapper_h 35 | -------------------------------------------------------------------------------- /flecsi/execution/internal_index_space.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | namespace flecsi { 19 | namespace execution { 20 | 21 | /*! 22 | If more than 4096 internal fields are allocated, storage_policy 23 | unique_fid_t must be updated 24 | */ 25 | 26 | enum internal_index_space { 27 | global_is = 4096, 28 | color_is, 29 | }; 30 | 31 | } // namespace execution 32 | } // namespace flecsi 33 | -------------------------------------------------------------------------------- /flecsi/execution/reduction.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /*! @file */ 4 | 5 | #include 6 | 7 | #include 8 | 9 | namespace flecsi { 10 | namespace execution { 11 | namespace reduction { 12 | #define flecsi_register_operation_types(operation) \ 13 | flecsi_register_reduction_operation(operation, int); \ 14 | flecsi_register_reduction_operation(operation, long); \ 15 | flecsi_register_reduction_operation(operation, short); \ 16 | flecsi_register_reduction_operation(operation, unsigned); \ 17 | flecsi_register_reduction_operation(operation, size_t); \ 18 | flecsi_register_reduction_operation(operation, float); \ 19 | flecsi_register_reduction_operation(operation, double); 20 | 21 | flecsi_register_operation_types(sum); 22 | flecsi_register_operation_types(min); 23 | flecsi_register_operation_types(max); 24 | flecsi_register_operation_types(product); 25 | 26 | } // namespace reduction 27 | } // namespace execution 28 | } // namespace flecsi 29 | -------------------------------------------------------------------------------- /flecsi/execution/test/concept_coloring.cc: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | 15 | #include 16 | 17 | #include 18 | 19 | namespace flecsi { 20 | namespace execution { 21 | 22 | void 23 | specialization_tlt_init(int argc, char ** argv) { 24 | flecsi_execute_mpi_task(concept_coloring, flecsi::execution); 25 | } // specialization_tlt_init 26 | 27 | void 28 | specialization_spmd_init(int argc, char ** argv) {} // specialization_spmd_init 29 | 30 | void 31 | driver(int argc, char ** argv) {} // driver 32 | 33 | } // namespace execution 34 | } // namespace flecsi 35 | 36 | DEVEL(concept_coloring) {} 37 | -------------------------------------------------------------------------------- /flecsi/execution/test/global_data.blessed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/flecsi/execution/test/global_data.blessed -------------------------------------------------------------------------------- /flecsi/io/io.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # I/O 4 | 5 | -------------------------------------------------------------------------------- 6 | 7 | 8 | 9 | # I/O 10 | 11 | -------------------------------------------------------------------------------- 12 | 13 | 14 | -------------------------------------------------------------------------------- /flecsi/io/test/simple2d-4x4.msh: -------------------------------------------------------------------------------- 1 | 25 16 2 | 0.000 0.000 3 | 0.250 0.000 4 | 0.500 0.000 5 | 0.750 0.000 6 | 1.000 0.000 7 | 0.000 0.250 8 | 0.250 0.250 9 | 0.500 0.250 10 | 0.750 0.250 11 | 1.000 0.250 12 | 0.000 0.500 13 | 0.250 0.500 14 | 0.500 0.500 15 | 0.750 0.500 16 | 1.000 0.500 17 | 0.000 0.750 18 | 0.250 0.750 19 | 0.500 0.750 20 | 0.750 0.750 21 | 1.000 0.750 22 | 0.000 1.000 23 | 0.250 1.000 24 | 0.500 1.000 25 | 0.750 1.000 26 | 1.000 1.000 27 | 0 1 6 5 28 | 1 2 7 6 29 | 2 3 8 7 30 | 3 4 9 8 31 | 5 6 11 10 32 | 6 7 12 11 33 | 7 8 13 12 34 | 8 9 14 13 35 | 10 11 16 15 36 | 11 12 17 16 37 | 12 13 18 17 38 | 13 14 19 18 39 | 15 16 21 20 40 | 16 17 22 21 41 | 17 18 23 22 42 | 18 19 24 23 43 | -------------------------------------------------------------------------------- /flecsi/runtime/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | # /@@///// /@@ @@////@@ @@////// /@@ 4 | # /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | # /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | # /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | # /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | # /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | # // /// ////// ////// //////// // 10 | # 11 | # Copyright (c) 2016 Los Alamos National Laboratory, LLC 12 | # All rights reserved 13 | #------------------------------------------------------------------------------# 14 | 15 | set(runtime_HEADERS 16 | flecsi_runtime_execution_policy.h 17 | flecsi_runtime_context_policy.h 18 | flecsi_runtime_entity_storage_policy.h 19 | flecsi_runtime_storage_policy.h 20 | flecsi_runtime_data_handle_policy.h 21 | flecsi_runtime_data_client_handle_policy.h 22 | flecsi_runtime_data_policy.h 23 | flecsi_runtime_topology_policy.h 24 | flecsi_runtime_set_topology_policy.h 25 | types.h 26 | PARENT_SCOPE 27 | ) 28 | 29 | set(runtime_SOURCES 30 | PARENT_SCOPE 31 | ) 32 | -------------------------------------------------------------------------------- /flecsi/supplemental/coloring/add_colorings.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | namespace flecsi { 19 | namespace supplemental { 20 | 21 | struct coloring_map_t { 22 | size_t vertices; 23 | size_t cells; 24 | }; // struct coloring_map_t 25 | 26 | void add_colorings(coloring_map_t map); 27 | 28 | } // namespace supplemental 29 | } // namespace flecsi 30 | -------------------------------------------------------------------------------- /flecsi/supplemental/coloring/concept_coloring.cc: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | 15 | #include 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | namespace flecsi { 27 | namespace execution { 28 | 29 | flecsi_register_mpi_task(concept_coloring, flecsi::execution); 30 | 31 | } // namespace execution 32 | } // namespace flecsi 33 | -------------------------------------------------------------------------------- /flecsi/topology/entity_storage.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | #include 19 | 20 | namespace flecsi { 21 | namespace topology { 22 | 23 | // the following type definitions define topological storage types 24 | // as a dependent on the runtime model 25 | 26 | template 27 | using entity_storage_t = FLECSI_RUNTIME_ENTITY_STORAGE_TYPE; 28 | 29 | using offset_storage_t = FLECSI_RUNTIME_OFFSET_STORAGE_TYPE; 30 | 31 | } // namespace topology 32 | } // namespace flecsi 33 | -------------------------------------------------------------------------------- /flecsi/topology/partition.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | namespace flecsi { 19 | 20 | enum partition_t : size_t { 21 | exclusive = 0b001, 22 | shared = 0b010, 23 | ghost = 0b100, 24 | owned = 0b011 25 | }; 26 | 27 | } // namespace flecsi 28 | -------------------------------------------------------------------------------- /flecsi/topology/set_storage.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | #include 19 | 20 | namespace flecsi { 21 | namespace topology { 22 | 23 | template 24 | class set_storage_u 25 | : public FLECSI_RUNTIME_SET_TOPOLOGY_STORAGE_POLICY 26 | {}; 27 | 28 | } // namespace topology 29 | } // namespace flecsi 30 | -------------------------------------------------------------------------------- /flecsi/topology/test/devel-closure.cc: -------------------------------------------------------------------------------- 1 | /*~-------------------------------------------------------------------------~~* 2 | * Copyright (c) 2014 Los Alamos National Security, LLC 3 | * All rights reserved. 4 | *~-------------------------------------------------------------------------~~*/ 5 | 6 | #include 7 | 8 | clog_register_tag(output); 9 | 10 | DEVEL(graph) { 11 | 12 | { 13 | clog_tag_guard(output); 14 | 15 | clog(info) << "Hello World!" << std::endl; 16 | } // guard 17 | 18 | } // DEVEL 19 | 20 | /*~------------------------------------------------------------------------~--* 21 | * Formatting options for vim. 22 | * vim: set tabstop=2 shiftwidth=2 expandtab : 23 | *~------------------------------------------------------------------------~--*/ 24 | -------------------------------------------------------------------------------- /flecsi/topology/test/tree.blessed: -------------------------------------------------------------------------------- 1 | [ 0.499461 0.291381 ] 2 | [ 0.493781 0.293513 ] 3 | [ 0.495881 0.293054 ] 4 | [ 0.493085 0.296158 ] 5 | [ 0.494858 0.295564 ] 6 | [ 0.494944 0.295825 ] 7 | [ 0.496097 0.294609 ] 8 | [ 0.49144 0.299207 ] 9 | [ 0.49207 0.300795 ] 10 | [ 0.490481 0.301857 ] 11 | [ 0.491623 0.30248 ] 12 | [ 0.493858 0.299566 ] 13 | [ 0.497454 0.297996 ] 14 | [ 0.498298 0.298281 ] 15 | [ 0.492923 0.301322 ] 16 | [ 0.492963 0.301792 ] 17 | [ 0.499327 0.301551 ] 18 | [ 0.499326 0.302387 ] 19 | [ 0.49743 0.303711 ] 20 | [ 0.493729 0.307126 ] 21 | [ 0.499341 0.304846 ] 22 | [ 0.49717 0.30707 ] 23 | [ 0.497026 0.308943 ] 24 | [ 0.505491 0.292226 ] 25 | [ 0.500812 0.294624 ] 26 | [ 0.503438 0.295393 ] 27 | [ 0.5035 0.295708 ] 28 | [ 0.50458 0.293771 ] 29 | [ 0.505553 0.293443 ] 30 | [ 0.504912 0.296084 ] 31 | [ 0.506888 0.296164 ] 32 | [ 0.507304 0.296468 ] 33 | [ 0.505675 0.299914 ] 34 | [ 0.506011 0.302951 ] 35 | [ 0.502589 0.307621 ] 36 | [ 0.503922 0.307154 ] 37 | -------------------------------------------------------------------------------- /flecsi/user-guide.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Introduction 4 | 5 | \flecsi{} is a set of tools that provide mid- and low-leve interfaces that can 6 | be used to create high-level abstractions and interfaces that are suitable 7 | for computational physicists and computational scientists. 8 | 9 | # This Guide... 10 | 11 | # The Developer Guide 12 | 13 | # Doxygen Documentation 14 | 15 | 16 | -------------------------------------------------------------------------------- /flecsi/utils/debruijn.cc: -------------------------------------------------------------------------------- 1 | /* 2 | _____________ _____ _____ _________________ 3 | ___ __ \__(_)________ /_____________ __ / / /_ /___(_)__ /_______ 4 | __ /_/ /_ /__ ___/ __/_ ___/ __ `/ / / /_ __/_ /__ /__ ___/ 5 | _ _, _/_ / _(__ )/ /_ _ / / /_/ // /_/ / / /_ _ / _ / _(__ ) 6 | /_/ |_| /_/ /____/ \__/ /_/ \__,_/ \____/ \__/ /_/ /_/ /____/ 7 | 8 | Copyright (c) 2018 Los Alamos National Security, LLC 9 | All rights reserved. 10 | */ 11 | 12 | /*! @file */ 13 | 14 | #include "debruijn.h" 15 | 16 | namespace flecsi { 17 | namespace utils { 18 | 19 | constexpr uint32_t debruijn32_t::index_[]; 20 | 21 | } // namespace utils 22 | } // namespace flecsi 23 | -------------------------------------------------------------------------------- /flecsi/utils/demangle.cc: -------------------------------------------------------------------------------- 1 | /* 2 | _____________ _____ _____ _________________ 3 | ___ __ \__(_)________ /_____________ __ / / /_ /___(_)__ /_______ 4 | __ /_/ /_ /__ ___/ __/_ ___/ __ `/ / / /_ __/_ /__ /__ ___/ 5 | _ _, _/_ / _(__ )/ /_ _ / / /_/ // /_/ / / /_ _ / _ / _(__ ) 6 | /_/ |_| /_/ /____/ \__/ /_/ \__,_/ \____/ \__/ /_/ /_/ /____/ 7 | 8 | Copyright (c) 2018 Los Alamos National Security, LLC 9 | All rights reserved. 10 | */ 11 | 12 | /*! @file */ 13 | 14 | #include 15 | #include 16 | 17 | #if defined(__GNUG__) 18 | #include 19 | #endif 20 | 21 | namespace flecsi { 22 | namespace utils { 23 | 24 | std::string 25 | demangle(const char * const name) { 26 | #if defined(__GNUG__) 27 | int status = -4; 28 | std::unique_ptr res{ 29 | abi::__cxa_demangle(name, NULL, NULL, &status), std::free}; 30 | if(status == 0) 31 | return res.get(); 32 | #endif 33 | // does nothing if not __GNUG__, or if abi::__cxa_demangle failed 34 | return name; 35 | } // demangle 36 | 37 | } // namespace utils 38 | } // namespace flecsi 39 | -------------------------------------------------------------------------------- /flecsi/utils/logging.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | #include 19 | 20 | namespace flecsi { 21 | namespace utils { 22 | 23 | // For the time being, we are just going to directly use the cinch clog 24 | // interface. 25 | 26 | } // namespace utils 27 | } // namespace flecsi 28 | -------------------------------------------------------------------------------- /flecsi/utils/macros.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | #define _FLECSI_UTIL_STRINGIFY(s) #s 19 | #define EXPAND_AND_STRINGIFY(s) _FLECSI_UTIL_STRINGIFY(s) 20 | -------------------------------------------------------------------------------- /flecsi/utils/test/array_ref.blessed: -------------------------------------------------------------------------------- 1 | 2 | 3 | abcdefghi 4 | 5 | abcdefghi 6 | bcdefghi 7 | cdefghi 8 | hi 9 | i 10 | 11 | 12 | ab 13 | bcde 14 | cde 15 | hi 16 | i 17 | 18 | 19 | abcdefghi 20 | abcdefghi 21 | ihgfedcba 22 | ihgfedcba 23 | 0 24 | true 25 | 3 26 | false 27 | 28 | 3.14 29 | 2.18 30 | 2.72 31 | 32 | 3.14 33 | 2.72 34 | 35 | 2 36 | 6 37 | 38 | 7 39 | 7 40 | 41 | 1 42 | 5 43 | 44 | 1 45 | 5 46 | 47 | 1 48 | 1 49 | 50 | 10 51 | 20 52 | -------------------------------------------------------------------------------- /flecsi/utils/test/array_ref.blessed.gnug: -------------------------------------------------------------------------------- 1 | 2 | double 3 | double const* 4 | double 5 | double 6 | double const* 7 | double const* 8 | std::reverse_iterator 9 | std::reverse_iterator 10 | unsigned long 11 | long 12 | 13 | abcdefghi 14 | 15 | abcdefghi 16 | bcdefghi 17 | cdefghi 18 | hi 19 | i 20 | 21 | 22 | ab 23 | bcde 24 | cde 25 | hi 26 | i 27 | 28 | 29 | abcdefghi 30 | abcdefghi 31 | ihgfedcba 32 | ihgfedcba 33 | 0 34 | true 35 | 3 36 | false 37 | 38 | 3.14 39 | 2.18 40 | 2.72 41 | 42 | 3.14 43 | 2.72 44 | 45 | 2 46 | 6 47 | 48 | 7 49 | 7 50 | 51 | 1 52 | 5 53 | 54 | 1 55 | 5 56 | 57 | 1 58 | 1 59 | 60 | 10 61 | 20 62 | -------------------------------------------------------------------------------- /flecsi/utils/test/array_ref.blessed.msvc: -------------------------------------------------------------------------------- 1 | 2 | double 3 | double const * __ptr64 4 | double 5 | double 6 | double const * __ptr64 7 | double const * __ptr64 8 | class std::reverse_iterator 9 | class std::reverse_iterator 10 | unsigned __int64 11 | __int64 12 | 13 | abcdefghi 14 | 15 | abcdefghi 16 | bcdefghi 17 | cdefghi 18 | hi 19 | i 20 | 21 | 22 | ab 23 | bcde 24 | cde 25 | hi 26 | i 27 | 28 | 29 | abcdefghi 30 | abcdefghi 31 | ihgfedcba 32 | ihgfedcba 33 | 0 34 | true 35 | 3 36 | false 37 | 38 | 3.14 39 | 2.18 40 | 2.72 41 | 42 | 3.14 43 | 2.72 44 | 45 | 2 46 | 6 47 | 48 | 7 49 | 7 50 | 51 | 1 52 | 5 53 | 54 | 1 55 | 5 56 | 57 | 1 58 | 1 59 | 60 | 10 61 | 20 62 | -------------------------------------------------------------------------------- /flecsi/utils/test/clog.cc: -------------------------------------------------------------------------------- 1 | /*~-------------------------------------------------------------------------~~* 2 | * Copyright (c) 2014 Los Alamos National Security, LLC 3 | * All rights reserved. 4 | *~-------------------------------------------------------------------------~~*/ 5 | 6 | #include 7 | 8 | DEVEL(clog) {} // DEVEL 9 | 10 | /*~------------------------------------------------------------------------~--* 11 | * Formatting options for vim. 12 | * vim: set tabstop=2 shiftwidth=2 expandtab : 13 | *~------------------------------------------------------------------------~--*/ 14 | -------------------------------------------------------------------------------- /flecsi/utils/test/common.blessed: -------------------------------------------------------------------------------- 1 | 20 2 | 40 3 | 4 4 | 60 5 | 6 | 7 | 100 8 | 400 9 | 10 | 1 11 | 2 12 | 3 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /flecsi/utils/test/common.blessed.gnug: -------------------------------------------------------------------------------- 1 | 20 2 | 40 3 | 4 4 | 60 5 | 6 | flecsi::utils::id_<20ul, 40ul, 4ul, 60ul> 7 | int 8 | int 9 | 10 | 100 11 | 400 12 | 13 | 1 14 | 2 15 | 3 16 | 17 | -------------------------------------------------------------------------------- /flecsi/utils/test/common.blessed.msvc: -------------------------------------------------------------------------------- 1 | 20 2 | 40 3 | 4 4 | 60 5 | 6 | class flecsi::utils::id_<20,40,4,60> 7 | int 8 | int 9 | 10 | 100 11 | 400 12 | 13 | 1 14 | 2 15 | 3 16 | 17 | int 18 | class std::tuple 19 | 20 | float 21 | class std::tuple 22 | float 23 | class std::tuple 24 | 25 | void 26 | class std::tuple 27 | struct MyClass 28 | void 29 | class std::tuple 30 | struct MyClass 31 | void 32 | class std::tuple 33 | struct MyClass 34 | void 35 | class std::tuple 36 | struct MyClass 37 | 38 | float 39 | class std::tuple 40 | 41 | int 42 | class std::tuple 43 | int 44 | class std::tuple 45 | int 46 | class std::tuple 47 | int 48 | class std::tuple 49 | int 50 | class std::tuple 51 | int 52 | class std::tuple 53 | int 54 | class std::tuple 55 | int 56 | class std::tuple 57 | 58 | -------------------------------------------------------------------------------- /flecsi/utils/test/common.blessed.ppc: -------------------------------------------------------------------------------- 1 | 20 2 | 40 3 | 4 4 | 60 5 | 6 | flecsi::utils::id_<20ul, 40ul, 4ul, 60ul> 7 | int 8 | int 9 | 10 | 100 11 | 400 12 | 13 | 1 14 | 2 15 | 3 16 | 17 | -------------------------------------------------------------------------------- /flecsi/utils/test/demangle.cc: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------* 2 | * Copyright (c) 2017 Los Alamos National Security, LLC 3 | * All rights reserved 4 | *----------------------------------------------------------------------------*/ 5 | 6 | #include 7 | #include 8 | 9 | #include 10 | 11 | TEST(common, all) { 12 | 13 | // demangle, type 14 | // The results depend on #ifdef __GNUG__, so we'll just exercise 15 | // these functions, without checking for particular results. 16 | EXPECT_NE(flecsi::utils::demangle("foo"), ""); 17 | const std::string str_demangle = flecsi::utils::demangle(typeid(int).name()), 18 | str_type = flecsi::utils::type(); 19 | EXPECT_NE(str_demangle, ""); 20 | EXPECT_NE(str_type, ""); 21 | EXPECT_EQ(str_demangle, str_type); 22 | 23 | } // TEST 24 | 25 | /*----------------------------------------------------------------------------* 26 | * Formatting options 27 | * vim: set tabstop=2 shiftwidth=2 expandtab : 28 | *----------------------------------------------------------------------------*/ 29 | -------------------------------------------------------------------------------- /flecsi/utils/test/factory.blessed: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1 4 | 1 5 | 1 6 | 0 7 | 8 | 1 9 | 1 10 | 1 11 | 0 12 | 13 | 1.2 14 | 3.4 15 | 3.4 16 | 17 | 5.6 18 | 5.6 19 | 8.9 20 | 21 | 7.8 22 | 15.6 23 | -------------------------------------------------------------------------------- /flecsi/utils/test/factory.blessed.gnug: -------------------------------------------------------------------------------- 1 | float* (*)(int, float, double) 2 | char 3 | std::map, std::allocator > > 4 | 5 | double* (*)(double, double) 6 | long 7 | std::map, std::allocator > > 8 | 9 | 1 10 | 1 11 | 1 12 | 0 13 | 14 | 1 15 | 1 16 | 1 17 | 0 18 | 19 | 1.2 20 | 3.4 21 | 3.4 22 | 23 | 5.6 24 | 5.6 25 | 8.9 26 | 27 | 7.8 28 | 15.6 29 | -------------------------------------------------------------------------------- /flecsi/utils/test/factory.blessed.msvc: -------------------------------------------------------------------------------- 1 | float * __ptr64 (__cdecl*)(int,float,double) 2 | char 3 | class std::map,class std::allocator > > 4 | 5 | double * __ptr64 (__cdecl*)(double,double) 6 | long 7 | class std::map,class std::allocator > > 8 | 9 | 1 10 | 1 11 | 1 12 | 0 13 | 14 | 1 15 | 1 16 | 1 17 | 0 18 | 19 | 1.2 20 | 3.4 21 | 3.4 22 | 23 | 5.6 24 | 5.6 25 | 8.9 26 | 27 | 7.8 28 | 15.6 29 | -------------------------------------------------------------------------------- /flecsi/utils/test/humble.cc: -------------------------------------------------------------------------------- 1 | /*~-------------------------------------------------------------------------~~* 2 | * Copyright (c) 2017 Los Alamos National Security, LLC 3 | * All rights reserved 4 | *~-------------------------------------------------------------------------~~*/ 5 | 6 | // includes: flecsi 7 | #include 8 | 9 | // includes: C++ 10 | 11 | // includes: other 12 | #include 13 | 14 | // ============================================================================= 15 | // Test various constructs in humble.h 16 | // ============================================================================= 17 | 18 | // TEST 19 | TEST(humble, all) { 20 | // test: HERE 21 | HERE("Here I am"); 22 | HERE("Here " 23 | "I am again"); 24 | 25 | // test: here_func() 26 | flecsi::utils::here_func(__FILE__, __FUNCTION__, __LINE__, "here again"); 27 | flecsi::utils::here_func( 28 | "some file", "some function", __LINE__, "and yet again"); 29 | 30 | } // TEST 31 | 32 | /*~-------------------------------------------------------------------------~-* 33 | * Formatting options 34 | * vim: set tabstop=2 shiftwidth=2 expandtab : 35 | *~-------------------------------------------------------------------------~-*/ 36 | -------------------------------------------------------------------------------- /flecsi/utils/test/logging.cc: -------------------------------------------------------------------------------- 1 | /*~-------------------------------------------------------------------------~~* 2 | * Copyright (c) 2017 Los Alamos National Security, LLC 3 | * All rights reserved 4 | *~-------------------------------------------------------------------------~~*/ 5 | 6 | // includes: flecsi 7 | 8 | // includes: other 9 | #include 10 | 11 | // ============================================================================= 12 | // Test various constructs in logging.h 13 | // ============================================================================= 14 | 15 | // TEST 16 | TEST(logging, all) { 17 | // logging.h has nothing to test at this time - except, essentially, that 18 | // it's well-formed. Even a "stub" file needs testing :-). We've prepared 19 | // this test file so that adding tests here, later, should be easy. 20 | 21 | // compare 22 | // EXPECT_TRUE(CINCH_EQUAL_BLESSED("logging.blessed")); 23 | 24 | } // TEST 25 | 26 | /*~-------------------------------------------------------------------------~-* 27 | * Formatting options 28 | * vim: set tabstop=2 shiftwidth=2 expandtab : 29 | *~-------------------------------------------------------------------------~-*/ 30 | -------------------------------------------------------------------------------- /flecsi/utils/test/reflection.cc: -------------------------------------------------------------------------------- 1 | /*~-------------------------------------------------------------------------~~* 2 | * Copyright (c) 2014 Los Alamos National Security, LLC 3 | * All rights reserved. 4 | *~-------------------------------------------------------------------------~~*/ 5 | 6 | #include 7 | 8 | #include 9 | 10 | struct test_type_t { 11 | declare_reflected((double)r1, (int)r2) 12 | }; // struct test_type_t 13 | 14 | using namespace flecsi::utils; 15 | 16 | DEVEL(reflection) { 17 | test_type_t t; 18 | 19 | t.r1 = 1.0; 20 | 21 | clog(info) << t.r1 << std::endl; 22 | 23 | clog(info) << reflection::num_variables::value << std::endl; 24 | 25 | t.r1 = 2.0; 26 | 27 | clog(info) << reflection::variable<0>(t).get() << std::endl; 28 | } // DEVEL 29 | 30 | /*~------------------------------------------------------------------------~--* 31 | * Formatting options for vim. 32 | * vim: set tabstop=2 shiftwidth=2 expandtab : 33 | *~------------------------------------------------------------------------~--*/ 34 | -------------------------------------------------------------------------------- /flecsi/utils/test/tuple_type_converter.blessed.gnug: -------------------------------------------------------------------------------- 1 | int 2 | char 3 | 4 | std::tuple<> 5 | std::tuple 6 | -------------------------------------------------------------------------------- /flecsi/utils/test/tuple_type_converter.blessed.msvc: -------------------------------------------------------------------------------- 1 | int 2 | char 3 | 4 | class std::tuple<> 5 | class std::tuple 6 | -------------------------------------------------------------------------------- /flecsi/utils/test/tuple_walker.blessed: -------------------------------------------------------------------------------- 1 | 1 2 | 2 3 | 3 4 | 5 | 2 6 | 4 7 | 6 8 | 9 | 3 10 | 6 11 | 9 12 | -------------------------------------------------------------------------------- /flecsi/utils/test/utility.blessed.gnug: -------------------------------------------------------------------------------- 1 | char 2 | int 3 | double 4 | -------------------------------------------------------------------------------- /flecsi/utils/tuple_wrapper.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | #include 19 | 20 | namespace flecsi { 21 | namespace utils { 22 | 23 | struct generic_tuple_t {}; 24 | 25 | //! 26 | //! \class tuple_wrapper_ tuple_wrapper.h 27 | //! \brief tuple_wrapper_ provides... 28 | //! 29 | template 30 | struct tuple_wrapper_ : generic_tuple_t { 31 | 32 | using tuple_t = std::tuple; 33 | 34 | tuple_wrapper_(Args... args) : t_(std::make_tuple(args...)) {} 35 | 36 | template 37 | decltype(auto) get() { 38 | return std::get(t_); 39 | } 40 | 41 | private: 42 | tuple_t t_; 43 | 44 | }; // class tuple_wrapper_ 45 | 46 | } // namespace utils 47 | } // namespace flecsi 48 | -------------------------------------------------------------------------------- /flecsi/utils/typeify.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | namespace flecsi { 19 | namespace utils { 20 | 21 | /*! 22 | Create a C++ type from a non-type value, e.g., an integer literal. 23 | 24 | @tparam T The literal type. 25 | @tparam M The literal value. 26 | 27 | @ingroup utils 28 | */ 29 | 30 | template 31 | struct typeify_u { 32 | using TYPE = T; 33 | static constexpr T value = M; 34 | }; 35 | 36 | template 37 | constexpr T typeify_u::value; 38 | 39 | } // namespace utils 40 | } // namespace flecsi 41 | -------------------------------------------------------------------------------- /flecsi/utils/utility.h: -------------------------------------------------------------------------------- 1 | /* 2 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 3 | /@@///// /@@ @@////@@ @@////// /@@ 4 | /@@ /@@ @@@@@ @@ // /@@ /@@ 5 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 6 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 7 | /@@ /@@/@@//// //@@ @@ /@@/@@ 8 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 9 | // /// ////// ////// //////// // 10 | 11 | Copyright (c) 2016, Los Alamos National Security, LLC 12 | All rights reserved. 13 | */ 14 | #pragma once 15 | 16 | /*! @file */ 17 | 18 | namespace flecsi { 19 | namespace utils { 20 | 21 | //! 22 | //! Forms lvalue reference to const of type T. 23 | //! 24 | //! This function will be deprecated in c++17. 25 | //! 26 | template 27 | struct as_const { 28 | using type = T; 29 | }; // struct as_const 30 | 31 | } // namespace utils 32 | } // namespace flecsi 33 | -------------------------------------------------------------------------------- /io-poc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | #~----------------------------------------------------------------------------~# 2 | # Copyright (c) 2014 Los Alamos National Security, LLC 3 | # All rights reserved. 4 | #~----------------------------------------------------------------------------~# 5 | 6 | add_executable(io-poc 7 | io-poc.cc 8 | ../flecsi/control/runtime_main.cc 9 | ) 10 | 11 | include_directories(${CMAKE_SOURCE_DIR}) 12 | 13 | target_link_libraries(io-poc 14 | ${CINCH_RUNTIME_LIBRARIES} 15 | ${CMAKE_THREAD_LIBS_INIT} 16 | ${FLECSI_LIBRARY_DEPENDENCIES} 17 | ) 18 | -------------------------------------------------------------------------------- /io-poc/analysis.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | using namespace io_poc; 7 | 8 | int 9 | poynting_flux(int argc, char ** argv) { 10 | usleep(200000); 11 | std::cout << "analyze: poynting_flux" << std::endl; 12 | return 0; 13 | } // poynting_flux 14 | 15 | register_action(analyze /* phase */, 16 | poynting_flux /* name */, 17 | poynting_flux /* action */); 18 | -------------------------------------------------------------------------------- /io-poc/control/node_type.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace io_poc { 8 | 9 | struct node_t { 10 | 11 | using bitset_t = std::bitset<8>; 12 | using action_t = std::function; 13 | 14 | node_t(action_t const & action = {}, bitset_t const & bitset = {}) 15 | : action_(action), bitset_(bitset) {} 16 | 17 | bool initialize(node_t const & node) { 18 | action_ = node.action_; 19 | bitset_ = node.bitset_; 20 | return true; 21 | } // initialize 22 | 23 | action_t const & action() const { 24 | return action_; 25 | } 26 | action_t & action() { 27 | return action_; 28 | } 29 | 30 | bitset_t const & bitset() const { 31 | return bitset_; 32 | } 33 | bitset_t & bitset() { 34 | return bitset_; 35 | } 36 | 37 | private: 38 | action_t action_; 39 | bitset_t bitset_; 40 | 41 | }; // struct node_t 42 | 43 | std::ostream & 44 | operator<<(std::ostream & stream, node_t const & node) { 45 | stream << "bitset: " << node.bitset() << std::endl; 46 | stream << "action: " << &node.action() << std::endl; 47 | return stream; 48 | } // operator << 49 | 50 | } // namespace io_poc 51 | -------------------------------------------------------------------------------- /io-poc/currents.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | using namespace io_poc; 7 | 8 | int 9 | accumulate_currents(int argc, char ** argv) { 10 | usleep(200000); 11 | std::cout << "advance: accumulate_currents" << std::endl; 12 | return 0; 13 | } // accumulate_currents 14 | 15 | register_action(advance, 16 | accumulate_currents, 17 | accumulate_currents, 18 | time_advance_half); 19 | add_dependency(advance, accumulate_currents, advance_particles); 20 | -------------------------------------------------------------------------------- /io-poc/fields.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | using namespace io_poc; 7 | 8 | int 9 | init_fields(int argc, char ** argv) { 10 | usleep(200000); 11 | std::cout << "initialize: init_fields" << std::endl; 12 | return 0; 13 | } // init_fields 14 | 15 | register_action(initialize /* phase */, 16 | init_fields /* action name */, 17 | init_fields /* action */ 18 | ); 19 | 20 | add_dependency(initialize /* phase */, 21 | init_fields /* to */, 22 | init_mesh /* from */ 23 | ); 24 | 25 | int 26 | update_fields(int argc, char ** argv) { 27 | usleep(200000); 28 | std::cout << "advance: update_fields" << std::endl; 29 | 30 | if(check_attribute(advance /* phase */, accumulate_currents /* action */, 31 | time_advance_half /* attribute */)) { 32 | std::cout << "\tadvancing half" << std::endl; 33 | } 34 | else { 35 | std::cout << "\tadvancing whole" << std::endl; 36 | } // if 37 | 38 | return 0; 39 | } // update_fields 40 | 41 | register_action(advance, update_fields, update_fields); 42 | add_dependency(advance, update_fields, accumulate_currents); 43 | -------------------------------------------------------------------------------- /io-poc/io-poc.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | -------------------------------------------------------------------------------- /io-poc/io.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if !defined(FLECSI_ENABLE_MPI) 4 | #error FLECSI_ENABLE_MPI not defined! This file depends on MPI! 5 | #endif 6 | 7 | #include 8 | 9 | #if defined(RISTRA_UTILS_ENABLE_GRAPHVIZ) 10 | #include 11 | #endif 12 | 13 | #include 14 | #include 15 | 16 | using namespace io_poc; 17 | 18 | int 19 | restart_dump(int argc, char ** argv) { 20 | usleep(200000); 21 | std::cout << "io: restart_dump" << std::endl; 22 | return 0; 23 | } // restart_dump 24 | 25 | register_action(io /* phase */, 26 | restart_dump /* name */, 27 | restart_dump /* action */); 28 | 29 | int 30 | output_final(int argc, char ** argv) { 31 | 32 | #if defined(RISTRA_UTILS_ENABLE_GRAPHVIZ) 33 | usleep(200000); 34 | std::cout << "finalize: output_final" << std::endl; 35 | 36 | int rank; 37 | MPI_Comm_rank(MPI_COMM_WORLD, &rank); 38 | 39 | if(rank == 0) { 40 | auto & control = control_t::instance(); 41 | flecsi::utils::graphviz_t gv; 42 | control.write(gv); 43 | gv.write("control.gv"); 44 | } // if 45 | #endif 46 | 47 | return 0; 48 | } // finalize 49 | 50 | register_action(finalize, output_final, output_final); 51 | -------------------------------------------------------------------------------- /io-poc/mesh.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | using namespace io_poc; 7 | 8 | int 9 | init_mesh(int argc, char ** argv) { 10 | usleep(200000); 11 | std::cout << "initialize: init_mesh" << std::endl; 12 | return 0; 13 | } // init_mesh 14 | 15 | register_action(initialize, init_mesh, init_mesh); 16 | 17 | int 18 | fixup_mesh(int argc, char ** argv) { 19 | usleep(200000); 20 | std::cout << "mesh: fixup_mesh" << std::endl; 21 | std::cout << std::endl; 22 | return 0; 23 | } // fixup_mesh 24 | 25 | register_action(mesh, fixup_mesh, fixup_mesh); 26 | -------------------------------------------------------------------------------- /io-poc/particles.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | using namespace io_poc; 7 | 8 | int 9 | advance_particles(int argc, char ** argv) { 10 | usleep(200000); 11 | std::cout << "advance: advance_particles" << std::endl; 12 | return 0; 13 | } // advance_particles 14 | 15 | register_action(advance, advance_particles, advance_particles); 16 | -------------------------------------------------------------------------------- /io-poc/runtime/runtime_driver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | #if !defined(FLECSI_ENABLE_MPI) 6 | #error FLECSI_ENABLE_MPI not defined! This file depends on MPI! 7 | #endif 8 | 9 | #include 10 | 11 | #include 12 | 13 | #include 14 | 15 | using namespace flecsi::control; 16 | 17 | inline int 18 | initialize_MPI(int argc, char ** argv) { 19 | MPI_Init(&argc, &argv); 20 | return 0; 21 | } // initialize_MPI 22 | 23 | inline int 24 | finalize_MPI(int argc, char ** argv, runtime_exit_mode_t mode) { 25 | MPI_Finalize(); 26 | return 0; 27 | } // finalize_MPI 28 | 29 | inline bool 30 | output_MPI(int argc, char ** argv) { 31 | int rank; 32 | MPI_Comm_rank(MPI_COMM_WORLD, &rank); 33 | 34 | return rank == 0 ? true : false; 35 | } // output_MPI 36 | 37 | inline runtime_handler_t handler{initialize_MPI, finalize_MPI, output_MPI}; 38 | 39 | inline bool specialization_handler_appended = 40 | flecsi::control::runtime_t::instance().append_runtime_handler(handler); 41 | 42 | inline bool specialization_control_registered = 43 | flecsi::control::runtime_t::instance().register_driver( 44 | io_poc::control_t::execute); 45 | -------------------------------------------------------------------------------- /io-poc/special.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | using namespace io_poc; 7 | 8 | int 9 | particle_special(int argc, char ** argv) { 10 | usleep(200000); 11 | std::cout << "advance: particle_special" << std::endl; 12 | return 0; 13 | } // accumulate_currents 14 | 15 | #if defined(ENABLE_SPECIAL) 16 | register_action(advance, particle_special, particle_special); 17 | add_dependency(advance, particle_special, advance_particles); 18 | add_dependency(advance, accumulate_currents, particle_special); 19 | #endif 20 | -------------------------------------------------------------------------------- /io-poc/species.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | using namespace io_poc; 7 | 8 | int 9 | init_species(int argc, char ** argv) { 10 | usleep(200000); 11 | std::cout << "initialize: init_species" << std::endl; 12 | std::cout << std::endl; 13 | return 0; 14 | } // init_fields 15 | 16 | register_action(initialize, init_species, init_species); 17 | add_dependency(initialize, init_species, init_mesh); 18 | -------------------------------------------------------------------------------- /spack-repo/packages/legion/package.py: -------------------------------------------------------------------------------- 1 | # Copyright 2013-2020 Lawrence Livermore National Security, LLC and other 2 | # Spack Project Developers. See the top-level COPYRIGHT file for details. 3 | # 4 | # SPDX-License-Identifier: (Apache-2.0 OR MIT) 5 | 6 | 7 | from spack import * 8 | from spack.pkg.builtin.legion import Legion 9 | 10 | class Legion(Legion): 11 | version('ctrl-rep-7', commit='7041e61e70a4a041bfee983f2aab9e061c5a6e61', preferred=True) 12 | version('ctrl-rep-6', commit='095be5c6e8d36a6ddb235fd079bc6e9b8d37baeb') 13 | version('ctrl-rep-5', commit='a204dced578258246ea0933293f4017058bc4bf5') 14 | version('ctrl-rep-4', commit='b66083076016c63ea8398fdb89c237880fcb0173') 15 | version('ctrl-rep-3', commit='572576b312509e666f2d72fafdbe9d968b1a6ac3') 16 | version('ctrl-rep-2', commit='96682fd8aae071ecd30a3ed5f481a9d84457a4b6') 17 | version('ctrl-rep-1', commit='a03671b21851d5f0d3f63210343cb61a630f4405') 18 | version('ctrl-rep-0', commit='177584e77036c9913d8a62e33b55fa784748759c') 19 | 20 | -------------------------------------------------------------------------------- /spack-repo/repo.yaml: -------------------------------------------------------------------------------- 1 | repo: 2 | namespace: lanl_ristra_flecsi 3 | -------------------------------------------------------------------------------- /sphinx/_static/images/anvil.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/_static/images/anvil.jpg -------------------------------------------------------------------------------- /sphinx/_static/images/ecp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/_static/images/ecp.png -------------------------------------------------------------------------------- /sphinx/_static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/_static/images/favicon.ico -------------------------------------------------------------------------------- /sphinx/_static/images/flecsi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/_static/images/flecsi.png -------------------------------------------------------------------------------- /sphinx/_static/images/lanl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/_static/images/lanl.png -------------------------------------------------------------------------------- /sphinx/_static/images/nnsa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/_static/images/nnsa.png -------------------------------------------------------------------------------- /sphinx/_templates/layout.html: -------------------------------------------------------------------------------- 1 | {% extends "!layout.html" %} 2 | {% block footer %} {{ super() }} 3 | 4 | 18 | {% endblock %} 19 | -------------------------------------------------------------------------------- /sphinx/src/developer-guide.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | FleCSI Developer Guide 6 | ====================== 7 | 8 | .. toctree:: 9 | :caption: User Guide: 10 | 11 | developer-guide/style-guide 12 | developer-guide/patterns 13 | developer-guide/versioning 14 | 15 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 16 | -------------------------------------------------------------------------------- /sphinx/src/developer-guide/patterns.rst: -------------------------------------------------------------------------------- 1 | FleCSI Design Patterns 2 | ====================== 3 | 4 | FleCSI uses several standard C++ design patterns. If you are a FleCSI 5 | developer (as opposed to a FleCSI user), understanding these patterns is 6 | a first step towards understanding the design philosophy and structure 7 | of the FleCSI core library. If you *are not* a FleCSI developer, you can 8 | safely skip this informaiton. 9 | 10 | .. toctree:: 11 | :caption: Patterns: 12 | 13 | patterns/meyers_singleton 14 | patterns/factory 15 | patterns/type_erasure 16 | patterns/policies 17 | patterns/CRTP 18 | 19 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 20 | -------------------------------------------------------------------------------- /sphinx/src/doxygen.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | FleCSI Interface Documentation 6 | ============================== 7 | 8 | .. toctree:: 9 | 10 | doxygen/index 11 | doxygen/function 12 | 13 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 14 | -------------------------------------------------------------------------------- /sphinx/src/doxygen/function.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Functions 6 | ========= 7 | 8 | .. doxygenstruct:: flecsi::control::control_u 9 | 10 | .. doxygenstruct:: flecsi::control::cycle_u 11 | 12 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 13 | -------------------------------------------------------------------------------- /sphinx/src/doxygen/index.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Index 6 | ===== 7 | 8 | .. doxygenindex:: 9 | 10 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 11 | -------------------------------------------------------------------------------- /sphinx/src/team.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | FleCSI Team 6 | =========== 7 | 8 | .. toctree:: 9 | 10 | team/ben 11 | team/christoph 12 | team/david 13 | team/irina 14 | team/jonas 15 | team/jonathan 16 | team/nick 17 | team/oleg 18 | team/ollie 19 | team/karen 20 | 21 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 22 | -------------------------------------------------------------------------------- /sphinx/src/team/ben.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/src/team/ben.jpg -------------------------------------------------------------------------------- /sphinx/src/team/ben.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Ben Bergen 6 | ========== 7 | 8 | .. container:: twocol 9 | 10 | .. container:: leftside 11 | 12 | .. image:: ben.jpg 13 | :align: left 14 | 15 | .. container:: rightside 16 | 17 | **CCS-7 Applied Computer Science** |br| 18 | *Los Alamos National Laboratory* 19 | 20 | Ben is a computational scientist working on problems in space 21 | physics and weapons science. He is also interested in 22 | understanding and developing programming models and tools for 23 | modern computing architectures. 24 | 25 | Ben is the current Co-Design Team and Project lead. He is also a 26 | deputy project lead for the Ristra Project, part of the Advanced 27 | Technology Development & Mitigation (ATDM) Program under the 28 | Department of Energy (DOE). 29 | 30 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 31 | -------------------------------------------------------------------------------- /sphinx/src/team/christoph.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/src/team/christoph.jpg -------------------------------------------------------------------------------- /sphinx/src/team/christoph.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Christoph Junghans 6 | ================== 7 | 8 | .. container:: twocol 9 | 10 | .. container:: leftside 11 | 12 | .. image:: christoph.jpg 13 | :align: left 14 | 15 | .. container:: rightside 16 | 17 | **CCS-7 Applied Computer Science** |br| 18 | *Los Alamos National Laboratory* 19 | 20 | Christoph is a computational physicist with a background in 21 | molecular dynamics and multi-scale physics applications. He also 22 | has experience in software engineering and task-based run-time 23 | systems. His interests lie in understanding modern computing 24 | architectures and the design of sustainable code. 25 | 26 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 27 | -------------------------------------------------------------------------------- /sphinx/src/team/david.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/src/team/david.jpg -------------------------------------------------------------------------------- /sphinx/src/team/david.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | David Daniel 6 | ============ 7 | 8 | .. container:: twocol 9 | 10 | .. container:: leftside 11 | 12 | .. image:: david.jpg 13 | :align: left 14 | 15 | .. container:: rightside 16 | 17 | **CCS-7 Applied Computer Science** |br| 18 | *Los Alamos National Laboratory* 19 | 20 | David is a computational scientist with a broad background in 21 | parallel computing, and in physics research from QCD to cosmology. 22 | Currently, David is the computer science lead for LANL's Ristra 23 | project that is developing a suite of next-generation 24 | multi-physics codes based on FleCSI targeting exascale-class 25 | computers and beyond. 26 | 27 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 28 | -------------------------------------------------------------------------------- /sphinx/src/team/irina.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/src/team/irina.jpg -------------------------------------------------------------------------------- /sphinx/src/team/irina.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Irina Demeshko 6 | ============== 7 | 8 | .. container:: twocol 9 | 10 | .. container:: leftside 11 | 12 | .. image:: irina.jpg 13 | :align: left 14 | 15 | .. container:: rightside 16 | 17 | **CCS-7 Applied Computer Science** |br| 18 | *Los Alamos National Laboratory* 19 | 20 | Irina is a computational scientist on the Co-Design Team. Her 21 | research interests are focused on new HPC technologies in 22 | application and large-scale scientific simulation codes. Her 23 | current work is directed at integrating task-based runtime systems 24 | into several software projects at LANL, including the FleCSI and 25 | CANGA projects. 26 | 27 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 28 | -------------------------------------------------------------------------------- /sphinx/src/team/jonas.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/src/team/jonas.jpg -------------------------------------------------------------------------------- /sphinx/src/team/jonas.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Jonas Lippuner 6 | ============== 7 | 8 | .. container:: twocol 9 | 10 | .. container:: leftside 11 | 12 | .. image:: jonas.jpg 13 | :align: left 14 | 15 | .. container:: rightside 16 | 17 | **CCS-2 Computational Physics & Methods** |br| 18 | *Los Alamos National Laboratory* 19 | 20 | Jonas is a computational scientist with a background in 21 | computational and nuclear astrophysics. His research has been 22 | focused on the origin of heavy elements like silver, gold, and 23 | uranium. He has developed a sophisticated nuclear reaction network 24 | to simulate how such elements and thousands of other isotopes are 25 | created in various astrophysical scenarios, such as the merger of 26 | two neutron stars or the explosion of a massive star. Jonas also 27 | has extensive experience with developing highly optimized code for 28 | GPUs. He is working on implementing physics applications on top of 29 | the FleCSI framework. 30 | 31 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 32 | -------------------------------------------------------------------------------- /sphinx/src/team/jonathan.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/src/team/jonathan.jpg -------------------------------------------------------------------------------- /sphinx/src/team/jonathan.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Jonathan Graham 6 | =============== 7 | 8 | .. container:: twocol 9 | 10 | .. container:: leftside 11 | 12 | .. image:: jonathan.jpg 13 | :align: left 14 | 15 | .. container:: rightside 16 | 17 | **CCS-7 Applied Computer Science** |br| 18 | *Los Alamos National Laboratory* 19 | 20 | Jonathan has a multidisciplinary background in observational solar 21 | physics, turbulence theory, astrophysical simulation, the oil and 22 | gas industry, and programming models for exascale computing. He 23 | has published papers evaluating mesoscale ocean large-eddy 24 | simulation models by employing spectral transfer analysis, 25 | determining the limits of fractal extrapolation of the mean solar 26 | magnetic flux, investigating the small scale dynamo in convective, 27 | radiative magnetohydrodynamics, and several papers on using 28 | mathematical closures for large eddy simulations. 29 | 30 | Jonathan has been involved in using Legion task-based parallelism 31 | for exascale computing both in proxy applications and in the 32 | development of FleCSI. 33 | 34 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 35 | -------------------------------------------------------------------------------- /sphinx/src/team/karen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/src/team/karen.jpg -------------------------------------------------------------------------------- /sphinx/src/team/karen.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Karen Tsai 6 | ========== 7 | 8 | .. container:: twocol 9 | 10 | .. container:: leftside 11 | 12 | .. image:: karen.jpg 13 | :align: left 14 | 15 | .. container:: rightside 16 | 17 | **CCS-7 Applied Computer Science** |br| 18 | *Los Alamos National Laboratory* 19 | 20 | Karen is a computer and computational scientist who is interested 21 | in understanding, designing, and developing application code with 22 | scientists. She is also interested in learning about and utilizing 23 | modern computing tools to optimize algorithms and visualize 24 | complex datasets. She has a Master of Science in Computational 25 | Science, Engineering and Mathematics and a Bachelor of Science in 26 | Computer Science from the University of Texas – Austin. 27 | Karen joined the Co-Design Team in the fall of 2017 to work on the 28 | Ristra and FleCSI projects. 29 | 30 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 31 | -------------------------------------------------------------------------------- /sphinx/src/team/nick.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/src/team/nick.jpg -------------------------------------------------------------------------------- /sphinx/src/team/nick.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Nick Moss 6 | ========== 7 | 8 | .. container:: twocol 9 | 10 | .. container:: leftside 11 | 12 | .. image:: nick.jpg 13 | :align: left 14 | 15 | .. container:: rightside 16 | 17 | **Data Science Team** |br| 18 | *Medable* 19 | 20 | Nick is a computer scientist and former member of the CCS-7 21 | programming models team with expertise in programming systems and 22 | domain-specific languages, compiler design, LLVM, C++ internals 23 | and Clang, parallel, concurrent, and task-based programming 24 | models, and distributed data systems. 25 | 26 | Nick is one of the primary designers of FLeCSI, having designed 27 | and implemented various parts of its infrastructure including: 28 | mesh and tree topology, data model, distributed task execution, 29 | and more recently has worked on the Kitsune project to produce a 30 | specialized FleCSI compiler. 31 | 32 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 33 | -------------------------------------------------------------------------------- /sphinx/src/team/oleg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/src/team/oleg.jpg -------------------------------------------------------------------------------- /sphinx/src/team/oleg.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Oleg Korobkin 6 | ============= 7 | 8 | .. container:: twocol 9 | 10 | .. container:: leftside 11 | 12 | .. image:: oleg.jpg 13 | :align: left 14 | 15 | .. container:: rightside 16 | 17 | **CCS-7 Applied Computer Science** |br| 18 | *Los Alamos National Laboratory* 19 | 20 | Oleg is a computational physicist with a background in numerical 21 | relativity and relativistic astrophysics, with a particular focus 22 | on physics of neutron stars and accretion disks around black 23 | holes. He also has experience in simulating nucleosynthesis of 24 | heavy elements by solving complex nuclear reaction networks. He is 25 | interested in the inner workings of gamma-ray bursts, specifically 26 | in modeling violent relativistic hydrodynamics of neutron star 27 | mergers and investigating a variety of potentially observable 28 | signals. 29 | 30 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 31 | -------------------------------------------------------------------------------- /sphinx/src/team/ollie.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/sphinx/src/team/ollie.jpg -------------------------------------------------------------------------------- /sphinx/src/team/ollie.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | Li-Ta (Ollie) Lo 6 | ================ 7 | 8 | .. container:: twocol 9 | 10 | .. container:: leftside 11 | 12 | .. image:: ollie.jpg 13 | :align: left 14 | 15 | .. container:: rightside 16 | 17 | **CCS-7 Applied Computer Science** |br| 18 | *Los Alamos National Laboratory* 19 | 20 | Li-Ta Lo is currently a computer scientist with the Data Science 21 | at Scale team of Los Alamos National Laboratory. His research 22 | interests include data science, large-scale visualization and 23 | analysis, data-parallel programming and software engineering for 24 | scientific computing. His work for FleCSI focuses on providing an 25 | efficient and scalable MPI backend. 26 | 27 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 28 | -------------------------------------------------------------------------------- /sphinx/src/tutorial/mpi-interoperability.rst: -------------------------------------------------------------------------------- 1 | Example 8: MPI Interoperability 2 | =============================== 3 | 4 | FleCSI provides straightforward interoperability with libraries and code 5 | that depend on the MPI runtime. Data that are registered in FleCSI may 6 | be passed to an MPI task and used as normal. This example demonstrates 7 | accessing data that have been registered and initialized in FleCSI from 8 | the MPI runtime. Additionally, this example demonstrates a mechanism for 9 | creating persistent references from FleCSI to data that are allocated in 10 | the MPI runtime. 11 | 12 | NOTES: 13 | 14 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 15 | -------------------------------------------------------------------------------- /sphinx/src/tutorial/specialization.rst: -------------------------------------------------------------------------------- 1 | Specialization 2 | ============== 3 | 4 | In the FleCSI nomenclature, a *specialization* is a collection of type 5 | definitions that customize the core FleCSI topologies and data 6 | structures to produce a domain-specific interface that is suitable for 7 | application developers. The terminology is derived from C++, where a 8 | specialization is simply a full or partial qualification of a 9 | parameterized type, i.e., an `explicit 10 | `_ 11 | or `partial 12 | `_ 13 | specialization of a type. 14 | 15 | .. toctree:: 16 | topologies 17 | 18 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 19 | -------------------------------------------------------------------------------- /sphinx/src/tutorial/topologies.rst: -------------------------------------------------------------------------------- 1 | FleCSI Topologies 2 | ================= 3 | 4 | FleCSI defines several topology types that can be specialized to provide 5 | support for a broad variety of applied methods. 6 | 7 | .. toctree:: 8 | :caption: Topology Types: 9 | 10 | topologies/unstructured 11 | topologies/structured 12 | topologies/octree 13 | topologies/set 14 | 15 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 16 | -------------------------------------------------------------------------------- /sphinx/src/tutorial/topologies/octree.rst: -------------------------------------------------------------------------------- 1 | Topology: Octree 2 | ================ 3 | 4 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 5 | -------------------------------------------------------------------------------- /sphinx/src/tutorial/topologies/set.rst: -------------------------------------------------------------------------------- 1 | Topology: Set 2 | ============= 3 | 4 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 5 | -------------------------------------------------------------------------------- /sphinx/src/tutorial/topologies/structured.rst: -------------------------------------------------------------------------------- 1 | Topology: Structured Mesh 2 | ========================= 3 | 4 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 5 | -------------------------------------------------------------------------------- /sphinx/src/tutorial/topologies/unstructured.rst: -------------------------------------------------------------------------------- 1 | Topology: Unstructured Mesh 2 | =========================== 3 | 4 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 5 | -------------------------------------------------------------------------------- /sphinx/src/user-guide.rst: -------------------------------------------------------------------------------- 1 | .. |br| raw:: html 2 | 3 |
4 | 5 | FleCSI User Guide 6 | ================= 7 | 8 | .. toctree:: 9 | :caption: User Guide: 10 | 11 | user-guide/control 12 | user-guide/data 13 | user-guide/execution 14 | 15 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 16 | -------------------------------------------------------------------------------- /sphinx/src/user-guide/control.rst: -------------------------------------------------------------------------------- 1 | Control Model 2 | ============= 3 | 4 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 5 | -------------------------------------------------------------------------------- /sphinx/src/user-guide/data.rst: -------------------------------------------------------------------------------- 1 | Data Model 2 | ========== 3 | 4 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 5 | -------------------------------------------------------------------------------- /sphinx/src/user-guide/execution.rst: -------------------------------------------------------------------------------- 1 | Execution Model 2 | =============== 3 | 4 | .. vim: set tabstop=2 shiftwidth=2 expandtab fo=cqt tw=72 : 5 | -------------------------------------------------------------------------------- /tools/bin/flecsi-tutorial.csh.in: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # FleCSI Csh/Tcsh configuration file. 3 | ################################################################################ 4 | 5 | setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@:@FLECSI_LD_DEPENDS@ 6 | setenv PATH ${PATH}:@CMAKE_INSTALL_PREFIX@/bin 7 | if (!(${?PYTHONPATH})) setenv PYTHONPATH 8 | @FLECSI_PYTHON_PATH_CSH@ 9 | 10 | setenv FLECSI_TUTORIAL_INPUT_MESH @CMAKE_INSTALL_PREFIX@/share/FleCSI-Tut/inputs/simple2d-16x16.msh 11 | 12 | setenv FLECSIT_INCLUDES @FLECSIT_TUTORIAL_INCLUDES@ 13 | setenv FLECSIT_LIBRARIES @FLECSIT_TUTORIAL_LIBRARIES@ 14 | setenv FLECSIT_PACKAGES @FLECSIT_TUTORIAL_PACKAGES@ 15 | setenv FLECSIT_DEFINES FLECSI_ENABLE_SPECIALIZATION_TLT_INIT:FLECSI_ENABLE_SPECIALIZATION_SPMD_INIT:CINCH_OVERRIDE_DEFAULT_INITIALIZATION_DRIVER@FLECSI_TUTORIAL_ENABLE_VTK@ 16 | -------------------------------------------------------------------------------- /tools/bin/flecsi-tutorial.sh.in: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # FleCSI Bash configuration file. 3 | ################################################################################ 4 | 5 | export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@:@FLECSI_LD_DEPENDS@ 6 | export PATH=${PATH}:@CMAKE_INSTALL_PREFIX@/bin 7 | @FLECSI_PYTHON_PATH_BASH@ 8 | 9 | export FLECSI_TUTORIAL_INPUT_MESH=@CMAKE_INSTALL_PREFIX@/share/FleCSI-Tut/inputs/simple2d-16x16.msh 10 | 11 | export FLECSIT_INCLUDES=@FLECSIT_TUTORIAL_INCLUDES@ 12 | export FLECSIT_LIBRARIES=@FLECSIT_TUTORIAL_LIBRARIES@ 13 | export FLECSIT_PACKAGES=@FLECSIT_TUTORIAL_PACKAGES@ 14 | export FLECSIT_DEFINES=FLECSI_ENABLE_SPECIALIZATION_TLT_INIT:FLECSI_ENABLE_SPECIALIZATION_SPMD_INIT:CINCH_OVERRIDE_DEFAULT_INITIALIZATION_DRIVER@FLECSI_TUTORIAL_ENABLE_VTK@ 15 | -------------------------------------------------------------------------------- /tools/bin/flecsi.csh.in: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # FleCSI Csh/Tcsh configuration file. 3 | ################################################################################ 4 | 5 | setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@:@FLECSI_LD_DEPENDS@ 6 | setenv PATH ${PATH}:@CMAKE_INSTALL_PREFIX@/bin 7 | if (!(${?PYTHONPATH})) setenv PYTHONPATH 8 | @FLECSI_PYTHON_PATH_CSH@ 9 | -------------------------------------------------------------------------------- /tools/bin/flecsi.in: -------------------------------------------------------------------------------- 1 | #%Module1.0 2 | #------------------------------------------------------------------------------# 3 | # FleCSI Modulefile 4 | #------------------------------------------------------------------------------# 5 | 6 | proc ModesHelp {} { 7 | puts stderr "\tThis loads the FleCSI environment." 8 | puts stderr "\tModifies: PATH, PYTHONPATH" 9 | } 10 | 11 | module-whatis "\tThis loads the FleCSI environment." 12 | module-whatis "\tModifies: PATH, PYTHONPATH" 13 | 14 | #------------------------------------------------------------------------------# 15 | # Path Udates 16 | #------------------------------------------------------------------------------# 17 | 18 | prepend-path PATH @CMAKE_INSTALL_PREFIX@/bin 19 | prepend-path LD_LIBRARY_PATH @CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@:@FLECSI_LD_DEPENDS@ 20 | @FLECSI_PYTHON_PATH_MODULE@ 21 | -------------------------------------------------------------------------------- /tools/bin/flecsi.sh.in: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # FleCSI Bash configuration file. 3 | ################################################################################ 4 | 5 | export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}${LD_LIBRARY_PATH:+:}@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@:@FLECSI_LD_DEPENDS@ 6 | export PATH=${PATH}:@CMAKE_INSTALL_PREFIX@/bin 7 | @FLECSI_PYTHON_PATH_BASH@ 8 | -------------------------------------------------------------------------------- /tools/find_guard: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | cwd=`pwd` 4 | 5 | guard="flecsi_"`echo $cwd | sed 's,^.*\/flecsi,,g'"_"`$1"_h" 6 | echo $guard 7 | guard=`echo $guard | sed 's,\/,_,g'` 8 | 9 | echo $guard 10 | -------------------------------------------------------------------------------- /tools/find_sources: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | cwd=`pwd` 4 | 5 | echo "Searching for source files in $cwd..." 6 | 7 | headers=`find . -name "*.h" | grep -v "test" | sort | sed 's,\.\/,,g'` 8 | 9 | echo 10 | echo "Headers:" 11 | echo 12 | echo "$headers" 13 | 14 | sources=`find . -name "*.cc" | grep -v "test" | sort | sed 's,\.\/,,g'` 15 | 16 | echo 17 | echo "Sources:" 18 | echo 19 | echo "$sources" 20 | -------------------------------------------------------------------------------- /tools/flecsit/README.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/tools/flecsit/README.rst -------------------------------------------------------------------------------- /tools/flecsit/bin/flecsit-completion.bash: -------------------------------------------------------------------------------- 1 | complete -W "compile analyze" flecsit 2 | -------------------------------------------------------------------------------- /tools/flecsit/flecsit/__init__.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # Copyright (c) 2014 Los Alamos National Security, LLC 3 | # All rights reserved. 4 | #------------------------------------------------------------------------------# 5 | 6 | """ 7 | FleCSIT 8 | ---- 9 | A Command Line Environment for FleCSI. 10 | """ 11 | 12 | __version__ = '1.0.0' 13 | -------------------------------------------------------------------------------- /tools/flecsit/flecsit/base.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # Copyright (c) 2014 Los Alamos National Security, LLC 3 | # All rights reserved. 4 | #------------------------------------------------------------------------------# 5 | 6 | #------------------------------------------------------------------------------# 7 | # Service base class 8 | #------------------------------------------------------------------------------# 9 | 10 | class Service(object): pass 11 | 12 | #------------------------------------------------------------------------------# 13 | # Formatting options for emacs and vim. 14 | # vim: set tabstop=4 shiftwidth=4 expandtab : 15 | #------------------------------------------------------------------------------# 16 | -------------------------------------------------------------------------------- /tools/flecsit/flecsit/services/__init__.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # Copyright (c) 2014 Los Alamos National Security, LLC 3 | # All rights reserved. 4 | #------------------------------------------------------------------------------# 5 | 6 | """ 7 | Services for FleCSIT Command Line Tool 8 | """ 9 | 10 | import os 11 | import glob 12 | 13 | modules = glob.glob(os.path.dirname(__file__)+"/*.py") 14 | __all__ = [ os.path.basename(f)[:-3] for f in modules] 15 | -------------------------------------------------------------------------------- /tools/flecsit/flecsit/services/analysis_driver/__init__.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # Copyright (c) 2014 Los Alamos National Security, LLC 3 | # All rights reserved. 4 | #------------------------------------------------------------------------------# 5 | 6 | """ 7 | FleCSIT Analysis implementation. 8 | """ 9 | 10 | import os 11 | import glob 12 | 13 | modules = glob.glob(os.path.dirname(__file__)+"/*.py") 14 | __all__ = [ os.path.basename(f)[:-3] for f in modules] 15 | -------------------------------------------------------------------------------- /tools/flecsit/flecsit/services/analysis_driver/cmakelist.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # Copyright (c) 2014 Los Alamos National Security, LLC 3 | # All rights reserved. 4 | #------------------------------------------------------------------------------# 5 | 6 | from string import Template 7 | 8 | cmake_source_template = Template( 9 | """ 10 | #/*~-------------------------------------------------------------------------~~* 11 | # * Copyright (c) 2014 Los Alamos National Security, LLC 12 | # * All rights reserved. 13 | # *~-------------------------------------------------------------------------~~*/ 14 | 15 | cmake_minimum_required(${CMAKE_VERSION}) 16 | project(${PROJECT_NAME}) 17 | 18 | set(CMAKE_EXPORT_COMPILE_COMMANDS ON) 19 | 20 | include_directories(${CMAKE_INCLUDE_DIRS}) 21 | 22 | add_definitions(${CMAKE_DEFINES}) 23 | 24 | add_definitions(-std=c++14) 25 | 26 | add_executable(${PROJECT_NAME} 27 | runtime_driver.cc 28 | runtime_main.cc 29 | ${PROJECT_NAME}.cc) 30 | """ 31 | ) 32 | 33 | #------------------------------------------------------------------------------# 34 | # vim: set tabstop=2 shiftwidth=2 expandtab : 35 | #------------------------------------------------------------------------------# 36 | -------------------------------------------------------------------------------- /tools/flecsit/flecsit/services/compile_driver/__init__.py: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------------------------------# 2 | # Copyright (c) 2014 Los Alamos National Security, LLC 3 | # All rights reserved. 4 | #------------------------------------------------------------------------------# 5 | 6 | """ 7 | FleCSIT Compile implementation. 8 | """ 9 | 10 | import os 11 | import glob 12 | 13 | modules = glob.glob(os.path.dirname(__file__)+"/*.py") 14 | __all__ = [ os.path.basename(f)[:-3] for f in modules] 15 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/incorrect-data-model.cc: -------------------------------------------------------------------------------- 1 | /* 2 | # Incorrect data model 3 | flecsi_register_field(mesh_t, example, pressure, double, dense, 1, cells); 4 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 5 | auto f = flecsi_get_handle(m, example, pressure, double, sparse, 0); 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | using namespace flecsi; 14 | using namespace flecsi::tutorial; 15 | 16 | flecsi_register_field(mesh_t, example, pressure, double, dense, 1, cells); 17 | 18 | namespace flecsi { 19 | namespace execution { 20 | 21 | void 22 | driver(int argc, char ** argv) { 23 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 24 | 25 | // The error here is "sparse" when we want "dense" 26 | auto f = flecsi_get_handle(m, example, pressure, double, sparse, 0); 27 | } 28 | 29 | } // namespace execution 30 | } // namespace flecsi 31 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/incorrect-data-model.color: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 |  file incorrect-data-model.cc, line 26 4 | is inconsistent with the matching flecsi_register_field() call here: 5 |  file incorrect-data-model.cc, line 16 6 | because the storage class was registered as dense, 7 | but retrieved as sparse. 8 | 9 | Synopsis: 10 | 1 error 11 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/incorrect-data-model.plain: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 | file incorrect-data-model.cc, line 26 4 | is inconsistent with the matching flecsi_register_field() call here: 5 | file incorrect-data-model.cc, line 16 6 | because the storage class was registered as dense, 7 | but retrieved as sparse. 8 | 9 | Synopsis: 10 | 1 error 11 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/incorrect-type.cc: -------------------------------------------------------------------------------- 1 | /* 2 | # Incorrect type 3 | flecsi_register_field(mesh_t, example, pressure, double, dense, 1, cells); 4 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 5 | auto f = flecsi_get_handle(m, example, pressure, int, dense, 0); 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | using namespace flecsi; 14 | using namespace flecsi::tutorial; 15 | 16 | flecsi_register_field(mesh_t, example, pressure, double, dense, 1, cells); 17 | 18 | namespace flecsi { 19 | namespace execution { 20 | 21 | void 22 | driver(int argc, char ** argv) { 23 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 24 | 25 | // The error here is "int" when we want "double" 26 | auto f = flecsi_get_handle(m, example, pressure, int, dense, 0); 27 | } 28 | 29 | } // namespace execution 30 | } // namespace flecsi 31 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/incorrect-type.color: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 |  file incorrect-type.cc, line 26 4 | is inconsistent with the matching flecsi_register_field() call here: 5 |  file incorrect-type.cc, line 16 6 | because the data type was registered as double, 7 | but retrieved as int. 8 | 9 | Synopsis: 10 | 1 error 11 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/incorrect-type.plain: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 | file incorrect-type.cc, line 26 4 | is inconsistent with the matching flecsi_register_field() call here: 5 | file incorrect-type.cc, line 16 6 | because the data type was registered as double, 7 | but retrieved as int. 8 | 9 | Synopsis: 10 | 1 error 11 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/mismatching-name.cc: -------------------------------------------------------------------------------- 1 | /* 2 | # Mismatching name 3 | flecsi_register_field(mesh_t, example, pressure, double, dense, 1, cells); 4 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 5 | auto f = flecsi_get_handle(m, example, presure, double, dense, 0); 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | using namespace flecsi; 14 | using namespace flecsi::tutorial; 15 | 16 | flecsi_register_field(mesh_t, example, pressure, double, dense, 1, cells); 17 | 18 | namespace flecsi { 19 | namespace execution { 20 | 21 | void 22 | driver(int argc, char ** argv) { 23 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 24 | 25 | // The error here is the typo: "presure" instead of "pressure" 26 | auto f = flecsi_get_handle(m, example, presure, double, dense, 0); 27 | } 28 | 29 | } // namespace execution 30 | } // namespace flecsi 31 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/mismatching-name.color: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 |  file mismatching-name.cc, line 26 4 | with: 5 |  namespace = "example" 6 |  name = "presure" 7 | does not match with namespace + name in any flecsi_register_field() call. 8 | Check if either is misspelled, or misspelled in a flecsi_register_field(), 9 | or not registered in any flecsi_register_field() at all. 10 |  11 | Synopsis: 12 | 1 error 13 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/mismatching-name.plain: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 | file mismatching-name.cc, line 26 4 | with: 5 | namespace = "example" 6 | name = "presure" 7 | does not match with namespace + name in any flecsi_register_field() call. 8 | Check if either is misspelled, or misspelled in a flecsi_register_field(), 9 | or not registered in any flecsi_register_field() at all. 10 | 11 | Synopsis: 12 | 1 error 13 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/mismatching-namespace.cc: -------------------------------------------------------------------------------- 1 | /* 2 | # Mismatching namespace 3 | flecsi_register_field(mesh_t, example, pressure, double, dense, 1, cells); 4 | auto f = flecsi_get_handle(m, exmaple, pressure, double, dense, 0); 5 | */ 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | using namespace flecsi; 13 | using namespace flecsi::tutorial; 14 | 15 | flecsi_register_field(mesh_t, example, pressure, double, dense, 1, cells); 16 | 17 | namespace flecsi { 18 | namespace execution { 19 | 20 | void 21 | driver(int argc, char ** argv) { 22 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 23 | 24 | // The error here is the typo: "exmaple" instead of "example" 25 | auto f = flecsi_get_handle(m, exmaple, pressure, double, dense, 0); 26 | } 27 | 28 | } // namespace execution 29 | } // namespace flecsi 30 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/mismatching-namespace.color: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 |  file mismatching-namespace.cc, line 25 4 | with: 5 |  namespace = "exmaple" 6 |  name = "pressure" 7 | does not match with namespace + name in any flecsi_register_field() call. 8 | Check if either is misspelled, or misspelled in a flecsi_register_field(), 9 | or not registered in any flecsi_register_field() at all. 10 |  11 | Synopsis: 12 | 1 error 13 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/mismatching-namespace.plain: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 | file mismatching-namespace.cc, line 25 4 | with: 5 | namespace = "exmaple" 6 | name = "pressure" 7 | does not match with namespace + name in any flecsi_register_field() call. 8 | Check if either is misspelled, or misspelled in a flecsi_register_field(), 9 | or not registered in any flecsi_register_field() at all. 10 | 11 | Synopsis: 12 | 1 error 13 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/type-data-range.cc: -------------------------------------------------------------------------------- 1 | /* 2 | # Incorrect type, data model, and range 3 | flecsi_register_field(mesh_t, example, pressure, double, dense, 2, cells); 4 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 5 | auto f = flecsi_get_handle(m, example, pressure, int, sparse, 4); 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | using namespace flecsi; 14 | using namespace flecsi::tutorial; 15 | 16 | flecsi_register_field(mesh_t, example, pressure, double, dense, 2, cells); 17 | 18 | namespace flecsi { 19 | namespace execution { 20 | 21 | void 22 | driver(int argc, char ** argv) { 23 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 24 | auto f = flecsi_get_handle(m, example, pressure, int, sparse, 4); 25 | } 26 | 27 | } // namespace execution 28 | } // namespace flecsi 29 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/type-data-range.color: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 |  file type-data-range.cc, line 24 4 | is inconsistent with the matching flecsi_register_field() call here: 5 |  file type-data-range.cc, line 16 6 | because the data type was registered as double, 7 | but retrieved as int. 8 | 9 | Error: 10 | The flecsi_get_handle() macro call here: 11 |  file type-data-range.cc, line 24 12 | is inconsistent with the matching flecsi_register_field() call here: 13 |  file type-data-range.cc, line 16 14 | because the storage class was registered as dense, 15 | but retrieved as sparse. 16 | 17 | Error: 18 | The flecsi_get_handle() macro call here: 19 |  file type-data-range.cc, line 24 20 | is inconsistent with the matching flecsi_register_field() call here: 21 |  file type-data-range.cc, line 16 22 | because 2 versions (indices [0]..[1]) were registered, 23 | but version [4] was retrieved. 24 | 25 | Synopsis: 26 | 3 errors 27 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/type-data-range.plain: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 | file type-data-range.cc, line 24 4 | is inconsistent with the matching flecsi_register_field() call here: 5 | file type-data-range.cc, line 16 6 | because the data type was registered as double, 7 | but retrieved as int. 8 | 9 | Error: 10 | The flecsi_get_handle() macro call here: 11 | file type-data-range.cc, line 24 12 | is inconsistent with the matching flecsi_register_field() call here: 13 | file type-data-range.cc, line 16 14 | because the storage class was registered as dense, 15 | but retrieved as sparse. 16 | 17 | Error: 18 | The flecsi_get_handle() macro call here: 19 | file type-data-range.cc, line 24 20 | is inconsistent with the matching flecsi_register_field() call here: 21 | file type-data-range.cc, line 16 22 | because 2 versions (indices [0]..[1]) were registered, 23 | but version [4] was retrieved. 24 | 25 | Synopsis: 26 | 3 errors 27 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/version-out-of-range.cc: -------------------------------------------------------------------------------- 1 | /* 2 | # Version out of range 3 | flecsi_register_field(mesh_t, example, pressure, double, dense, 1, cells); 4 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 5 | auto f = flecsi_get_handle(m, example, pressure, double, dense, 1); 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | using namespace flecsi; 14 | using namespace flecsi::tutorial; 15 | 16 | flecsi_register_field(mesh_t, example, pressure, double, dense, 1, cells); 17 | 18 | namespace flecsi { 19 | namespace execution { 20 | 21 | void 22 | driver(int argc, char ** argv) { 23 | auto m = flecsi_get_client_handle(mesh_t, clients, mesh); 24 | 25 | // The error here is writing 1, when only 0 is available 26 | auto f = flecsi_get_handle(m, example, pressure, double, dense, 1); 27 | } 28 | 29 | } // namespace execution 30 | } // namespace flecsi 31 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/version-out-of-range.color: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 |  file version-out-of-range.cc, line 26 4 | is inconsistent with the matching flecsi_register_field() call here: 5 |  file version-out-of-range.cc, line 16 6 | because 1 version (index [0]) was registered, 7 | but version [1] was retrieved. 8 | 9 | Synopsis: 10 | 1 error 11 | -------------------------------------------------------------------------------- /tools/flecstan/example-field/version-out-of-range.plain: -------------------------------------------------------------------------------- 1 | Error: 2 | The flecsi_get_handle() macro call here: 3 | file version-out-of-range.cc, line 26 4 | is inconsistent with the matching flecsi_register_field() call here: 5 | file version-out-of-range.cc, line 16 6 | because 1 version (index [0]) was registered, 7 | but version [1] was retrieved. 8 | 9 | Synopsis: 10 | 1 error 11 | -------------------------------------------------------------------------------- /tools/flecstan/example/01-task-good-register-execute-inside.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs. 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | 10 | // Task registration (inside namespace) 11 | flecsi_register_task(foo, ns, loc, single); // hash("ns::foo") 12 | } // namespace ns 13 | 14 | namespace flecsi { 15 | namespace execution { 16 | void 17 | driver(int, char **) { 18 | // Task execution 19 | flecsi_execute_task(foo, ns, single); // hash("ns::foo") 20 | } 21 | } // namespace execution 22 | } // namespace flecsi 23 | -------------------------------------------------------------------------------- /tools/flecstan/example/01-task-good-register-execute-inside.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 01-task-good-register-execute-inside.cc", 26 | 27 | "file" : 28 | "01-task-good-register-execute-inside.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/02-task-good-register-execute-outside.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs. 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | } // namespace ns 10 | 11 | // Task registration (outside namespace) 12 | using ns::foo; 13 | flecsi_register_task(foo, ns, loc, single); // hash("ns::foo") 14 | 15 | namespace flecsi { 16 | namespace execution { 17 | void 18 | driver(int, char **) { 19 | // Task execution 20 | flecsi_execute_task(foo, ns, single); // hash("ns::foo") 21 | } 22 | } // namespace execution 23 | } // namespace flecsi 24 | -------------------------------------------------------------------------------- /tools/flecstan/example/02-task-good-register-execute-outside.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 02-task-good-register-execute-outside.cc", 26 | 27 | "file" : 28 | "02-task-good-register-execute-outside.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/03-task-good-register-execute-global.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs. 3 | 4 | #include "execution/execution.h" 5 | 6 | // No namespace 7 | void 8 | foo() {} 9 | 10 | // Task registration 11 | flecsi_register_task(foo, , loc, single); // hash("::foo"); 12 | 13 | namespace flecsi { 14 | namespace execution { 15 | void 16 | driver(int, char **) { 17 | // Task execution 18 | flecsi_execute_task(foo, , single); // hash("::foo"); 19 | } 20 | } // namespace execution 21 | } // namespace flecsi 22 | -------------------------------------------------------------------------------- /tools/flecstan/example/03-task-good-register-execute-global.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 03-task-good-register-execute-global.cc", 26 | 27 | "file" : 28 | "03-task-good-register-execute-global.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/04-task-good-register-not-ambiguous.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs. 3 | 4 | #include "execution/execution.h" 5 | 6 | void 7 | foo() {} // foo #1 8 | namespace ns { 9 | void 10 | foo() {} // foo #2 11 | 12 | // In this case there's no ambiguity; the foo() 13 | // function in the current namespace is preferred. 14 | flecsi_register_task(foo, ns, loc, single); // hash("ns::foo") 15 | } // namespace ns 16 | 17 | namespace flecsi { 18 | namespace execution { 19 | void 20 | driver(int, char **) { 21 | flecsi_execute_task(foo, ns, single); // hash("ns::foo") 22 | } 23 | } // namespace execution 24 | } // namespace flecsi 25 | -------------------------------------------------------------------------------- /tools/flecstan/example/04-task-good-register-not-ambiguous.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 04-task-good-register-not-ambiguous.cc", 26 | 27 | "file" : 28 | "04-task-good-register-not-ambiguous.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/05-task-warning-register-no-execute.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs, but a warning might be appropriate. 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | flecsi_register_task(foo, ns, loc, single); 10 | } // namespace ns 11 | 12 | namespace flecsi { 13 | namespace execution { 14 | void 15 | driver(int, char **) { 16 | // If there's no execution, anywhere, of a registered task, 17 | // then perhaps the FleCSI Static Analyzer should print a 18 | // warning. This would be the analog of a compiler's "variable 19 | // defined but never used" warning. 20 | } 21 | } // namespace execution 22 | } // namespace flecsi 23 | -------------------------------------------------------------------------------- /tools/flecstan/example/05-task-warning-register-no-execute.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 05-task-warning-register-no-execute.cc", 26 | 27 | "file" : 28 | "05-task-warning-register-no-execute.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/06-task-warning-register-execute-warn.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs, but a warning might be appropriate. 3 | 4 | #include "execution/execution.h" 5 | 6 | void 7 | foo() { 8 | std::cout << "::foo" << std::endl; 9 | } 10 | namespace ns { 11 | void 12 | foo() { 13 | std::cout << "ns::foo" << std::endl; 14 | } 15 | 16 | // Registers ns::foo, not ::foo, in spite of the hash 17 | flecsi_register_task(foo, , loc, single); // hash("::foo") 18 | } // namespace ns 19 | 20 | namespace flecsi { 21 | namespace execution { 22 | void 23 | driver(int, char **) { 24 | // Matches the registered hash and calls ns::foo, 25 | // but could the user have wanted ::foo? 26 | flecsi_execute_task(foo, , single); // hash("::foo") 27 | } 28 | } // namespace execution 29 | } // namespace flecsi 30 | -------------------------------------------------------------------------------- /tools/flecstan/example/06-task-warning-register-execute-warn.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 06-task-warning-register-execute-warn.cc", 26 | 27 | "file" : 28 | "06-task-warning-register-execute-warn.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/07-task-warning-execute-wrong-function.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs, but a warning might be appropriate. 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace A { 7 | void 8 | foo() {} 9 | } // namespace A 10 | 11 | namespace B { 12 | void 13 | foo() {} 14 | // Registers B::foo, but with hash A::foo 15 | flecsi_register_task(foo, A, loc, single); // hash("A::foo") 16 | } // namespace B 17 | 18 | namespace flecsi { 19 | namespace execution { 20 | void 21 | driver(int, char **) { 22 | // Executes B::foo (not A::foo, as one might believe) 23 | flecsi_execute_task(foo, A, single); // hash("A::foo") 24 | } 25 | } // namespace execution 26 | } // namespace flecsi 27 | -------------------------------------------------------------------------------- /tools/flecstan/example/07-task-warning-execute-wrong-function.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 07-task-warning-execute-wrong-function.cc", 26 | 27 | "file" : 28 | "07-task-warning-execute-wrong-function.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/08-task-ugly-register-execute-odd.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs, but is perhaps a bit goofy. 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | 10 | // hash("::ns" + "::" + "foo") ==> hash("::ns::foo") 11 | flecsi_register_task(foo, ::ns, loc, single); 12 | } // namespace ns 13 | 14 | namespace flecsi { 15 | namespace execution { 16 | void 17 | driver(int, char **) { 18 | // hash("" + "::" + "ns::foo") ==> hash("::ns::foo") 19 | flecsi_execute_task(ns::foo, , single); 20 | } 21 | } // namespace execution 22 | } // namespace flecsi 23 | -------------------------------------------------------------------------------- /tools/flecstan/example/08-task-ugly-register-execute-odd.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 08-task-ugly-register-execute-odd.cc", 26 | 27 | "file" : 28 | "08-task-ugly-register-execute-odd.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/09-task-compile-register-not-scope.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (compile time). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | } // namespace ns 10 | 11 | // Compile time error: foo is not in scope. 12 | // The register macro does *not* place namespace:: in front! 13 | flecsi_register_task(foo, ns, loc, single); 14 | 15 | namespace flecsi { 16 | namespace execution { 17 | void 18 | driver(int, char **) { 19 | // Task execution 20 | flecsi_execute_task(foo, ns, single); 21 | } 22 | } // namespace execution 23 | } // namespace flecsi 24 | -------------------------------------------------------------------------------- /tools/flecstan/example/09-task-compile-register-not-scope.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 09-task-compile-register-not-scope.cc", 26 | 27 | "file" : 28 | "09-task-compile-register-not-scope.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/10-task-compile-execute-not-scope.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (compile time). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace A {} 7 | 8 | namespace B { 9 | void 10 | foo() {} 11 | flecsi_register_task(foo, B, loc, single); 12 | } // namespace B 13 | 14 | namespace flecsi { 15 | namespace execution { 16 | void 17 | driver(int, char **) { 18 | // Compile time error: A::foo does not exist. 19 | // The execute macro, unlike the register macro as shown 20 | // in another example, *does* place namespace:: in front. 21 | flecsi_execute_task(foo, A, single); 22 | } 23 | } // namespace execution 24 | } // namespace flecsi 25 | -------------------------------------------------------------------------------- /tools/flecstan/example/10-task-compile-execute-not-scope.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 10-task-compile-execute-not-scope.cc", 26 | 27 | "file" : 28 | "10-task-compile-execute-not-scope.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/11-task-compile-register-not-token.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (compile time). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | } // namespace ns 10 | 11 | // You can't force the register macro to see the namespace in front 12 | // by explicitly providing it, because the macro's first argument 13 | // is used (via ##) to build names. The "::" foils this. So, either 14 | // use the macro in the namespace (as shown in another example), or 15 | // outside the namespace and with a using (also shown elsewhere). 16 | flecsi_register_task(ns::foo, , loc, single); 17 | 18 | namespace flecsi { 19 | namespace execution { 20 | void 21 | driver(int, char **) { 22 | flecsi_execute_task(foo, ns, single); 23 | } 24 | } // namespace execution 25 | } // namespace flecsi 26 | -------------------------------------------------------------------------------- /tools/flecstan/example/11-task-compile-register-not-token.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 11-task-compile-register-not-token.cc", 26 | 27 | "file" : 28 | "11-task-compile-register-not-token.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/12-task-compile-register-ambiguous.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (compile time). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} // no args 9 | void 10 | foo(int) {} // int arg 11 | 12 | // Which "foo" we want is ambiguous here. 13 | flecsi_register_task(foo, ns, loc, single); 14 | } // namespace ns 15 | 16 | namespace flecsi { 17 | namespace execution { 18 | void 19 | driver(int, char **) { 20 | // The no-args foo() is presumably intended here, because 21 | // no variadic arguments are provided. However, the compiler 22 | // goes bonkers over the code emitted by the macro. :-( 23 | flecsi_execute_task(foo, ns, single); 24 | } 25 | } // namespace execution 26 | } // namespace flecsi 27 | -------------------------------------------------------------------------------- /tools/flecstan/example/12-task-compile-register-ambiguous.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 12-task-compile-register-ambiguous.cc", 26 | 27 | "file" : 28 | "12-task-compile-register-ambiguous.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/13-task-compile-register-duplicate.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (compile time). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | 10 | // Duplicate registration. 11 | // Produces a compile time error, because the macro uses 12 | // the task name (via ##) to build the names of a delegate 13 | // function and a bool variable (which are thus duplicated). 14 | flecsi_register_task(foo, ns, loc, single); 15 | flecsi_register_task(foo, ns, loc, single); 16 | } // namespace ns 17 | 18 | namespace flecsi { 19 | namespace execution { 20 | void 21 | driver(int, char **) { 22 | flecsi_execute_task(foo, ns, single); 23 | } 24 | } // namespace execution 25 | } // namespace flecsi 26 | -------------------------------------------------------------------------------- /tools/flecstan/example/13-task-compile-register-duplicate.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 13-task-compile-register-duplicate.cc", 26 | 27 | "file" : 28 | "13-task-compile-register-duplicate.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/14-task-run-flecsi-register-duplicate-hash.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (run time FleCSI error). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace A { 7 | void 8 | foo() {} 9 | // Registers A::foo, with hash("A::foo") 10 | flecsi_register_task(foo, A, loc, single); 11 | } // namespace A 12 | 13 | namespace B { 14 | void 15 | foo() {} 16 | // Registers B::foo...but with hash("A::foo")! 17 | // The mistake was probably copying the earlier macro 18 | // invocation, but forgetting to change A to B. 19 | // The run time error occurs here, not in the execute. 20 | flecsi_register_task(foo, A, loc, single); 21 | } // namespace B 22 | 23 | namespace flecsi { 24 | namespace execution { 25 | void 26 | driver(int, char **) { 27 | // The run time error occurred above, not here 28 | flecsi_execute_task(foo, A, single); 29 | } 30 | } // namespace execution 31 | } // namespace flecsi 32 | -------------------------------------------------------------------------------- /tools/flecstan/example/14-task-run-flecsi-register-duplicate-hash.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 14-task-run-flecsi-register-duplicate-hash.cc", 26 | 27 | "file" : 28 | "14-task-run-flecsi-register-duplicate-hash.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/15-task-run-segfault-register-forgot.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (run time segfault). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | } // namespace ns 10 | 11 | namespace flecsi { 12 | namespace execution { 13 | void 14 | driver(int, char **) { 15 | // Oops, we're trying to execute a task 16 | // that we didn't register. 17 | flecsi_execute_task(foo, ns, single); 18 | } 19 | } // namespace execution 20 | } // namespace flecsi 21 | -------------------------------------------------------------------------------- /tools/flecstan/example/15-task-run-segfault-register-forgot.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 15-task-run-segfault-register-forgot.cc", 26 | 27 | "file" : 28 | "15-task-run-segfault-register-forgot.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/16-task-run-segfault-execute-odd.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (run time segfault). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | 10 | // hash("ns::foo") 11 | flecsi_register_task(foo, ns, loc, single); // hash("ns::foo") 12 | } // namespace ns 13 | 14 | namespace flecsi { 15 | namespace execution { 16 | void 17 | driver(int, char **) { 18 | // The following is odd, but it compiles. 19 | // It's perhaps unlikely that somebody 20 | // would write this. Then again, users 21 | // are good at doing unexpected things. :-) 22 | flecsi_execute_task(ns::foo, , single); // hash("::ns::foo") 23 | } 24 | } // namespace execution 25 | } // namespace flecsi 26 | -------------------------------------------------------------------------------- /tools/flecstan/example/16-task-run-segfault-execute-odd.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 16-task-run-segfault-execute-odd.cc", 26 | 27 | "file" : 28 | "16-task-run-segfault-execute-odd.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/17-task-run-segfault-register-typo.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (run time segfault). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | 10 | // Task registration. 11 | // Oops, there's a typo in the namespace. This doesn't 12 | // cause a compile-time error here, in the register 13 | // macro, but results in an unintended hash. 14 | flecsi_register_task(foo, typo, loc, single); // hash("typo::foo") 15 | } // namespace ns 16 | 17 | namespace flecsi { 18 | namespace execution { 19 | void 20 | driver(int, char **) { 21 | // Task execution. 22 | // Note: had the typo been here, not in the register, 23 | // it would have caused a compile time error, not a run 24 | // time error! The difference stems from a difference 25 | // in how the register and execute macros are defined. 26 | flecsi_execute_task(foo, ns, single); // hash("ns::foo") 27 | } 28 | } // namespace execution 29 | } // namespace flecsi 30 | -------------------------------------------------------------------------------- /tools/flecstan/example/17-task-run-segfault-register-typo.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 17-task-run-segfault-register-typo.cc", 26 | 27 | "file" : 28 | "17-task-run-segfault-register-typo.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/18-task-run-segfault-register-odd.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (run time segfault). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace ns { 7 | void 8 | foo() {} 9 | 10 | // Task registration. 11 | // This is another example of somebody doing 12 | // something goofy (a blank namespace argument), 13 | // but it does compile. The end result (run time 14 | // segfault) is the same as what would happen 15 | // if the namespace had a typo. 16 | flecsi_register_task(foo, , loc, single); // hash("::foo") 17 | } // namespace ns 18 | 19 | namespace flecsi { 20 | namespace execution { 21 | void 22 | driver(int, char **) { 23 | // Task execution. 24 | flecsi_execute_task(foo, ns, single); // hash("ns::foo") 25 | } 26 | } // namespace execution 27 | } // namespace flecsi 28 | -------------------------------------------------------------------------------- /tools/flecstan/example/18-task-run-segfault-register-odd.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 18-task-run-segfault-register-odd.cc", 26 | 27 | "file" : 28 | "18-task-run-segfault-register-odd.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/19-task-good-task-return-value.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs. 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace A { 7 | // Let's register a task that returns a value. 8 | int 9 | foo() { 10 | return 123; 11 | } 12 | flecsi_register_task(foo, A, loc, single); 13 | } // namespace A 14 | 15 | namespace flecsi { 16 | namespace execution { 17 | void 18 | driver(int, char **) { 19 | // The task's return value is passed back. 20 | int bar = flecsi_execute_task(foo, A, single); 21 | std::cout << bar << std::endl; // prints 123 22 | } 23 | } // namespace execution 24 | } // namespace flecsi 25 | -------------------------------------------------------------------------------- /tools/flecstan/example/19-task-good-task-return-value.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 19-task-good-task-return-value.cc", 26 | 27 | "file" : 28 | "19-task-good-task-return-value.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/20-task-compile-argument-missing.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (compile time). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace A { 7 | // This task takes 1 argument... 8 | void 9 | foo(const int i) {} 10 | flecsi_register_task(foo, A, loc, single); 11 | } // namespace A 12 | 13 | namespace flecsi { 14 | namespace execution { 15 | void 16 | driver(int, char **) { 17 | // So, what if we send 0 arguments? 18 | // Clang prints this error as: 19 | // error: no viable conversion from 'tuple<(no argument)>' 20 | // to 'tuple' 21 | // That's reasonable, but perhaps our FleCSI Static Analyzer 22 | // could print something that's just a bit more clear. 23 | flecsi_execute_task(foo, A, single); 24 | } 25 | } // namespace execution 26 | } // namespace flecsi 27 | -------------------------------------------------------------------------------- /tools/flecstan/example/20-task-compile-argument-missing.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 20-task-compile-argument-missing.cc", 26 | 27 | "file" : 28 | "20-task-compile-argument-missing.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/21-task-compile-argument-too-few.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (compile time). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace A { 7 | // This task takes 2 arguments... 8 | void 9 | foo(const int i, const double d) {} 10 | flecsi_register_task(foo, A, loc, single); 11 | } // namespace A 12 | 13 | namespace flecsi { 14 | namespace execution { 15 | void 16 | driver(int, char **) { 17 | // So, what if we send 1 argument? 18 | // Clang prints this: 19 | // error: no viable conversion from 'tuple<[...], (no argument)>' 20 | // to 'tuple<[...], double>' 21 | // This is another case for which the diagnostic could be improved. 22 | flecsi_execute_task(foo, A, single, 1); 23 | } 24 | } // namespace execution 25 | } // namespace flecsi 26 | -------------------------------------------------------------------------------- /tools/flecstan/example/21-task-compile-argument-too-few.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 21-task-compile-argument-too-few.cc", 26 | 27 | "file" : 28 | "21-task-compile-argument-too-few.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/22-task-compile-argument-too-many.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (compile time). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace A { 7 | // This task takes 1 argument... 8 | void 9 | foo(const int i) {} 10 | flecsi_register_task(foo, A, loc, single); 11 | } // namespace A 12 | 13 | namespace flecsi { 14 | namespace execution { 15 | void 16 | driver(int, char **) { 17 | // So, what if we send 2 arguments? 18 | // Clang prints this: 19 | // error: no viable conversion from 'tuple<[...], 20 | // typename __decay_and_strip::__type>' 21 | // to 'tuple<[...], (no argument)>' 22 | // For the average user that's sort of goofy, and it's 23 | // worse than the error we got for too *few* arguments. 24 | // So, again, there's room for improvement. 25 | flecsi_execute_task(foo, A, single, 1, 2.34); 26 | } 27 | } // namespace execution 28 | } // namespace flecsi 29 | -------------------------------------------------------------------------------- /tools/flecstan/example/22-task-compile-argument-too-many.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 22-task-compile-argument-too-many.cc", 26 | 27 | "file" : 28 | "22-task-compile-argument-too-many.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/23-task-good-argument-int2double.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs. 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace A { 7 | // Need a double. 8 | void 9 | foo(double) {} 10 | flecsi_register_task(foo, A, loc, single); 11 | } // namespace A 12 | 13 | namespace flecsi { 14 | namespace execution { 15 | void 16 | driver(int, char **) { 17 | // Send an int. 18 | // This works fine, because tuple 19 | // converts to tuple. 20 | flecsi_execute_task(foo, A, single, 1); 21 | } 22 | } // namespace execution 23 | } // namespace flecsi 24 | -------------------------------------------------------------------------------- /tools/flecstan/example/23-task-good-argument-int2double.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 23-task-good-argument-int2double.cc", 26 | 27 | "file" : 28 | "23-task-good-argument-int2double.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/24-task-good-argument-double2int.cc: -------------------------------------------------------------------------------- 1 | 2 | // Compiles and runs. 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace A { 7 | // Need an int. 8 | void 9 | foo(int) {} 10 | flecsi_register_task(foo, A, loc, single); 11 | } // namespace A 12 | 13 | namespace flecsi { 14 | namespace execution { 15 | void 16 | driver(int, char **) { 17 | // Send a double. 18 | // Works fine; tuple converts to tuple. 19 | // I might have expected a warning about conversion. 20 | flecsi_execute_task(foo, A, single, 1.2345); 21 | } 22 | } // namespace execution 23 | } // namespace flecsi 24 | -------------------------------------------------------------------------------- /tools/flecstan/example/24-task-good-argument-double2int.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 24-task-good-argument-double2int.cc", 26 | 27 | "file" : 28 | "24-task-good-argument-double2int.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/example/25-task-compile-register-duplicate-but.cc: -------------------------------------------------------------------------------- 1 | 2 | // Error (compile time). 3 | 4 | #include "execution/execution.h" 5 | 6 | namespace A { 7 | void 8 | foo() {} 9 | } // namespace A 10 | namespace B { 11 | void 12 | foo() {} 13 | } // namespace B 14 | 15 | using A::foo; 16 | using B::foo; 17 | // Several compile-time errors occur here, all essentially 18 | // due to the ambiguity of "foo" (which the registration 19 | // macro doesn't always qualify with the given namespace. 20 | flecsi_register_task(foo, A, loc, single); 21 | flecsi_register_task(foo, B, loc, single); 22 | 23 | namespace flecsi { 24 | namespace execution { 25 | void 26 | driver(int, char **) { 27 | flecsi_execute_task(foo, A, single); 28 | flecsi_execute_task(foo, B, single); 29 | } 30 | } // namespace execution 31 | } // namespace flecsi 32 | -------------------------------------------------------------------------------- /tools/flecstan/example/25-task-compile-register-duplicate-but.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "directory" : 4 | "/home/staley/flecstan/example", 5 | 6 | "command" : 7 | "/usr/local/bin/clang++ \ 8 | -DDEBUG \ 9 | -DOMPI_SKIP_MPICXX \ 10 | -DMPICH_SKIP_MPICXX \ 11 | -I/home/staley/flecsi \ 12 | -I/home/staley/flecsi/build \ 13 | -I/home/staley/code/mpich-install/include \ 14 | -I/home/staley/flecsi/cinch/logging \ 15 | -I/home/staley/flecsi-third-party-debug/include \ 16 | -I/home/staley/flecsi/flecsi \ 17 | -I/home/staley/flecsi/build/flecsi \ 18 | -I/home/staley/flecsi/flecsi/.. \ 19 | -I/home/staley/flecsi/build/flecsi/.. \ 20 | -I/home/staley/flecsi/flecsi-tutorial/specialization \ 21 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization \ 22 | -I/home/staley/flecsi/flecsi-tutorial/specialization/.. \ 23 | -I/home/staley/flecsi/build/flecsi-tutorial/specialization/.. \ 24 | -std=c++17 \ 25 | -c 25-task-compile-register-duplicate-but.cc", 26 | 27 | "file" : 28 | "25-task-compile-register-duplicate-but.cc" 29 | } 30 | ] 31 | -------------------------------------------------------------------------------- /tools/flecstan/src/flecstan-config.h: -------------------------------------------------------------------------------- 1 | /* -*- C++ -*- */ 2 | 3 | /* ----------------------------------------------------------------------------- 4 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 5 | /@@///// /@@ @@////@@ @@////// /@@ 6 | /@@ /@@ @@@@@ @@ // /@@ /@@ 7 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 8 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 9 | /@@ /@@/@@//// //@@ @@ /@@/@@ 10 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 11 | // /// ////// ////// //////// // 12 | 13 | Copyright (c) 2019, Triad National Security, LLC 14 | All rights reserved. 15 | ----------------------------------------------------------------------------- */ 16 | 17 | #define flecstan_VERSION_MAJOR 0 18 | #define flecstan_VERSION_MINOR 0 19 | #define flecstan_VERSION_PATCH 0 20 | -------------------------------------------------------------------------------- /tools/flecstan/src/flecstan-config.h.in: -------------------------------------------------------------------------------- 1 | 2 | /* ----------------------------------------------------------------------------- 3 | @@@@@@@@ @@ @@@@@@ @@@@@@@@ @@ 4 | /@@///// /@@ @@////@@ @@////// /@@ 5 | /@@ /@@ @@@@@ @@ // /@@ /@@ 6 | /@@@@@@@ /@@ @@///@@/@@ /@@@@@@@@@/@@ 7 | /@@//// /@@/@@@@@@@/@@ ////////@@/@@ 8 | /@@ /@@/@@//// //@@ @@ /@@/@@ 9 | /@@ @@@//@@@@@@ //@@@@@@ @@@@@@@@ /@@ 10 | // /// ////// ////// //////// // 11 | 12 | Copyright (c) 2019, Triad National Security, LLC 13 | All rights reserved. 14 | ----------------------------------------------------------------------------- */ 15 | 16 | #define flecstan_VERSION_MAJOR @flecstan_VERSION_MAJOR@ 17 | #define flecstan_VERSION_MINOR @flecstan_VERSION_MINOR@ 18 | #define flecstan_VERSION_PATCH @flecstan_VERSION_PATCH@ 19 | -------------------------------------------------------------------------------- /tools/flecstan/talks/2018-aug-13.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/tools/flecstan/talks/2018-aug-13.pdf -------------------------------------------------------------------------------- /tools/flecstan/talks/2018-oct-23.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/tools/flecstan/talks/2018-oct-23.pdf -------------------------------------------------------------------------------- /tools/flecstan/talks/2019-jul-02.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/tools/flecstan/talks/2019-jul-02.pdf -------------------------------------------------------------------------------- /tools/flecstan/talks/2019-mar-12.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/tools/flecstan/talks/2019-mar-12.pdf -------------------------------------------------------------------------------- /tools/format: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | clang-format -i -style=file `find $1 -type f -name "*.h"` 4 | -------------------------------------------------------------------------------- /tools/simple-ast/2018-oct-23.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/laristra/flecsi/0c406a5d8fd06340ded778e229130e5251ca98fb/tools/simple-ast/2018-oct-23.pdf -------------------------------------------------------------------------------- /tools/simple-ast/one.hh: -------------------------------------------------------------------------------- 1 | 2 | // VisitVarDecl (4) 3 | int i = 1; 4 | int j = 2; 5 | float f = 3.4; 6 | double d = 5.6; 7 | 8 | // foo, bar 9 | #ifdef FOOBAR 10 | // VisitCXXRecordDecl 11 | struct foo 12 | { 13 | }; 14 | 15 | // VisitCXXRecordDecl 16 | class bar 17 | { 18 | }; 19 | #endif 20 | -------------------------------------------------------------------------------- /tools/simple-ast/two.cc: -------------------------------------------------------------------------------- 1 | 2 | #include "one.hh" 3 | 4 | // fun 5 | int 6 | fun() { 7 | // VisitVarDecl 8 | for(int i = 0; i < 10; ++i) { 9 | // VisitContinueStmt 10 | continue; 11 | } 12 | return 0; 13 | } 14 | 15 | // main 16 | int 17 | main() { 18 | // VisitTypeAliasDecl 19 | using Integer = int; 20 | 21 | // VisitVarDecl 22 | // VisitCallExpr 23 | int i = fun(); 24 | } 25 | -------------------------------------------------------------------------------- /tools/texit: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | 3 | for file in `ls *.tex` ; do 4 | pdflatex $file 5 | done 6 | --------------------------------------------------------------------------------