class xilinx_apps::cosinesim::CosineSimBase¶
Overview¶
Non-template version of CosineSim class. More…
#include <cosinesim.hpp> class CosineSimBase { public: // construction CosineSimBase(const Options& options, unsigned valueSize); // methods void startLoadPopulation(std::int64_t numVectors); void* getPopulationVectorBuffer(RowIndex& rowIndex); void finishCurrentPopulationVector(void* pbuf); void finishLoadPopulation(); std::vector<Result> matchTargetVector(unsigned numResults, void* elements); }; // direct descendants template <typename Value> class CosineSim;
Detailed Documentation¶
Non-template version of CosineSim class.
This class provides the same functionality as the template-based CosineSim class, except without the type parameter for vector elements. Use this class for situations where a template-based object would be inconvenient, such as when building a wrapper for this API for a language which does not support C++ template implementations.
Construction¶
CosineSimBase(const Options& options, unsigned valueSize)
Constructs a CosineSimBase object.
Parameters:
options |
the configuration options for consine similarity operations. See the Options struct for details. |
valueSize |
the size in bytes of each vector element. 4 is the only supported value for this release. |
Methods¶
void startLoadPopulation(std::int64_t numVectors)
Starts the procedure for loading population vectors to the Alveo accelerator card.
Call this function at the start of loading or reloading all population vectors to the Alveo accelerator card.
Parameters:
numVectors |
the total number of population vectors to load |
void* getPopulationVectorBuffer(RowIndex& rowIndex)
Allocates a buffer for the caller to fill with population vector element values.
This function is the same as CosineSim::getPopulationVectorBuffer(), except that the returned buffer is a type-free void *
instead of an array of a typed element value.
Parameters:
rowIndex |
an integer variable to receive the row index for the buffer |
Returns:
a memory buffer large enough to hold enough integers for one population vector
void finishCurrentPopulationVector(void* pbuf)
Processes a population vector buffer after the caller has filled it with population vector values.
This function is the same as CosineSim::finishCurrentPopulationVector(), except that the buffer for this function has no element type (that is, the buffer is a void *
).
Parameters:
pbuf |
the population vector buffer |
void finishLoadPopulation()
Ends the procedure for loading population vectors to the Alveo accelerator card.
Call this function after loading all population vectors to transfer the population vectors to the Alveo acclerator cards.
std::vector<Result> matchTargetVector(unsigned numResults, void* elements)
Runs a match of a given target vector against all population vectors.
This function is the same as CosineSim::matchTargetVector(), except without the type safety of the array type.
Parameters:
numResults |
the number of match results to return |
elements |
a C array of target vector elements |
Returns:
a std::vector
of Result objects, one per match result