Skip to content

Latest commit

 

History

History
253 lines (220 loc) · 27.8 KB

CHANGELOG.md

File metadata and controls

253 lines (220 loc) · 27.8 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

2.0.0-rc - 2022-12-13

Added

  • CUDASimulation::simulate() can now be passed a RunPlan. (#678)
  • CUDA 11.7 is now included in CI builds (#761, #856)
  • CUDASimulation::setEnvironmentProperty(), CUDASimulation::getEnvironmentProperty() (#760)
  • Added HostAgentAPI mean and standard deviation operators. (#764, #766)
  • Added file IO support for all config struct members. (#768)
  • Added uniform random range support for floating-point types. (#776)
  • Added getOffsetX/Y/Z() to the iterated message for array message types. (#781)
  • Added VonNeumann neighbourhood iteration to MessageArray2D and MessageArray3D. (#783)
  • Added wrapped iteration access to MessageSpatial2D and MessageSpatial3D. (#185)
  • Log files can now be configured to include timing data. (#799)
  • RTC users may now specify include paths. (#801)
  • Added annotations to CI (#480)
  • Added three levels of error-reporting to choose from when using CUDAEnsemble. (#839)
  • Added VERBOSE_PTXAS CMake option. (#851)
  • Visual Studio 2022 is now included in CI builds (#866)
  • Visualiser: Agent array variables can now be used to control agent color. (#876, FLAMEGPU/FLAMEGPU2-visualiser#90)
  • Visualiser: Added two low-poly stock models (PYRAMID, ARROWHEAD). (FLAMEGPU/FLAMEGPU2-visualiser#91)
  • Visualiser: Agents can now be represented by Keyframe pair animated models. (#904, FLAMEGPU/FLAMEGPU2-visualiser#16)
  • Added Pedestrian Navigation example in a standalone repository (from FLAME GPU 1). (Example)
  • Added support for agent functions and function conditions to be written in a "pure python" syntax. (#882, #910, #917)
  • Added "pure python" wrapped boids example. (#882, #940, #958)
  • Visualiser: User interfaces can now be defined to control environment properties via visualisations. (#911, FLAMEGPU/FLAMEGPU2-visualiser#100)
  • A warning is now emitted when configuring CMake for Visual Studio 2022 if the build path contains a space. (#934)
  • Python 3.11 is now included in CI builds and wheel generation. (#944)
  • Сompute Capability 90 (Hopper) has been added to the list of default CUDA architectures. (#954)
  • CUDAEnsemble now prevents standby during execution (on Windows), this can be disabled. (#930)
  • Added util::cleanup() for triggering cudaDeviceReset(). (974, also see #950)
  • Message list persistence can now be configured per message type. (#973)
  • pyflamegpu_swig build target now depends on flamegpu headers. (#981)
  • Added RunPlan::operator==(), RunPlanVector::operator==() and RunPlanVector::at(). (#983)
  • Added --truncate argument to CUDASimulation and CUDAEnsemble, allowing output files to truncate (defaults to off) (#992)
  • Added CTest support for test suite execution (#285)
  • Added util::clearRTCDiskCache() for clearing JitifyCache on-disk (#999)
  • Added Telemetry allowing the collection of usage metrics, this can be disabled via several methods (#987, #991), (#1013)

Changed (Breaking)

  • Removed redundant length argument from many Python methods. (#831, #872)
  • Replaced default random engine with std::mt19937_64. (#754)
  • CUDASimulation::initialise() now allows you set defaults, matching the behaviour of CUDAEnsemble. (#755)
  • Renamed ModelVis::addStaticModel() to ModelVis::newStaticModel(). (#911)
  • Default CUDA random engine changed to PHILOX (from XORWOW). (#873)
  • Renamed DeviceAPI::getThreadIndex() to DeviceAPI::getIndex(). (#943)
  • Missing pip packages are nolonger automatically installed during CMake configure. (#935)
  • cudaDeviceReset() is nolonger automatically triggered at CUDASimulation/CUDAEnsemble exit. (#950)
  • Unrecognised runtime args will nolonger cause program exit. (#967)
  • JSON output now outputs NaN/Inf values as string. (#969)
  • Removed references from return values throughout model description API. (#952, #978, #980, #1004)
  • Message lists nolonger persist (by default) between iterations. (#973)
  • Renamed RunPlanVector::setPropertyUniformDistibution() to RunPlanVector::setPropertyLerpRange() (#983)
  • Replaced NVTX macros with constexpr + namespaced methods (#990)
  • CUDAEnsemble now raises an exception of log files already exist (previous behaviour would append) (#818, #992)
  • Removed 'Callback' from Python API host function method/class names #997
  • Renamed CUDAMessage::getMessageDescription() to getMessageData() #996
  • CMake variables were updated to begin FLAMEGPU_ (#991)
  • Removed cuda_arch CMake variable, CMAKE_CUDA_ARCHITECTURES should now be used instead (#991)
  • Improved organisation of files within include/src/tests (#1007, #1012)
  • Removed CUDASimulation::getAgent(), getCUDAAgent(), getCUDAMessage() from the public API. (#1007)
  • Improved organisation/naming of examples (#1010)
  • Thrust/CUB minimum supported version increased to 1.16.0, from 1.14.0 due for improved windows support and bugfixes. 1.17.2 is fetched via CMake if a compatible thrust/cub is not found. (#1008)

Changed

  • Suppress note emitted by GCC >= 10 on ppc64le about changes since GCC 5. (#757)
  • Improved how input file loading errors and warnings are handled. (#752, #759, #810)
  • Visualiser: Updated FreeType dependency, hopefully improving download stability. (FLAMEGPU/FLAMEGPU2-visualiser#86)
  • Improve API docs for FLAMEGPU macros. (#787)
  • Agent sorting has been extended to submodels and agents with coordinates in array variables. (#805, #854)
  • USE_GLM type checking is now able to convert GLM types to base type/length. (#809)
  • Greatly reduced default stream usage, improving CUDAEnsemble performance. (#838, #843)
  • NVRTC is now passed the maximum supports GPU architecture flag. (#844)
  • Curve is now stored in shared_memory, improving register usage in CUDA 11.3+. (#560, #571)
  • NVRTC is now passed the maximum supports GPU architecture flag. (#844)
  • -lineinfo is now passed to the MinSizeRel and RelWithDebInfo build configurations. (#798)
  • Various test improvements. (#860, #902, #908, #1002, #1000)
  • Improved how CUDAEnsemble reports failure to find CUDA device to match CUDASimulation. (#858)
  • Ubuntu CI has been updated to use Ubuntu 22.04 / GCC 11 (#877)
  • Improved granularity of pyflamegpu incremental builds. (#887)
  • Improved error message when multiple agents write to the same array message element. (#895)
  • CI now uses CUDA 11.8 as "latest" (#924)
  • Visualisation headers are now always linted, regardless of whether enabled at CMake type. (#919)
  • Boids examples were updated to demonstrate visualisation UIs. (#911)
  • CUDA random engine may now be selected during CMake configuration. (#873)
  • Updated pinned versions of external GitHub Actions. (#945)
  • Renamed Python boids examples. (#940)
  • Removed redundant references from function argument throughout API. (#946)
  • Unified generic size_type to a library-wide version. (#948)
  • Improved granularity of verbosity levels. (960)
  • Added silence_unknown_args to runtime arg parsing so that users are nolonger required to filter out bespoke args. (#967)
  • Removed resolved issues from README.md. (#994)
  • Removed outdated comment from version.h. (#985)

Removed

Fixed

  • Python interface support for CUDAEnsembleConfig::devices. (#682)
  • CUDAFatAgent supports agents with no variables. (#492)
  • DeviceAgentVector can nolonger be passed out of scope. (#522)
  • EnvironmentManager::setProperty(), EnvironmentManager::getProperty() did not check length. (#760)
  • Logging could divide by zero when calculating standard deviation on empty agent population. (#763)
  • Updated Jitify dependency (fixes memory leak, improves GLM support). (#756, #813)
  • Corrected a sugar growback bug within the SugarScape example. (#784)
  • MessageArray3D Moore iterator could lead to compilation failure. (#785)
  • Visualiser: Did not account for agent populations shrinking. (FLAMEGPU/FLAMEGPU2-visualiser#785)
  • EnvironmentManager::setProperty() had length check misplaced under USE_GLM. (#791)
  • CUDAEnsemble logs did not include RunPlan details as intended. (#799)
  • XML exit log contained redundant block. (#799)
  • Final step log is nolonger double logged. (#799)
  • Greatly improve RTC compile times by specifying known headers (#811)
  • RunPlan::setProperty() would fail silently. (#814)
  • Internal environment property used for tracking steps was being mapped to submodels. (#815)
  • RunPlanVector::setPropertyUniformDistribution() was rounding floating-point values. (#823)
  • cbrt() was incorrectly used in place of sqrtf() in Circles example. (#829)
  • Visualiser: AgentStateVis::setColour() did not support StaticColor. (#830)
  • Various CMake improvements (#804, #836, #897, FLAMEGPU/FLAMEGPU2-visualiser#95, #914, #921, #991, #1014)
  • Updated CI to support new CUDA repository GPG keys. (#841)
  • DeviceMacroProperty::operator+=(double) did not support SM < 60. (#847)
  • Spatial agent sorting did not support agents outside the default state. (#861)
  • AgentStateVis::setColor() did not validate suitability of agent variable. (#875)
  • Improved how NVRTC's dll is located by pyflamegpu on Windows. (#450)
  • CUDAEnsemble progress printing nolonger goes backwards. (#901)
  • visualiser::DiscreteColor was not support by the Python API. (#922)
  • Corrected typographic error inside CITATION.cff. (#929)
  • Python API did not correctly support CUDASimulation::setEnvironmentProperty(). (#915, #912)
  • A warning is nolonger emit by CUDAEnsemble if the default config is not updated. (#949)
  • Replaced occurrences of CUDAAgentModel with CUDASimulation in comments and NVTX ranges. (#951)
  • Corrected issues with Python packaging. (#962, #964)
  • Messaging internal data structures are now correctly reset at CUDASimulation reset. (#972)
  • Removed redundant code from CUDAFatAgent::addSubAgent(), which could lead to spurious device initialisation. (#968)
  • Improve precision of included headers to fix GCC11 builds. (#988)
  • __disown__() is now automatically triggered when Python Host functions/conditions are attached to a model. (#975, #997)

2.0.0-alpha.2 - 2021-12-09

Added

  • Environment macro properties, designed to hold large amount of data (e.g. 4 dimensional arrays) which agents can mutate via atomic operations. (#643, #738)
  • Support for using CUDA (11.3+) provided Thrust/CUB, if available. (#657, #692)
  • Agents can now be automatically sorted according to message order. (#723)
  • Added Python 3.10 to CI release build matrix. (#706)
  • Added contact links to new issue template (#722)
  • Added a manual Windows test build CI action (#741)

Changed (Breaking)

  • Simulation times are now output in seconds and stored as double (previously millisecond, float). (#691)

Changed

  • Update Ubuntu CI to build SWIG 4.0.2 from source. (#705)
  • Re-enable CMake targets MinSizeRel, RelWithDebingo. (#698, #704)
  • Update CMake target_link_libraries to have explicit visibility. (#701, #703)
  • Reduce the context creation threshold used inside test suite. (#691)
  • Host functions are now stored internally with a std::vector to preserve order (previously order was undefined). (#707, #708)
  • Improve guidance in README for new visual studio/CUDA users. (#702)
  • Update CI to support CUDA 11.5, and use this for 'latest' builds. (#716)
  • Updated uses of diag_ pragma to nv_diag_, to be CUDA 11.5+ compatible. (#716)
  • Various improvements to the Boids example models (#739)

Removed

  • Removed Simulation::getSimulationConfig() from the Python interface. (#689, #690)

Fixed

  • Python example no longer mutates constant accessor to simulation config. (#694)
  • Array message test suite would fail to build with NO_SEATBELTS enabled. (#695)
  • Add missing SEATBELTS checks for reserved names within various DeviceAPI classes. (#700)
  • Add missing MessageBruteForce::getVariableLength() method. (#709)
  • Fixed cases where throwing of a DeviceException was not followed by a safe return. (#718)
  • SubModelDescription::(get)SubEnvironment(true) now also automatically maps macro properties. (#724)
  • CUDAMessage no longer loses data if a resize is performed before an append. (#725, #726)
  • Logging the mean of an agent variable for an empty pop, would return NaN, producing an invalid Log file. 0 is now returned. (#734)
  • CUDAEnsemble no longer always logs both step and exit files to disk, if either is required. (#730)
  • Corrected memory allocation calculations within CUDAScatter::arrayMessageReorder(). (#736)
  • Explicitly flush CUDAEnsemble progress print statements, so they always display as expected.
  • Minor corrections to the handling of Simulation logging configs. (#742)
  • DeviceError no longer handles %s formatter wrong in Release builds. (#744, #746, #743)

2.0.0-alpha.1 - 2021-09-03

Added

  • Optional support for vector types via GLM (#217)
    • This is currently behind a CMake option due to significant RTC compilation time increases
  • Created CHANGELOG.md (#618, #630)
  • Release process documentation (#622)
  • Thorough testing of flamegpu::CUDAEnsemble, flamegpu::RunPlan and flamegpu::RunPlanVector (#656, #665)
  • Added uint64_t flamegpu::RunPlanVector::getRandomPropertySeed() (#656, #665)

Changed

  • Use IntT in MessageBucketDevice to resolve clang sign comparison warnings (#554)
  • Default value of -s/--steps set to 1 rather than 0 (#634)
  • All RNG seeds are now uint64_t (#656, #665)
  • Assorted bugfixes for RunPlan, RunPlanVector and CUDAEnsemble (#656, #665)
  • Linux python binary wheel generation now produces wheels supporting glibc >= 2.17 (#632)
  • CI configuration changes (#641)
  • CMake modernisation, including use of target properties, in-source build prevention, support for patched GCC 10.3.0 and 11.1.0 (#586)
  • include/flamegpu/version.h is no longer generated by CMake, allowing true out-of-source builds (#600)
  • Performance improvements (#564)
  • Compiler warning fixes and suppression (#554, #638, #671)
  • Do not use cudaEvent_t based timers when using WDDM GPUs (#640)
  • Visualiser: GLU no longer required as a dependency of the visualisation (FLAMEGPU/FLAMEGPU2-visualiser#79)
  • Visualiser: CMake improvements (FLAMEGPU/FLAMEGPU2-visualiser #77, #80, #81)

Removed

  • CMake versions <= 3.18 are no longer supported (#661)
  • Do not suggest that Clang is a working/valid host C++ compiler at this time (#633)
  • pyflamegpu no longer exposes pyflamegpu.sys and pyflamegpu.os (#654)
  • CUDAEnsemble::CUDAEnsemble/CUDAEnsemble::initialise no longer output the FLAMEGPU version number (#656, #665)
  • pyflamegpu.CUDAEnsemble().getConfig() removed, use pyflamegpu.CUDAEnsemble.Config() (#656, #665)

Fixed

  • Improved RTC compilation errors using #line directives (#608)

2.0.0-alpha - 2021-08-10

Initial alpha release of FLAME GPU 2.0.0, a CUDA C++ / python3 library for agent based simulations