<commit_before>=====================================================================
NEW IN VERSION 19
=====================================================================
- (Feature) Ports of XSBench in a variety of accelerator oriented
  programming models have been added to the repo. The traditional
  OpenMP threading model of XSBench is now located in the 
  "XSBench/src/openmp-threading" directory. The other programming
  models are:

    - OpenMP target offloading, for use with OpenMP 4.5+ compilers
      that can target a variety of acecelerator architectures.

    - CUDA for use on NVIDIA GPUs.

    - OpenCL for use on CPU and accelerators. Note that this port
      may need to be heavily re-optimized if running on a non-GPU
      architecture.

    - SYCL for use on CPU and accelerators. Note that this port
      may need to be heavily re-optimized if running on a non-GPU
      architecture.

  Note that the accelerator-oriented models only implement the event
  based model of parallelism, as this model is expected to be 
  superior to the history-based model for accelerator architectures.
  As such, running with the accelerator models will require the
  "-m event" flag to be used.

- (Optimization) For the CUDA and openmp-threading code bases,
  several different optimized kernel variants have been developed.
  These optimized kernels can be selected with the "-k <kernel ID #>"
  argument. The optimized kernels work by sorting values by energy
  and material to reduce thread divergence and greatly improve
  cache locality. All baseline (default) kernel (-k 0) is generally
  the same across all programming models. In a future release, we
  plan on implementing these optimizations for all programming models
  if possible. 

- (Feature) Verification mode is now default and required, so is no
  longer an option in the Makefile. A new and faster method of
  verifying results was developed and added, making it have much less
  of an impact on performance than the previous methods did. As the
  new method generates a different hash than the old one, the expected
  has values have changed in v19.

- (Feature) Changed the binary file read/write capability in XSBench
  to be a command line argument rather than requiring re-compilation
  with makefile flags. This can be set with the "-b <read, write>"
  argument.

- (Removal) Removed PAPI performance counters from code and Makefile.

- (Removal) A number of optional/outdated Makefile options were
  removed in an effort to clean up the code base and simplify things.

=====================================================================
NEW IN VERSION 18
=====================================================================
- (Feature) Added in an option to
  use an event based simulation algorithm as opposed to the default
  history based algorithm. This mode can be enabled with the "-m
  event" command line option. The central difference between the
  default history based algorithm and the event based algorithm is
  the dependence or independence of macroscopic cross section
  lookups. In the default history based method, the simulation
  parallelism is expressed over a large number of independent
  particle "histories", with each particle history requiring (by
  default) 34 sequential and dependent macroscopic cross section
  lookups to be executed. In the event based method, all macroscopic<commit_msg>updated changelog with more details on v19 changes<commit_after>=====================================================================
NEW IN VERSION 19
=====================================================================
- (Feature) Ports of XSBench in a variety of accelerator oriented
  programming models have been added to the repo. The traditional
  OpenMP threading model of XSBench is now located in the 
  "XSBench/src/openmp-threading" directory. The other programming
  models are:

    - OpenMP target offloading, for use with OpenMP 4.5+ compilers
      that can target a variety of acecelerator architectures.

    - CUDA for use on NVIDIA GPUs.

    - OpenCL for use on CPU and accelerators. Note that this port
      may need to be heavily re-optimized if running on a non-GPU
      architecture.

    - SYCL for use on CPU and accelerators. Note that this port
      may need to be heavily re-optimized if running on a non-GPU
      architecture.

  Note that the accelerator-oriented models only implement the event
  based model of parallelism, as this model is expected to be 
  superior to the history-based model for accelerator architectures.
  As such, running with the accelerator models will require the
  "-m event" flag to be used.

- (Optimization) For the CUDA and openmp-threading code bases,
  several different optimized kernel variants have been developed.
  These optimized kernels can be selected with the "-k <kernel ID #>"
  argument. The optimized kernels work by sorting values by energy
  and material to reduce thread divergence and greatly improve
  cache locality. All baseline (default) kernel (-k 0) is generally
  the same across all programming models. In a future release, we
  plan on implementing these optimizations for all programming models
  if possible. 

- (Feature) Verification mode is now default and required, so is no
  longer an option in the Makefile. A new and faster method of
  verifying results was developed and added, making it have much less
  of an impact on performance than the previous methods did. As the
  new method generates a different hash than the old one, the expected
  has values have changed in v19.

- (Feature) Changed the binary file read/write capability in XSBench
  to be a command line argument rather than requiring re-compilation
  with makefile flags. This can be set with the "-b <read, write>"
  argument.

- (Removal) Removed PAPI performance counters from code and Makefile.

- (Removal) A number of optional/outdated Makefile options were
  removed in an effort to clean up the code base and simplify things.

- (Feature) To service the new verification mode, a new PRNG scheme
  has been implemented. We now use a specific LCG for all random
  number generation rather than relying on C standard rand() for
  some parts of initialization. Additionally, instead of selecting
  seeds by thread ID, we now base the PRNG stream off of a single
  seed that gets forwarded using a log(N) algorithm. This ensures
  that each sample is uncorrelated so will better ensure the randomness
  of our energy and material samples as compared to the old scheme.

- (Feature) The basic data structures in XSBench have all been changed
  to use a single 1D memory allocation each so as to make it as
  easy as possible to offload heap memory to devices without having
  to flatten things manually for each device implementation.  

=====================================================================
NEW IN VERSION 18
=====================================================================
- (Feature) Added in an option to
  use an event based simulation algorithm as opposed to the default
  history based algorithm. This mode can be enabled with the "-m
  event" command line option. The central difference between the
  default history based algorithm and the event based algorithm is
  the dependence or independence of macroscopic cross section
  lookups. In the default history based method, the simulation
  parallelism is expressed over a large number of independent
  particle "histories", with each particle history requiring (by
  default) 34 sequential and dependent macroscopic cross section
  lookups to be executed. In the event based method, all macroscopic
{'fraction_non_alphanumeric': 0.10294500912170967, 'fraction_numerical': 0.0032577534532186605, 'mean_word_length': 4.10645375914837, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1938882', 'n_tokens_mistral': 1848, 'n_tokens_neox': 1720, 'n_words': 1064}