Giter Club home page Giter Club logo

tidas's People

Contributors

tskisner avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

tskisner

tidas's Issues

OS X MPI segfault

Under two different OS X toolchains (clang++ / mpich from conda, and gcc-mp / mpi from macports) the python MPI unit tests produce a segmentation fault.

Python unit tests should use unittest module

Currently the python unit tests are just sort of ad-hoc. The C++ unit tests use gtest, and the Python unit tests should use the built in unittest package, with a custom runner called by the tidas.test() method.

Documentation

Before release, we need:

  1. API reference generated by doxygen and sphinx.
  2. Overview / philosophy discussion, including a figure that visually shows the data layout.
  3. Section covering high-level volume operations, including creation / copying / linking / duplication.
  4. Minimal sections on groups / dictionaries / intervals / blocks, with mainly just links to API docs.
  5. Several meaningful examples.

Add Travis support

We should enable travis integration. There are relatively few dependencies, so this should be easy.

Complete the C/Python bindings

The C and Python bindings do not yet have all the functionality of the C++ interface. This should be fixed eventually.

Per-object backend options

Currently the selection of the backend format (e.g. HDF5) and all options to that backend (compression, chunksize, etc) are set at the volume level and applied to all groups within the volume. This is not ideal, since different kinds of data will require different options. Each object has all of the backend options stored in its location (backend_path object). We should devise a way to set these differently on a per-object basis. One possibility that would be easy to implement would be to use a selection string to specify which objects to set to a particular configuration.

ctypeslib.py Error when importing tidas from python2.7

Installed tidas from github with autoconf, mpi-disabled and default prefix
Running Ubuntu 16.04, python 2.7.12, numpy 1.12.0
When trying to import tidas from python2.7:

Traceback (most recent call last):
File "./demo_telescope.py", line 29, in
import tidas
File "/usr/local/lib/python2.7/dist-packages/tidas/init.py", line 17, in
from .ctidas import (
File "/usr/local/lib/python2.7/dist-packages/tidas/ctidas.py", line 153, in
npu8 = wrapped_ndptr(dtype=np.uint8, ndim=1, flags="C_CONTIGUOUS")
File "/usr/local/lib/python2.7/dist-packages/tidas/ctidas.py", line 146, in wrapped_ndptr
base = npc.ndpointer(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/numpy/ctypeslib.py", line 288, in ndpointer
num = _num_fromflags(flags)
File "/usr/local/lib/python2.7/dist-packages/numpy/ctypeslib.py", line 163, in _num_fromflags
num += flagdict[val]
KeyError: u'
'

Documentation Bugs

The docs use sphinx, and the C++ code is first passed through doxygen before importing the results using the "breathe" plugin for sphinx. For some reason, using the doxygenclass command from breathe puts both the C++ class docs AND a poorly formatted copy of the corresponding Python class. See for example the source here:

https://github.com/hpc4cmb/tidas/blob/master/docs/sphinx/group.rst

and the generated output here:

http://hpc4cmb.github.io/tidas/group.html

Looking at the html source it seems like maybe the html div ID for the constructor of the C++ class is getting mixed up with the python class. This makes things ugly and should be fixed.

MPI metadata sync not working

Although read and broadcast of metadata seems to work, the mpi gather and replay of transactions seems to have a problem.

SQLite index very slow

The SQLite index is so slow that it is a blocking factor. Looking through the code, there are several key mistakes:

  1. prepared statements are re-created every transaction, rather than creating once and binding values.
  2. When doing a single meta-data operation (adding or deleting one object), then it is fine to make that a single transaction. When replaying an long list of operations, these should be batched into a single transaction.

Slow metadata index operations when creating many objects

The serial volume class uses an SQLite DB as its metadata store. When adding new objects to the volume, this DB is updated. Since we can't predict what the user is doing, each object insertion is a discrete SQL transaction. This takes a fraction of a second, but when first creating a volume and adding thousands of objects, this can be slow.

Note that this does not impact the MPI volume, since in that case metadata operations are stored locally in memory (very fast) and replayed to the main SQLite DB during a metadata sync using a single transaction (also very fast).

One solution is to also use an in-memory metadata store even in the serial case with explicit sync to disk.

C bindings

Create C bindings, needed for python and Fortran bindings.

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.