Skip to content

Commit

Permalink
(paper) mention that the Python and NumPy implementations are what is…
Browse files Browse the repository at this point in the history
… typically used in the community per #2 (comment)
  • Loading branch information
amkrajewski committed Aug 29, 2024
1 parent e9c4d2c commit 7511dd7
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ As shown in Figure \ref{fig:main}, `nimCSO` can be used as a user-tool based on

![Schematic of core nimCSO data flow with a description of key methods. Metaprogramming is used to compile the software optimized to the human-readable data and configuration files at hand.\label{fig:main}](assets/nimCSO_mainFigure.png){width="300pt"}

Internally, `nimCSO` is built around storing the data and solutions in one of two ways. The first is as bits inside an integer (`uint64`), which allows for the highest speed and lowest memory consumption possible but is limited to 64 dimensions and does not allow for easy extension to other use cases; thus, as of publication, it is used only in a particular `bruteForceInt` routine. The second one, used in `bruteForce`, `algorithmSearch`, and `geneticSearch`, implements a custom easily extensible `ElSolution` type containing heuristic value and `BitArray` payload, which is defined at compile time based on the configuration file to minimize necessary overheads. Both encodings outperform typical native Python and NumPy implementations, as shown in Table 1.
Internally, `nimCSO` is built around storing the data and solutions in one of two ways. The first is as bits inside an integer (`uint64`), which allows for the highest speed and lowest memory consumption possible but is limited to 64 dimensions and does not allow for easy extension to other use cases; thus, as of publication, it is used only in a particular `bruteForceInt` routine. The second one, used in `bruteForce`, `algorithmSearch`, and `geneticSearch`, implements a custom easily extensible `ElSolution` type containing heuristic value and `BitArray` payload, which is defined at compile time based on the configuration file to minimize necessary overheads. As shown in Table 1, both encodings outperform typical native Python and NumPy implementations, typically used in this application by the scientific community, which can be found in `benchmarks` directory.

+----------------+----------------+------------------+-----------------------------+----------------------------+
| Tool | Object | Time per Dataset | Time per Entry *(Relative)* | Database Size *(Relative)* |
Expand Down

0 comments on commit 7511dd7

Please sign in to comment.