Skip to content

Dev planning #22

@henryiii

Description

@henryiii

These are my planned cleanups, in three steps:

  1. Cleanup make system (dev branch)
  • Remove globbing and the non-deterministic build failures caused by this
  • Remove fake nvcc and similar kludges
  • Use a central Makefile for examples
  • Simplify switch to OMP to only adding OMP_TARGET=1
  • Automate running (and timing) of all examples as a test system
  • Add separate run lines for each test in int_testing.py
  • Fix 4 remaining examples that currently (also in master?) fail
    • dalitz: std::logic_error, basic_string::_S_construct null not valid: Missing parameter (now has a default)
    • zachFit: Was missing a file (nice error message now)
    • pipipi0DPFit: Missing parameter (now gives nice error message)
    • chisquare: Missing parameter (now has a default)
  • let_testing.py skips tests that are missing files

Done! See PR #23 .

  1. Move files to more traditional structure (new folders branch)
  • New structure, including:
include/goofit
include/goofit/PDFs
include/goofit/rootstuff
src/goofit
src/PDFs
src/rootstuff
  • Including goofit files (in goofit and examples) would be:
#include "goofit/MyGoofitHeader.h"
  • File extension normalized (one ext for cpp, one for cuda, and one for headers)
  • Added script to automate this for easy transitions
  • Clean up formatting with astyle, include style file .astylerc

Done! Now in the dev branch.

  1. Move to CMake build system (better builds, make it easier to integrate Hydra ?
  • More compute capability choices, auto enables 3.5 extra features if possible, Auto option for GPU detection. Uses latest version of FindCUDA, supplied for CMake < 3.7
  • Optional separable compilation: cleaned up PDFs, added as option (on one system, multithreaded builds went from ~5 minutes to under 2 minutes)
  • Add auto Cuda/OMP option
  • Add Intel build
  • Add support for GooFit Packages
  • Allow packages/examples to add PDFs

Done! Now in the dev branch.

  1. Further questions:
  • Add documentation about building to readme
  • Remove unneeded warnings

Future work

  • Look at including Hydra
  • Look at setting up Travis CI (with low compute power tests!)
  • Add TBB - too hard for now, due to use of THREADIDX, BLOCKIDX
  • Improve separation of headers and source in PDFs
  • Look at removing the separate docs branch, and use docs in master (now supported in GitHub)
  • Make datafiles more readily available
  • Use some sort of parser in the examples to improve option descriptions

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions