diff --git a/CHANGES.md b/CHANGELOG.md similarity index 50% rename from CHANGES.md rename to CHANGELOG.md index a2749dce4..817562b92 100644 --- a/CHANGES.md +++ b/CHANGELOG.md @@ -1,52 +1,104 @@ -timemory -======== - -Release: timemory 3.0.0 ------------------------ - -Author: Jonathan R. Madsen -Date: Wed, 30 Oct 2019 01:23:50 -0700 +# timemory + +## Version 3.2.0 + +> Date: Sun Jun 27 21:10:57 2021 -0500 + +- Numerous stability fixes +- Fortran module +- Compiler instrumentation +- NCCL support +- timemory-mallocp +- timemory-ncclp +- timemory-nvml +- Python line-by-line tracing +- I/O {read,write}_{char,bytes} +- Network stats components +- libunwind support +- CMake minimum upgraded to 3.15 +- Type-traits for tree/flat/timeline +- Hierarchical serialization ([hatchet](https://github.com/hatchet/hatchet) support) +- Concepts +- Improved settings +- Python tracer (line-by-line) +- CTestNotes support +- Command-line options for settings +- Migrated cereal to internal (i.e. `cereal::` -> `tim::cereal::`) +- Dramatically improved Windows support +- Improved kokkos support + - Command-line options + - Print help +- XML serialization support +- Shared caches for components +- Support for C++17 `string_view` +- Python bindings to storage classes +- Windows support for different CPU timers +- CUDA Cupti PCSampling support (CUDA v11+) +- User metadata +- Sampling support in opaque (i.e. within user-bundles) +- Static polymorphic base for bundlers +- Namespace re-organization +- CUDA compilation with Clang compiler +- Piecewise installation +- timem support md5sum hashing of command-line +- `papi_threading` setting +- `is_invalid` in base_state +- New operations + - `stack_push` + - `stack_pop` + - `insert` + - `set_depth_change` + - `set_is_flat` + - `set_is_on_stack` + - `set_is_invalid` + - `set_iterator` + - `get_is_flat` + - `get_is_invalid` + - `get_is_on_stack` + - `get_depth` + - `get_storage` + - `get_iterator` + + +## Version 3.0.0 + +> Date: Wed, 30 Oct 2019 01:23:50 -0700 - Introducing the variadic interface - Refer to new documentation at https://timemory.readthedocs.io -Release: TiMemory 2.3.0 ------------------------ +## Version 2.3.0 -Author: Jonathan R. Madsen Date: Wed Oct 10 03:11:33 2018 -0700 +> Date: Wed Oct 10 03:11:33 2018 -0700 - Fixed issue with cxx11_abi between compilers - TIMEMORY_USE_MPI=OFF by default - timem updates -Release: TiMemory 2.2.2 ------------------------ +## Version 2.2.2 -Author: Jonathan R. Madsen Date: Wed Jun 6 03:19:39 2018 -0700 +> Date: Wed Jun 6 03:19:39 2018 -0700 - Minor fix to avoid very rare FPE when serializing -Release: TiMemory 2.2.1 ------------------------ +## Version 2.2.1 -Author: Jonathan R. Madsen Date: Tue Jun 6 01:32:45 2018 -0700 +> Date: Tue Jun 6 01:32:45 2018 -0700 - fix to TiMemoryConfig.cmake when installed via sudo -Release: TiMemory 2.2.0 ------------------------ +## Version 2.2.0 -Author: Jonathan R. Madsen Date: Tue Jun 5 00:28:10 2018 -0700 +> Date: Tue Jun 5 00:28:10 2018 -0700 - self-cost available in manager + plotting safeguards - Improved singleton deletion - alternative colors for when len(_types) == 1 in plotting - plotting label fix -Release: TiMemory 2.1.0 ------------------------ +## Version 2.1.0 -Author: Jonathan R. Madsen Date: Wed May 16 11:38:28 2018 -0700 +> Date: Wed May 16 11:38:28 2018 -0700 - Significant performance improvement (~2x) - new C interface for TiMemory @@ -81,10 +133,9 @@ Author: Jonathan R. Madsen Date: Wed May 16 11:38:28 2018 -0700 - Hard-code python exe into timemory python scripts - Various fixes (plotting, argparse, etc.) -Release: TiMemory 2.0.0 ------------------------ +## Version 2.0.0 -Author: Jonathan R. Madsen Date: Wed Apr 25 12:59:06 2018 -0700 +> Date: Wed Apr 25 12:59:06 2018 -0700 - Large re-write of formatting - Python format module with classes timemory.format.rss and @@ -97,17 +148,15 @@ Author: Jonathan R. Madsen Date: Wed Apr 25 12:59:06 2018 -0700 - Added formatters.{hpp,cpp} - Some minor serialization updates -Release: TiMemory 1.3.1 ------------------------ +## Version 1.3.1 -Author: Jonathan R. Madsen Date: Thu Apr 12 02:02:20 2018 -0700 +> Date: Thu Apr 12 02:02:20 2018 -0700 - Fixes to Windows -Release: TiMemory 1.3.0 ------------------------ +## Version 1.3.0 -Author: Jonathan R. Madsen Date: Tue Apr 10 07:40:01 2018 -0700 +> Date: Tue Apr 10 07:40:01 2018 -0700 - Custom TiMemory namespace was removed, now just tim - Large rewrite of plotting utilities resulting in a significant @@ -126,45 +175,37 @@ Author: Jonathan R. Madsen Date: Tue Apr 10 07:40:01 2018 -0700 - platform-default settings on whether to use dynamic linking (Windows=OFF, else=ON) -Release: TiMemory 1.2.2 ------------------------ +## Version 1.2.2 -Author: Jonathan R. Madsen Date: Wed Feb 28 15:31:53 2018 -0800 +> Date: Wed Feb 28 15:31:53 2018 -0800 - Improved testing + memory unit improvements - Memory units are now always in multiples of 1024 - Added some thread-safety - Updated README to deprecate is\_class in decorator -Release: TiMemory 1.2.1 ------------------------ +## Version 1.2.1 -Author: Jonathan R. Madsen Date: Wed Feb 28 02:49:51 2018 -0800 +> Date: Wed Feb 28 02:49:51 2018 -0800 - added auto-detection of is\_class in decorators - Fixed build flags -> - Removed -march=native (GNU) and -xHOST (Intel) from non-debug builds as these flags create illegal instructions in Docker -- specifically NERSC's Edison -> -Release: TiMemory 1.2.0 ------------------------ -Author: Jonathan R. Madsen Date: Tue Feb 6 05:12:56 2018 -0800 +## Version 1.2.0 + +> Date: Tue Feb 6 05:12:56 2018 -0800 - Large restructuring to fix submodule nesting issue -> - Python \3.1 now allows: "from timemory.util import rss\_usage" - requires importlib.util - not available in older versions -> - Better C++ auto\_timer tagging and second option -> - TIMEMORY\_AUTO\_TIMER (:line) - TIMEMORY\_AUTO\_TIMER\_SIMPLE (func) - TIMEMORY\_AUTO\_TIMER\_SIMPLE was the old TIMEMORY\_AUTO\_TIMER -> - Squashed bugs + I/O and test improvements - Excluded non-displayed timers (i.e. falling below minimum) from setting the output width @@ -176,77 +217,63 @@ Author: Jonathan R. Madsen Date: Tue Feb 6 05:12:56 2018 -0800 - moved report\_fname field in options to report\_filename - moved serial\_fname field in options to serial\_filename -Release: TiMemory 1.1.7 ------------------------ - -- Author: Jonathan R. Madsen -- Date: Wed Jan 31 14:28:19 2018 -0800 - - - I/O fix for RSS to report negative values (i.e. deallocation) +## Version 1.1.7 -Release: TiMemory 1.1.5 ------------------------ +> Date: Wed Jan 31 14:28:19 2018 -0800 -- Author: Jonathan R. Madsen -- Date: Mon Jan 29 18:46:09 2018 -0800 +- I/O fix for RSS to report negative values (i.e. deallocation) - - Backported CMake to support older version of CMake (previous min: - 3.1.3, new min: 2.8.12) +## Version 1.1.5 -Release: TiMemory 1.1.3 ------------------------ +> Date: Mon Jan 29 18:46:09 2018 -0800 -- Author: Jonathan R. Madsen -- Date: Mon Jan 29 18:46:09 2018 -0800 +- Backported CMake to support older version of CMake (previous min: +3.1.3, new min: 2.8.12) - - added timemory.set\_exit\_action(...) capability for defining a - function to handle the exit of the application due to a signal - being raised (e.g. SIGHUP, SIGINT, SIGABRT) +## Version 1.1.3 -Release: TiMemory 1.1.2 ------------------------ +> Date: Mon Jan 29 18:46:09 2018 -0800 -- Author: Jonathan R. Madsen -- Date: Mon Jan 29 16:20:06 2018 -0800 +- added timemory.set\_exit\_action(...) capability for defining a +function to handle the exit of the application due to a signal +being raised (e.g. SIGHUP, SIGINT, SIGABRT) - - removed Python 'cmake' requirement in 'setup.py +## Version 1.1.2 -Release: TiMemory 1.1.1 ------------------------ +> Date: Mon Jan 29 16:20:06 2018 -0800 -- Author: Jonathan R. Madsen -- Date: Mon Jan 29 15:00:12 2018 -0800 +- removed Python 'cmake' requirement in 'setup.py - - Added 'report\_at\_exit' parameter to auto\_timer decorator - - Added added\_args flag for auto\_timer decorator - - Fixed I/O output bug - - Added setup.cfg - - Fixed auto\_timer decorator issue with self.key, self.is\_class, - and self.add\_args +## Version 1.1.1 -Release: TiMemory 1.1b0 ------------------------ +> Date: Mon Jan 29 15:00:12 2018 -0800 -- Author: Jonathan R. Madsen -- Date: Fri Jan 26 17:24:42 2018 -0800 +- Added 'report\_at\_exit' parameter to auto\_timer decorator +- Added added\_args flag for auto\_timer decorator +- Fixed I/O output bug +- Added setup.cfg +- Fixed auto\_timer decorator issue with self.key, self.is\_class, +and self.add\_args - - Updated documentation for TiMemory 1.1b0 - - added rss\_usage decorator - - made a base class for the decorators - - update the setup.py to 1.1b0 - - +=, -=, +, -, current, and peak methods to RSS in Python - - updated timemory\_test.py - - restructured submodules: originally all submodules were under - util, now only the decorators live there - - new submodules are: options, mpi\_support, plotting, util, and - signals - - timemory.options: I/O options, formerly timemory.util.options - - timemory.plotting: plotting utilities, formerly timemory.util.plot - - timemory.util: decorators, formerly all-encompassing submodule - - timemory.signals: signal enumeration, new submodule - - timemory.mpi\_support: report MPI information, new submodule - - added new RSS capability (+=, -= usage) - - added Python RSS interface - - added signals interface +## Version 1.1b0 +> Date: Fri Jan 26 17:24:42 2018 -0800 +- Updated documentation for TiMemory 1.1b0 +- added rss\_usage decorator +- made a base class for the decorators +- update the setup.py to 1.1b0 +- +=, -=, +, -, current, and peak methods to RSS in Python +- updated timemory\_test.py +- restructured submodules: originally all submodules were under +util, now only the decorators live there +- new submodules are: options, mpi\_support, plotting, util, and +signals +- timemory.options: I/O options, formerly timemory.util.options +- timemory.plotting: plotting utilities, formerly timemory.util.plot +- timemory.util: decorators, formerly all-encompassing submodule +- timemory.signals: signal enumeration, new submodule +- timemory.mpi\_support: report MPI information, new submodule +- added new RSS capability (+=, -= usage) +- added Python RSS interface +- added signals interface diff --git a/MANIFEST.in b/MANIFEST.in index cca66df49..e56c08669 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -5,7 +5,7 @@ include .clang-format include .clang-tidy include .gitignore include .readthedocs.yml -include CHANGES.md +include CHANGELOG.md include CMakeLists.txt include CODE_OF_CONDUCT.md include CONTRIBUTING.md @@ -37,6 +37,7 @@ recursive-include .requirements * global-exclude *.pyc global-exclude *.git* global-exclude *__pycache__* +global-exclude *.so # recursive excludes @@ -44,3 +45,4 @@ recursive-exclude timemory.egg-info * recursive-exclude _skbuild * recursive-exclude build * recursive-exclude dist * +recursive-exclude external/hatchet/build * diff --git a/VERSION b/VERSION index 3760a13d2..944880fa1 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.2.0.rc3 +3.2.0 diff --git a/docs/installation.md.in b/docs/installation.md.in index b51631c68..6c421a700 100644 --- a/docs/installation.md.in +++ b/docs/installation.md.in @@ -2,7 +2,7 @@ - Required - C++14 compiler (GNU, MSVC, Clang, Intel, PGI) - - CMake >= 3.11 + - CMake >= 3.15 - Optional - C compiler (GNU, MSVC, Clang, Intel, PGI) - Python libraries diff --git a/spack/package.py b/spack/package.py index 5f1758890..bfb41675a 100644 --- a/spack/package.py +++ b/spack/package.py @@ -1,4 +1,4 @@ -# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other +# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) @@ -8,8 +8,8 @@ from spack import * -class Timemory(CMakePackage): - """Timing + Memory + Hardware Counter Utilities for C/C++/CUDA/Python""" +class Timemory(CMakePackage, PythonPackage): + """Timing + Memory + Hardware Counter Utilities for C/C++/CUDA/Fortran/Python""" homepage = 'https://timemory.readthedocs.io/en/latest/' git = 'https://github.com/NERSC/timemory.git' @@ -17,6 +17,8 @@ class Timemory(CMakePackage): version('master', branch='master', submodules=True) version('develop', branch='develop', submodules=True) + version('3.2.0', branch='release/3.2.0', + submodules=True) version('3.0.1', commit='ef638e1cde90275ce7c0e12fc4902c27bcbdeefd', submodules=True) version('3.0.0', commit='b36b1673b2c6b7ff3126d8261bef0f8f176c7beb', @@ -25,6 +27,9 @@ class Timemory(CMakePackage): variant('shared', default=True, description='Build shared libraries') variant('static', default=False, description='Build static libraries') variant('python', default=False, description='Enable Python support') + variant('python_deps', default=False, + description='Install non-critical python dependencies ' + '(may significantly increase spack install time)') variant('mpi', default=False, description='Enable support for MPI aggregation') variant('nccl', default=False, @@ -88,16 +93,16 @@ class Timemory(CMakePackage): description=('find_package(...) resulting in NOTFOUND ' 'generates error')) - depends_on('cmake@3.11:', type='build') + depends_on('cmake@3.15:', type='build') extends('python', when='+python') depends_on('python@3:', when='+python', type=('build', 'run')) - depends_on('py-numpy', when='+python', type=('run')) - depends_on('py-pillow', when='+python', type=('run')) - depends_on('py-matplotlib', when='+python', type=('run')) - depends_on('py-mpi4py', when='+python+mpi', type=('run')) depends_on('py-cython', when='+python', type=('build')) - depends_on('py-ipython', when='+python', type=('run')) + depends_on('pil', when='+python+python_deps', type=('run')) + depends_on('py-numpy', when='+python+python_deps', type=('run')) + depends_on('py-matplotlib', when='+python+python_deps', type=('run')) + depends_on('py-ipython', when='+python+python_deps', type=('run')) + depends_on('py-mpi4py', when='+python+mpi+python_deps', type=('run')) depends_on('mpi', when='+mpi') depends_on('nccl', when='+nccl') depends_on('tau', when='+tau') @@ -117,6 +122,7 @@ class Timemory(CMakePackage): conflicts('+python', when='~shared', msg='+python requires building shared libraries') + conflicts('+python_deps', when='~python') conflicts('+cupti', when='~cuda', msg='CUPTI requires CUDA') conflicts('+kokkos_tools', when='~tools', msg='+kokkos_tools requires +tools') @@ -186,7 +192,7 @@ def cmake_args(self): args.append('-D{0}CUDA_ARCH={1}'.format(key, targ)) cpu_target = spec.variants['cpu_target'].value - if cpu_target == 'auto': + if cpu_target != 'auto': args.append('-DCpuArch_TARGET={0}'.format(cpu_target)) # forced disabling of submodule builds