Skip to content

Latest commit

 

History

History
94 lines (76 loc) · 4.5 KB

README.md

File metadata and controls

94 lines (76 loc) · 4.5 KB

The DyND Library

TravisCI: Build Status AppVeyor: Build status

The core DyND developer team consists of Mark Wiebe and Irwin Zaid. Much of the funding that made this project possible came through Continuum Analytics and DARPA-BAA-12-38, part of XDATA.

LibDyND, a component of the Blaze project, is a C++ library for dynamic, multidimensional arrays. It is inspired by NumPy, the Python array programming library at the core of the scientific Python stack, but tries to address a number of obstacles encountered by some of its users. Examples of this are support for variable-sized string and ragged array types. The library is in a preview development state, and can be thought of as a sandbox where features are being tried and tweaked to gain experience with them.

C++ is a first-class target of the library, the intent is that all its features should be easily usable in the language. This has many benefits, such as that development within LibDyND using its own components is more natural than in a library designed primarily for embedding in another language.

This library is being actively developed together with its Python bindings, which are a good way to get a taste of the library from a high level perspective. See the Python bindings github site.

To get started as a developer of libdynd, begin by working through the LibDyND Developer Guide. To discuss the development of this library, subscribe to the LibDyND Development List.

A Brief History Of DyND

DyND was started in the autumn of 2011 by Mark Wiebe, as a private project to begin dabbling in ideas for how a dynamic multi-dimensional array library could be structured in C++. During the early formation of Continuum Analytics, DyND was open sourced and brought into the company as a part of the Blaze project.

Continuum secured funding for the Blaze project through DARPA's XDATA program, giving the project space and time to develop as it needed and providing real data sets and challenge problems to tackle and measure against.

DyND attracted its first major outside contributor, Irwin Zaid, from across the Atlantic during the cold of winter in 2014. Warmed by the heat of a GPU, Irwin began by contributing early CUDA support to the library, playing a gradually increasing role in the design and goals of the project.

DyND is still in an experimental mode, with some mature components and others severely lacking. Current focus is on the completion of the ArrFunc object to represent array functions and to flesh out a basic set of functionality modeled after NumPy. New contributors are welcome, so if you have the patience to collaborate on a maturing code base, and enjoy C++, array-oriented, and numeric programming, DyND might be the the open source project you're looking for.

Building

The build system of this library is based on CMake. See the build instructions for details about how to build the library.

DyND requires a C++11 compiler, the minimum versions supported are gcc 4.7, MSVC 2013 Update 4, and Clang 3.4. The last release to support C++98 was DyND 0.6.6. An example improvement C++11 brings is a roughly factor of two compile time improvement and increased generality by using variadic templates instead of preprocessor metaprogramming. Many excellent projects such as LLVM and libelemental have already adopted the newer standard, it makes a lot of sense for dynd to embrace it as it matures.

Documentation

Documentation Index

Running The Tests

The tests are built using Google Test. To execute the test suite, run the test_dynd program.