Skip to content

v0.6.0

Compare
Choose a tag to compare
@sherholz-intel sherholz-intel released this 09 Feb 09:38
· 78 commits to main since this release

Open PGL 0.6.0

  • Api changes:

    • Device added numThread parameter (default = 0) to the constructor to set the number of threads used by Open PGL during training. The default value of 0 uses all threads provided by TBB. If the renderer uses TBB as well and regulates the thread count this count is also used by Open PGL.
    • SurfaceSamplingDistribution and VolumeSamplingDistribution:
      • Added GetId function to return the unique id of the spatial structure used to query the sampling distriubtion.
    • Field and SampleStorage, added Compare function to check if the data stored in different instances (e.g., generated by two separate runs) are similar (i.e., same spatial subdivisions and directional distributions).
    • Field:
      • The constructor of the Field class now takes a FieldConfig instead of a PGLFieldArguments object. (BREAKING API CHANGE)
      • GetSurfaceStatistics and GetVolumeStatistics functions are added to query statistics about the surface and volume guiding field. The functions return a FieldStatistics object. Note, querying the statistics of a Field introduces a small overhead.
    • FieldStatistics:
      • This class store different statistics about a Field, such as, number and size of spatial nodes, statistics about the directional distributions, and the times spend for full and separate steps of the last Update step. The statistics can be queried as a full string (useful for logging) or as CSV strings (useful for analysis and plotting).
      • ToString: Returns a string printing all statistics.
      • HeaderCSVString: Returns the CSV header sting with the names of each statistic.
      • ToCSVString: Returns the CSV value sting of each statistic.
    • FieldConfig:
      • This class is added to replace the PGLFieldArguments struct when using the C++ API.
        -Init: the function initializes the parameters of the FieldConfig (i.e., similar to pglFieldArgumentsSetDefaults). Additional parameters (deterministic and maxSamplesPerLeaf) are introduced to enable deterministic behavior and to control the spatial subdivision granularity.
        -SetSpatialStructureArgMaxDepth: this function can be called after Init to the the maximum tree depth of the spatial structure.
    • pglFieldArgumentsSetDefaults: Adding two additional parameters deterministic and maxSamplesPerLeaf. (BREAKING API CHANGE)
  • Tools:

    • Added a set of command line tools which are build when enabling the OPENPGL_BUILD_TOOLS Cmake flag.
      • openpgl_bench: Tool to time different components of Open PGL such as the full training of a Field or the querying (initialization) of SamplingDistributions.
      • openpgl_debug: Tool to validate and compare stored SampleStorage and Field objects or retrain a Field from scratch using multiple stored sets (iterations) of stored samples.
  • Optimizations:

    • Spatial structure (Kd-tree) build is now fully multithreaded. This improves training performance on machines with higher core counts, especially when using deterministic training.
    • Kd-tree switched to use cache-friendlier TreeLets instead of single TreeNode structures.
  • Bugfixes:

    • Field fixed some non-deterministic behavior when spatial cache does not receive any training data during a training iteration due to a large number of training iterations.
    • Removed legacy/broken support for OpenMP threading since there is a dependency to TBB anyway.
    • Fixed build problems on (non-Mac) ARM systems.