Skip to content

Commit

Permalink
Merge pull request #114 in CON/conduit from feature/2016_04_relay_ref…
Browse files Browse the repository at this point in the history
…actor to master

* commit 'bc46d3d9219c7e58add33a0b7377a8a3d3d2a282':
  docs: small updates
  docs: update docs after relay reorg
  bugfix: case issue in header include
  bugfix: case issues with includes in headers
  bugfix: case problem in CMakeLists.txt file
  reorg: move blueprint into conduit namespace
  reog: filename changes for relay
  reorg: move conduit_io and conduit_mpi into relay
  • Loading branch information
Cyrus D. Harrison committed Apr 2, 2016
2 parents 1c50b6a + bc46d3d commit a1f4d01
Show file tree
Hide file tree
Showing 88 changed files with 1,384 additions and 1,002 deletions.
9 changes: 2 additions & 7 deletions src/CMake/SetupIncludes.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,8 @@
include_directories(${PROJECT_SOURCE_DIR}/libs/conduit
${PROJECT_BINARY_DIR}/libs/conduit)

include_directories(${PROJECT_SOURCE_DIR}/libs/conduit_io
${PROJECT_BINARY_DIR}/libs/conduit_io)

if(MPI_FOUND)
include_directories(${PROJECT_SOURCE_DIR}/libs/conduit_mpi
${PROJECT_BINARY_DIR}/libs/conduit_mpi)
endif()
include_directories(${PROJECT_SOURCE_DIR}/libs/relay
${PROJECT_BINARY_DIR}/libs/relay)

include_directories(${PROJECT_SOURCE_DIR}/libs/blueprint
${PROJECT_BINARY_DIR}/libs/blueprint)
Expand Down
4 changes: 4 additions & 0 deletions src/docs/sphinx/blueprint.rst
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@
Blueprint
===================

.. note::
The **blueprint** API and docs are work in progress.


The flexibly of the Conduit Node allows it to be used to represent a wide range of scientific data. Unconstrained, this flexibly can lead to many application specific choices for common types of data that could potentially be shared between applications.

The goal of Blueprint is to help facilite a set of shared higher-level conventions for using Conduit Nodes to hold common simulation data structures. The Blueprint library in Conduit provides methods to verify if a Conduit Node instance conforms to a known convention and methods that provide common transforms that can be used with these conventions.
Expand Down
12 changes: 6 additions & 6 deletions src/docs/sphinx/building.rst
Original file line number Diff line number Diff line change
Expand Up @@ -104,16 +104,16 @@ Conduit's build system supports the following CMake options:

The Conduit Python module will build for both Python2 and Python3. To select a specific Python, set the CMake variable **PYTHON_EXECUTABLE** to path of the desired python binary. The Conduit Python module requires Numpy. The selected Python instance must provide Numpy, or PYTHONPATH must be set to include a Numpy install compatible with the selected Python install.

* **ENABLE_MPI** - Controls if the conduit_mpi library is built. *(default = OFF)*
* **ENABLE_MPI** - Controls if the conduit_relay_mpi library is built. *(default = OFF)*
We are using CMake's standard FindMPI logic. To select a specific MPI set the CMake variables **MPI_C_COMPILER** and **MPI_CXX_COMPILER**, or the other FindMPI options for MPI include paths and MPI libraries.

To run the mpi unit tests on LLNL's LC platforms, you may also need change the CMake variables **MPIEXEC** and **MPIEXEC_NUMPROC_FLAG**, so you can use srun and select a partition. (see: src/host-configs/chaos_5_x86_64.cmake)
To run the mpi unit tests on LLNL's LC platforms, you may also need change the CMake variables **MPIEXEC** and **MPIEXEC_NUMPROC_FLAG**, so you can use srun and select a partition. (for an example see: src/host-configs/chaos_5_x86_64.cmake)

* **HDF5_DIR** - Path to a HDF5 install *(optional)*.
Controls if conduit_io HDF5 I/O support is built.
Controls if HDF5 I/O support is built into *conduit_relay*.

* **SILO_DIR** - Path to a Silo install *(optional)*.
Controls if conduit_io Silo I/O support is built. When used, the following CMake variables must also be set:
Controls if Silo I/O support is built into *conduit_relay*. When used, the following CMake variables must also be set:

* **HDF5_DIR** - Path to a HDF5 install. (Silo support also depends on HDF5)

Expand All @@ -130,7 +130,7 @@ To handle build options, thirdparty library paths, etc we rely on CMake's initia
We call these initial-cache files *host-config* files, since we typically create a file for each platform or specific hosts if necessary.

The *config-build.sh* script will use your machine's hostname, the SYS_TYPE environment variable, and your platform name (via *uname*) to look for an existing host config file in the *host-configs* directory at the root of the conduit repo. If found, it will pass the host config file to cmake via the *-C* command line option.
The *config-build.sh* script will use your machine's hostname, the SYS_TYPE environment variable, and your platform name (via *uname*) to look for an existing host config file in the *host-configs* directory at the root of the conduit repo. If found, it will pass the host config file to CMake via the *-C* command line option.

.. code:: bash
Expand All @@ -150,7 +150,7 @@ Bootstrapping Thirdparty Dependencies
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can use *bootstrap-env.sh* (located at the root of the conduit repo) to help setup your development environment on OSX and Linux. This script uses *scripts/uberenv*, which leverages **Spack** (https://llnl.github.io/spack) to build external thirdparty libraries and tools used by Conduit.
It also writes a initial host-config file for you and adds the spack built CMake binary to your PATH, so can directly call the *config-build.sh* helper script to configure a conduit build.
It also writes a initial host-config file for you and adds the Spack built CMake binary to your PATH, so can directly call the *config-build.sh* helper script to configure a conduit build.

.. code:: bash
Expand Down
2 changes: 2 additions & 0 deletions src/docs/sphinx/conduit.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,5 @@ of examples for Conduit's Core API and additional libraries.
tutorial_json
tutorial_ownership
tutorial_update

.. conduit_api
File renamed without changes.
6 changes: 3 additions & 3 deletions src/docs/sphinx/conf.py.in
Original file line number Diff line number Diff line change
Expand Up @@ -95,16 +95,16 @@ master_doc = 'index'

# General information about the project.
project = u'Conduit'
copyright = u'2014-2015, LLNS'
copyright = u'2014-2016, LLNS'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '0.1'
version = '0.2.0.pre'
# The full version, including alpha/beta/rc tags.
release = '0.1'
release = '0.2.0.pre'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
6 changes: 2 additions & 4 deletions src/docs/sphinx/developer.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,13 @@ Source Code Repo Layout
* **src/libs/**

* **conduit/** - Main Conduit library source
* **conduit_io/** - Conduit I/O library source
* **conduit_mpi/** - Conduit MPI library source
* **relay/** - Relay libraries source
* **blueprint/** - Blueprint library source

* **src/tests/**

* **conduit/** - Unit tests for the main Conduit library
* **conduit_io/** - Unit tests for Conduit I/O library
* **conduit_mpi/** - Unit tests for Conduit MPI library
* **relay/** - Unit tests for Conduit Relay libraries
* **blueprint/** - Unit tests for Blueprint library
* **thirdparty/** - Unit tests for thirdparty libraries

Expand Down
53 changes: 28 additions & 25 deletions src/docs/sphinx/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,13 @@
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
**Conduit: A Scientific Data Exchange Library for HPC Simulations**


Introduction
Conduit
============

What is Conduit?
----------------
**Conduit: A Scientific Data Exchange Library for HPC Simulations**

Introduction
------------

Conduit is an open source project from Lawrence Livermore National Laboratory. It provides an intuitive model for describing hierarchical scientific data in C++, C, Fortran, and Python and is used for data coupling between packages in-core, serialization, and I/O tasks.

Expand Down Expand Up @@ -103,31 +101,32 @@ https://lc.llnl.gov/stash/projects/CON/repos/conduit/browse
Conduit Libraries
------------------

Core API
~~~~~~~~~~
The *conduit* library provides Conduit's core data API. The *relay* and *blueprint* libraries provide higher-level services built on top of the core API.

**conduit**
- Provides Conduit's Core API in C++ and subsets of Core API in Python, C, and Fortran.
- *Optionally depends on Python, NumPy, and Fortran*

Additional Libraries
~~~~~~~~~~~~~~~~~~~~~
These libraries provide higher-level services built on top of Conduit's Core API.
.. note::
**Caveat Emptor**: The APIs for *relay* and *blueprint* are still in flux.

*Caveat Emptor*: These libraries are young and their APIs are in flux.

**conduit_io**
- Provides I/O functionally beyond binary file and memory mapped I/O and json-based text I/O.
- Includes a light-weight web server for REST and WebSocket clients.
- *Optionally depends on silo, hdf5, szip*
conduit
~~~~~~~~
- Provides Conduit's Core API in C++ and subsets of Core API in Python, C, and Fortran.
- *Optionally depends on Python with NumPy and Fortran*

**conduit_mpi**
- Provides interfaces for MPI communication using conduit::Node instances as payloads.
- *Depends on mpi*
relay
~~~~~~
- Provides:


- I/O functionally beyond simple binary, memory mapped, and json-based text file I/O.
- A light-weight web server for REST and WebSocket clients.
- Interfaces for MPI communication using conduit::Node instances as payloads.
- *Optionally depends on silo, hdf5, szip and mpi*

**blueprint**
blueprint
~~~~~~~~~~
- Provides interfaces for common higher-level conventions and data protocols (eg. describing a “mesh”) using Conduit.
- *No optional dependancies*

See the :doc:`user` for more details on these libraries.

Contributors
----------------
Expand All @@ -136,6 +135,10 @@ Contributors
- Adam Kunen (LLNL)
- Kathleen Biagas (LLNL)
- Eric Brugger (LLNL)
- Aaron Black (LLNL)
- George Zagaris (LLNL)
- Kenny Weiss (LLNL)
- Matt Larsen (LLNL)
- George Aspesi (Harvey Mudd)
- Justin Bai (Harvey Mudd)
- Rupert Deese (Harvey Mudd)
Expand Down
2 changes: 1 addition & 1 deletion src/docs/sphinx/licenses.rst
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Conduit License
Third Party Builtin Libraries
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Here is a list of the software components used by conduit in source from and the location of their respective license files in our source repo.
Here is a list of the software components used by conduit in source form and the location of their respective license files in our source repo.

C and C++ Libraries
=====================
Expand Down
67 changes: 67 additions & 0 deletions src/docs/sphinx/relay.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
.. ############################################################################
.. # Copyright (c) 2014-2015, Lawrence Livermore National Security, LLC.
.. #
.. # Produced at the Lawrence Livermore National Laboratory
.. #
.. # LLNL-CODE-666778
.. #
.. # All rights reserved.
.. #
.. # This file is part of Conduit.
.. #
.. # For details, see: http://llnl.github.io/conduit/.
.. #
.. # Please also read conduit/LICENSE
.. #
.. # Redistribution and use in source and binary forms, with or without
.. # modification, are permitted provided that the following conditions are met:
.. #
.. # * Redistributions of source code must retain the above copyright notice,
.. # this list of conditions and the disclaimer below.
.. #
.. # * Redistributions in binary form must reproduce the above copyright notice,
.. # this list of conditions and the disclaimer (as noted below) in the
.. # documentation and/or other materials provided with the distribution.
.. #
.. # * Neither the name of the LLNS/LLNL nor the names of its contributors may
.. # be used to endorse or promote products derived from this software without
.. # specific prior written permission.
.. #
.. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
.. # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.. # ARE DISCLAIMED. IN NO EVENT SHALL LAWRENCE LIVERMORE NATIONAL SECURITY,
.. # LLC, THE U.S. DEPARTMENT OF ENERGY OR CONTRIBUTORS BE LIABLE FOR ANY
.. # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
.. # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
.. # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.. # POSSIBILITY OF SUCH DAMAGE.
.. #
.. ############################################################################
===================
Relay
===================

.. note::
The **relay** APIs and docs are work in progress.


Conduit Relay is an umbrella project for I/O and communication functionality built on top of Conduit's Core API. It includes three components:

* **io** - I/O functionally beyond binary, memory mapped, and json-based text file I/O. Includes optional Silo and HDF5 I/O support.
* **web** - An embedded web server (built using `CivetWeb <https://github.com/civetweb/civetweb>`_) that can host files and supports developing custom REST and WebSocket backends that use conduit::Node instances as payloads.
* **mpi** - Interfaces for MPI communication using conduit::Node instances as payloads.

The **io** and **web** features are built into the *conduit_relay* library. To avoid include and linking issues for serial codes that want to use relay, the MPI functionality exists in a separate library *conduit_relay_mpi*.


.. .. toctree::
.. relay_io
.. relay_web
.. relay_mpi
5 changes: 1 addition & 4 deletions src/docs/sphinx/user.rst
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,6 @@
.. #
.. ############################################################################
.. Conduit documentation master file, created by
sphinx-quickstart on Thu Oct 16 11:23:46 2014.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
================================
User Documentation
Expand All @@ -54,6 +50,7 @@ User Documentation
.. toctree::

conduit
relay
blueprint
building
glossary
Expand Down
11 changes: 2 additions & 9 deletions src/libs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,19 +48,12 @@
add_subdirectory(conduit)

################################
# Add the conduit-io lib
# Add the conduit relay libs
################################
add_subdirectory(conduit_io)
add_subdirectory(relay)

################################
# Add the blueprint lib
################################
add_subdirectory(blueprint)

################################
# Add the conduit-mpi lib
################################
if(MPI_FOUND)
add_subdirectory(conduit_mpi)
endif()

18 changes: 9 additions & 9 deletions src/libs/blueprint/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ set(blueprint_headers
blueprint.hpp
blueprint_mesh.hpp
blueprint_mesh_examples.hpp
blueprint_mca.hpp
blueprint_mca_examples.hpp
Blueprint_Exports.hpp)
blueprint_mcarray.hpp
blueprint_mcarray_examples.hpp
blueprint_exports.hpp)

#
# Specify all sources
Expand All @@ -67,30 +67,30 @@ set(blueprint_sources
blueprint.cpp
blueprint_mesh.cpp
blueprint_mesh_examples.cpp
blueprint_mca.cpp
blueprint_mca_examples.cpp)
blueprint_mcarray.cpp
blueprint_mcarray_examples.cpp)

#
# Note: headers are added here so they show up in project file generators
# (such as xcode, eclipse, etc)
#
if(BUILD_SHARED_LIBS)
add_library(blueprint SHARED ${blueprint_sources} ${blueprint_headers})
add_library(conduit_blueprint SHARED ${blueprint_sources} ${blueprint_headers})
else()
add_library(blueprint STATIC ${blueprint_sources} ${blueprint_headers})
add_library(conduit_blueprint STATIC ${blueprint_sources} ${blueprint_headers})
endif()

#
# Link with conduit
#
target_link_libraries(blueprint conduit)
target_link_libraries(conduit_blueprint conduit)

##################################
# Install Targets for conduit
##################################

install(FILES ${blueprint_headers} DESTINATION include)
install(TARGETS blueprint
install(TARGETS conduit_blueprint
EXPORT conduit
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
Expand Down

0 comments on commit a1f4d01

Please sign in to comment.