template class xilinx_apps::cosinesim::CosineSim¶
Overview¶
The main API class for the Cosine Similarity Alveo Product. More…
#include <cosinesim.hpp> template <typename Value> class CosineSim: public xilinx_apps::cosinesim::CosineSimBase { public: // typedefs typedef Value ValueType; // construction CosineSim(const Options& options); // methods const Options& getOptions(); Value* getPopulationVectorBuffer(RowIndex& rowIndex); void finishCurrentPopulationVector(Value* pbuf); std::vector<Result> matchTargetVector(unsigned numResults, Value* elements); };
Inherited Members¶
public: // 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);
Detailed Documentation¶
The main API class for the Cosine Similarity Alveo Product.
Instantiate an object of this class to store population vectors in an Alveo accelerator card and run cosine similarity matches with target vectors.
Typedefs¶
typedef Value ValueType
the integral type of population and target vector elements (same as the Value
template parameter)
Construction¶
CosineSim(const Options& options)
Constructs a CosineSim object.
Parameters:
options |
the configuration options for consine similarity operations. See the Options struct for details. |
Methods¶
const Options& getOptions()
Returns the configuration settings with which this CosineSim object was constructed. See Options for details.
Returns:
an Options struct containing the configuration settings
Value* getPopulationVectorBuffer(RowIndex& rowIndex)
Allocates a buffer for the caller to fill with population vector element values.
Call this function to fetch a buffer to fill with integers for one population vector. Also supply an integer variable, which is passed by reference, to receive the assigned row index for the population vector. Upon running matchTargetVector(), match results will contain this same row index to refer to the matching population vector.
After fetching the memory buffer, write your population vector values to the buffer. The buffer will be interpreted as a C array whose element type is an integer of the size specified in the valueSize
argument to the CosineSimBase() constructor.
You may write to separate buffers from multiple threads simultaneously, but this function itself is not thread safe, so be sure to call it in a critical section.
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(Value* pbuf)
Processes a population vector buffer after the caller has filled it with population vector values.
After fetching a buffer with CosineSim::getPopulationVectorBuffer() and filling it with population vector values, call this function, passing the same buffer, to process the buffer for sending to the Alveo accelerator card.
Parameters:
pbuf |
the population vector buffer |
std::vector<Result> matchTargetVector(unsigned numResults, Value* elements)
Runs a match of a given target vector against all population vectors.
The elements
array argument must contain as many elements as specified in Options::vecLength.
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