Skip to content

Releases: FPMAS/FPMAS

FPMAS 1.6

27 Oct 12:26
Compare
Choose a tag to compare

✨ Features

⚡ Performance improvements

🚑 Critical Bug Fixes

  • Fixes an ObjectPack serialization issues (see v1.5.1 and v1.5.2)
  • Fixes a ZoltanLoadBalancing issue (see v1.5.3)

🔧 Other improvements

FPMAS 1.5.3

12 Oct 08:16
Compare
Choose a tag to compare

🚑 Critical Bug Fix

  • Fixes a ZoltanLoadBalancing bug that caused it to never migrate anything when applied with a period of 1.

FPMAS 1.5.2

04 Aug 08:12
Compare
Choose a tag to compare

🚑 Critical Bug Fix

FPMAS 1.5.1

02 Jun 11:46
Compare
Choose a tag to compare

🚑 Critical Bug Fix

  • Fixes a critical serialization issue, that could make the platform severely crash with some compilers (see 21855a6).

🚨 Warning Fix

  • Fixes a clang warning in DEBUG mode.

FPMAS 1.5

08 Apr 13:11
Compare
Choose a tag to compare

✨ Features

⚡ Performances

  • The GridBuilder implementation is now based on the TreeProcessMapping, so that the grid is properly distributed at initialization (before this release, the GridBuilder produced an initial strip based partitioning)
  • Sets FPMAS_ID_TYPE default value to std::uint_fast32_t.

🚑 Critical bug fix

  • The HardSyncMode was exposed to critical deadlock situations when MPI_Send was not buffered by default. Since the MPI implementation decides if MPI_Send buffers or not messages, Agent serialization rules that produced too much data was unexpectedly causing not buffered sends and so deadlocks. This as been solved with the usage of non blocking MPI_Isend communications.

FPMAS 1.4

17 Feb 08:00
Compare
Choose a tag to compare

This release introduces significant performance improvements.

⚡ Performance

static_cast -> dynamic_cast

  • The Agent inheritance scheme as been flatten using templates to remove all virtual inheritances (see the AgentBase documentation for more details). In consequence, static_cast from fpmas::api::model::Agent can be used instead of dynamic_cast.

This is a significant improvement, since application profiling show that dynamic_casts could be responsible for up to 23% of the total execution time of the PreyPredator model.

Agents and Tasks removal

  • Agents removal from AgentGroups is now performed in constant time (vs linear time before this release).
  • Tasks removal from Jobs is now performed in constant time (vs linear time before this release).

Those two last points are also significant, since Agents and their associated Tasks can be removed very often when performing load balancing operations.

💥 Critical Incompatibilities

FPMAS 1.3

11 Jan 13:49
Compare
Choose a tag to compare

✨ Features

⚡ Performance

  • The load balancing period can now be passed to the ZoltanLoadBalancing constructor, for more efficient Zoltan results.
  • Useless lockShared() operations have been removed from link() and removeNode() operations.
  • The FPMAS_TYPE_INDEX parameter specifies the type used to serialize std::type_index instances. std::uint_fast8_t is now used by default to optimize performances, potentially limiting to 256 the count of types that can be serialized, but other types can be specified to raise this limit.

🐛 Bug Fixes

  • Fixes uninitialized memory issues, that notably arose in initLocation() or moveTo() applied to a DISTANT cell. See release 1.2.3 for more details.

🏗️ Project Structure

  • Better test coverage, especially for serialization features.
    • new targets tests/serialization/fpmas_agent_json_test, tests/serialization/fpmas_agent_datapack_test and tests/serialization/fpmas_agent_json_datapack_test)
    • nodes and edges serialization tests in fpmas_local_test
  • Fixes deprecation warnings and other, notably thanks to the Hedley library
  • The platform is now compatible with the Clang compiler

FPMAS 1.2.3

10 Jan 14:42
Compare
Choose a tag to compare

🐛 Bug Fix

  • The locationCell() is now read in updateLocation() , what solves a bug that might be critical in HardSyncMode when moveTo() was called on a DISTANT cell. (see 4fbc4ed)
  • DistributedGraph::balance() now performs a partial data synchronization on imported DISTANT nodes, what allows to safely use them in the following time step when GhostMode is used. (see 24ce07c)

Both points solve "uninitialized memory" issues that arose when initializing agent locations after a load balancing.

FPMAS 1.2.2

07 Oct 15:00
Compare
Choose a tag to compare

✨ Features

  • fpmas::random::ConstantDistribution

🐛 Bug fix

  • Fixes an fpmas_local_test compilation error on systems where std::uint_fast32_t resolves to a 32 bit integer (and not to a 64 bit integer)

💥 Breaking changes

  • The support for FPMAS_JSON_SET_UP() without arguments has been removed, since it required C++20 features.
  • FPMAS_DEFAULT_JSON_SET_UP() can be used instead.

FPMAS 1.2.1

30 Sep 13:11
Compare
Choose a tag to compare

🚑 Bug fix

  • Fixes parsing issues with find_zoltan_version and find_nlohmann_json_version (The latest Zoltan 3.90 version was notably not considered as a suitable version)

📝 Documentation

  • Improved installation instructions

✨ Features

  • Adds a missing DistributedClusteredGraphBuilder constructor