1. 01 Nov, 2017 1 commit
    • Christopher Subich's avatar
      Make timing code compile-time optional (TIMINGS=true) · d68f6d2b
      Christopher Subich authored
      This changeset adds a compile-time option on whether to include the
      timing code.  If SPINS is compiled without TIMINGS=true, the timing code
      is #defined to a no-op and should not otherwise affect the performance
      of the software; timing_stack_report will instead print a short error
      message.
      
      Because this affects #defines in header files, changing from
      TIMINGS=true to false (or vice versa) should only be done with a 'make
      clean'.  Not doing so could leave the timing code in an inconsistent
      state and result in either link-time errors (if older code calls timing
      code that is #defined away) or a corrupted/growing timing stack (if for
      example a timing_push() is compiled in but the corresponding
      timing_pop() is removed.)
      d68f6d2b
  2. 26 Jun, 2017 1 commit
    • Christopher Subich's avatar
      Stack-structured timing code · 0a4781c9
      Christopher Subich authored
      This commit adds stack-structured timing code, such that bits of SPINS
      can be instrumented with
      
      >  timing_push("short name")
      >  [... work goes here]
      >  timing_pop()
      
      This is recursive, such that already-timed portions of the code can call
      the timing code to further instrument subroutines or discrete code
      segments, and the resulting structure follows the -dynamic- call stack.
      This does have the odd result that portions of the code that are re-used
      (namely spectral derivatives) can show up as several 'leaf' nodes in the
      graph.
      
      To print out the report to standard error, call
      
      >  timing_stack_report()
      
      The exact format of the report should be considered tentative.
      0a4781c9
  3. 10 Jun, 2015 1 commit
  4. 29 Sep, 2014 1 commit
    • Christopher Subich's avatar
      Removed old "Transformer" code · 1a1c8814
      Christopher Subich authored
      The pair of Transformer.[ch]pp files contained old code built for SPINS
      before parallel transformation (over MPI) was fully implemented.  These
      classes were replaced wholesale with Parformer.[ch]pp (Parallel
      Transformer), but the older code remained in the repository.
      
      Removing these files should not affect any active code.  It will affect
      certain disued test cases (subject to changing #includes), but these
      cases themselves need more serious maintenance to update for the
      "gradient object" interface.
      1a1c8814
  5. 10 Sep, 2014 1 commit
    • Michael Dunphy's avatar
      Embed the case file source in the SPINS binary. · 1d616e81
      Michael Dunphy authored
      The case file source code is embedded into the binary at compile time.
      At runtime, the source code is printed to spinscase.cpp. This eliminates
      the need to maintain a copy of the case file alongside the binary.
      1d616e81
  6. 02 Oct, 2013 1 commit
  7. 28 Dec, 2012 1 commit
    • Christopher Subich's avatar
      Update of belize build · 424c991f
      Christopher Subich authored
      This adds -lblas to the lapack library flag, because with the last
      update the toolchain on Belize is more strict about implicit library
      inclusions.
      
      Also, the library flags have been re-ordered in the general makefile,
      going (roughly) from most specific to least.
      424c991f
  8. 20 Aug, 2012 1 commit
    • Christopher Subich's avatar
      Included Options/-lboost_program_options at build · 0691d1f9
      Christopher Subich authored
      Also included an add_option speicalization for the string parameter
      type.  It's convenient to allow for const char * as a default value for
      these parameters, but that poses a problem for the templated add_option
      function because of the lack of automatic conversion to const string.
      By including a specialized overload of the template (with
      implementation in Options.cpp), this problem is fixed.
      0691d1f9
  9. 16 Aug, 2012 1 commit
    • Christopher Subich's avatar
      Initial commit of command-line/config-file parser · 99679ff2
      Christopher Subich authored
      This library uses boost::program_options, which provides a command-line
      parser that also reads key=value - style configuration files.
      Options.c/hpp provides a simplified interface for cases-code, which
      should make option-definition more natural.
      99679ff2
  10. 14 Aug, 2012 1 commit
    • Christopher Subich's avatar
      Re-ordered makefile libraries, putting fftw first · 6b87e692
      Christopher Subich authored
      On systems using the MKL library, including the MKL (via $(LAPACK_LIB))
      brings in the MKL fftw-wrapper bindings, rather than fftw itself.  This
      is problematic on account of the fact that the MKL fftw wrapper doesn't
      implement the parts of the library that SPINS actually uses; this leads
      to an assertion failure on startup.
      6b87e692
  11. 09 Aug, 2012 1 commit
    • Christopher Subich's avatar
      Plata system configuration file · 55c4abf3
      Christopher Subich authored
      Also tweaked make_deps to properly install AMD and to
      pick up on SYSTEM_CFLAGS (necessary for 32/64-bit
      switch on plata).  Consequently, added SYSTEM_CXXFLAGS
      since -Wno-deprecated is inappropriate for pure-C
      55c4abf3
  12. 08 Aug, 2012 3 commits
  13. 30 Jul, 2012 1 commit
    • Christopher Subich's avatar
      Initial commit · 58fbdb5d
      Christopher Subich authored
      This is the initial commit of SPINS to a git repository, coming from
      an essentially unmanaged environment.  While this is a *complete*
      archive, this is probably not the most useful form for development
      going forward.  Notably, the future management should be:
      
      1) Pare down the case files
      
      2) Establish branches for individual users.  Not as a long-term goal,
         but instead to keep user-specific case files from lingering in
         the main repository long after their use is obsolete.
      
      2b) Establish semipermanent branches for typical users.  A release
         branch should include the basic documentation cases, a benchmark
         case should include benchmarking cases, and there are probably
         others that aren't coming to mind now.
      
      3) Add helpful MATLAB processing scripts to the repository.  Too
         much of that is ad-hoc now, completely unmanaged.
      
      4) For papers/etc, establish tagged versions.
      58fbdb5d