boonnano 1
C++ library giving usage access to the Boon Logic Nano technology
 
Loading...
Searching...
No Matches
boonnano.h
Go to the documentation of this file.
1
2#pragma once
3
4#include <stdio.h>
5#include <cstdint>
6#include <string.h>
7#include <iostream>
8#include "boonconfig.h"
9#include "autotune.h"
10#include "nanoutil.h"
11#include "clusterstats.h"
12
13#include <list>
14#include <map>
15#include <vector>
16
17class CNanoBackend; // forward declare
18class CClusterStatsCollection; // forward declare
19class CTypeConverter; // forward declare
20class CSGXManager; // forward declare
21
22#ifndef MAX_BN_ERROR_STRING
23#define MAX_BN_ERROR_STRING 1000
24#endif
25
27
31 public:
34
43 std::string GetStatusString(int CurrentIndent = 0, int AdditionalIndent = 4);
44
52 bool InitBackend(uint16_t NBKernels = 1);
53
61 CNanoBackend* GetBackendPointer(uint16_t KernelIndex = 0);
62
68 void ReleaseBackendPointer(uint16_t KernelIndex);
69
76
82 uint16_t GetNBKernels();
83
87 void GetErrorMessage(char* Message);
88
89 private:
90 // functions
91 void BackendRelease();
92
93 // classes
94 CSGXManager* m_SGXManager; // For SGX Back ends
95 std::vector<CNanoBackend*> m_NanoBackends;
96 std::vector<bool> m_BackendInUse;
97 uint16_t m_NumKernels, m_KernelsPerDevice;
98 bool m_InitComplete;
99 char m_ErrorBuffer[MAX_BN_ERROR_STRING];
100};
101
107
111 public:
117 CBoonNano(CNanoBackend* NanoBackend = nullptr);
118 ~CBoonNano();
119
125 void Reset(bool BackendReset = true);
126
135 bool Serialize(const char* ArchivePath, bool IsLoading);
136
148 bool Serialize(const char* VarPath, const char* ThisVarName, struct archive* Archive, bool IsLoading);
149
158 std::string GetStatusString(int CurrentIndent = 0, int AdditionalIndent = 4);
159
166 void SetLearningMode(bool LearningOn);
167
173 bool GetLearningMode() const;
174
181 void SetGhostClusterEnabled(bool GhostClustersEnabled);
182
189
197 void SetNanoClippingDetection(bool ClippingOn);
198
205
211 bool Setup(CNanoConfigParameters& NanoConfig);
212
221 int ClusterData(float* Pattern, CClusterStats* AdvancedAnalytics = nullptr);
222
231 void ClusterData(float* PatternBuffer, uint32_t NumPatterns, int* ResultBuffer, CClusterStats* AdvancedAnalyticsBuffer = nullptr);
232
247 uint32_t ClusterData(float* PatternBuffer, uint32_t NumPatterns, int* ResultBuffer, uint32_t StepCount, CClusterStats* AdvancedAnalyticsBuffer = nullptr);
248
255 int ClusterData(int16_t* Pattern, CClusterStats* AdvancedAnalytics = nullptr);
256
265 void ClusterData(int16_t* PatternBuffer, uint32_t NumPatterns, int* ResultBuffer, CClusterStats* AdvancedAnalyticsBuffer = nullptr);
266
281 uint32_t ClusterData(int16_t* PatternBuffer, uint32_t NumPatterns, int* ResultBuffer, uint32_t StepCount, CClusterStats* AdvancedAnalyticsBuffer = nullptr);
282
289 int ClusterData(uint16_t* Pattern, CClusterStats* AdvancedAnalytics = nullptr);
290
299 void ClusterData(uint16_t* PatternBuffer, uint32_t NumPatterns, int* ResultBuffer, CClusterStats* AdvancedAnalyticsBuffer = nullptr);
300
315 uint32_t ClusterData(uint16_t* PatternBuffer, uint32_t NumPatterns, int* ResultBuffer, uint32_t StepCount, CClusterStats* AdvancedAnalyticsBuffer = nullptr);
316
327 uint16_t ProbeClusterCount(uint16_t* PatternBuffer, uint32_t NumPatterns, uint32_t MaxClusters);
328
339 uint16_t ProbeClusterCount(int16_t* PatternBuffer, uint32_t NumPatterns, uint32_t MaxClusters);
340
351 uint16_t ProbeClusterCount(float* PatternBuffer, uint32_t NumPatterns, uint32_t MaxClusters);
352
357
364
370 uint16_t GetPatternLength();
371
377 bool InitComplete() const;
378
385
391 uint16_t GetCurrentClusterCount() const;
392
400 uint64_t GetClusterSize(int ID) const;
401
410
416 uint64_t GetNumOfPatternsClustered() const;
417
426 void GetPCA(int ID, uint32_t& X, uint32_t& Y, uint32_t& Z);
427
437 uint32_t GetAnomalyIndex(int ID);
438
448 uint16_t GetNoveltyIndex(int ID);
449
460 uint32_t GetFrequencyIndex(int ID);
461
472 uint32_t GetDistanceIndex(int ID);
473
485 uint32_t GetProbabilityIndex(int ID);
486
496 float GetInterClusterDistance(int ID1, int ID2);
497
505 int GetNearestNeighbor(int ID);
506
515 int GetNearestNeighbor(float* Pattern, float& Confidence);
516
525 int GetNearestNeighbor(uint16_t* Pattern, float& Confidence);
526
535 int GetNearestNeighbor(int16_t* Pattern, float& Confidence);
536
542 float GetPercentVariation() const;
543
550 uint16_t GetStreamingWindowSize() const;
551
557 uint16_t GetMaxClusters() const;
558
564 void SetMaxClusters(uint16_t MaxClusters);
565
575 bool GetRootCause(int ID, float* RootCause);
576
587 bool GetRootCause(uint8_t* Pattern, uint32_t PatternSizeInElements, float* RootCause);
588
595
604 bool PruneClusterIDs(const uint32_t* IDArray, uint32_t NumIDs);
605
606 CTypeConverter* m_TypeConverter;
607
608#ifdef BOON_DIAGNOSTIC
609#include "boondiagnostic.h"
610#endif
611
612 private:
613 CNanoBackendManager* m_BackendManager;
614 CNanoBackend* m_NanoBackend;
615 bool m_IsNanoBackend;
616 CNanoConfigParameters m_NanoConfig;
617 CClusterStatsCollection* m_ClusterStatsCollection;
618 char m_ErrorMsg[MAX_BN_ERROR_STRING];
619 uint8_t* m_PMArray;
620 bool m_NanoClippingEnabled;
621};
int ClusterData(int16_t *Pattern, CClusterStats *AdvancedAnalytics=nullptr)
Cluster int16 pattern.
bool GetGhostClusterEnabled() const
Whether or not new clusters can be created.
void GetPCA(int ID, uint32_t &X, uint32_t &Y, uint32_t &Z)
Get PCA representation of cluster.
uint64_t GetClusterSize(int ID) const
Get number of patterns in the cluster.
uint64_t GetNumOfPatternsClustered() const
Get number of patterns processed.
uint32_t ClusterData(float *PatternBuffer, uint32_t NumPatterns, int *ResultBuffer, uint32_t StepCount, CClusterStats *AdvancedAnalyticsBuffer=nullptr)
Cluster overlapping float patterns.
uint32_t GetProbabilityIndex(int ID)
Get cluster probability.
void SetMaxClusters(uint16_t MaxClusters)
Set the cluster count limit.
uint16_t ProbeClusterCount(float *PatternBuffer, uint32_t NumPatterns, uint32_t MaxClusters)
Get number of clusters for float data.
void ClusterData(int16_t *PatternBuffer, uint32_t NumPatterns, int *ResultBuffer, CClusterStats *AdvancedAnalyticsBuffer=nullptr)
Cluster int16 patterns.
bool Serialize(const char *ArchivePath, bool IsLoading)
Write/read object into/from a binary file.
void ClusterData(uint16_t *PatternBuffer, uint32_t NumPatterns, int *ResultBuffer, CClusterStats *AdvancedAnalyticsBuffer=nullptr)
Cluster uint16 patterns.
bool Setup(CNanoConfigParameters &NanoConfig)
Set configuration parameters for model clustering.
uint64_t GetInferenceCountWhenClusterWasCreated(int ID) const
Get the start index of the cluster.
uint16_t GetMaxClusters() const
Get maximum number of clusters allowed.
char * GetErrorMessage()
void SetGhostClusterEnabled(bool GhostClustersEnabled)
Enable/disable ghost cluster creation.
bool MaxClusterCountReached()
Determine if clusters were maxed out.
bool GetRootCause(int ID, float *RootCause)
Get root cause array from cluster.
void ClusterData(float *PatternBuffer, uint32_t NumPatterns, int *ResultBuffer, CClusterStats *AdvancedAnalyticsBuffer=nullptr)
Cluster float patterns.
bool Serialize(const char *VarPath, const char *ThisVarName, struct archive *Archive, bool IsLoading)
bool GetRootCause(uint8_t *Pattern, uint32_t PatternSizeInElements, float *RootCause)
Get root cause array from pattern.
bool InitComplete() const
Get backend initialization status.
bool GetNanoClippingDetection() const
Whether or not a new cluster can trigger on out of bounds.
int GetNearestNeighbor(int16_t *Pattern, float &Confidence)
Get closest cluster to the pattern (int16)
void SetLearningMode(bool LearningOn)
Enable/disable new cluster creation.
bool PruneClusterIDs(const uint32_t *IDArray, uint32_t NumIDs)
Remove cluster ID(s)
std::string GetStatusString(int CurrentIndent=0, int AdditionalIndent=4)
Print string of object variables.
int ClusterData(uint16_t *Pattern, CClusterStats *AdvancedAnalytics=nullptr)
Cluster uint16 pattern.
uint32_t GetFrequencyIndex(int ID)
Get cluster frequency.
uint16_t GetPatternLength()
Length of a pattern.
float GetPercentVariation() const
Get configured percent variation.
uint16_t GetStreamingWindowSize() const
Get configured streaming window size.
void SetNanoClippingDetection(bool ClippingOn)
Turn on/off value out of bounds anomalies.
float GetInterClusterDistance(int ID1, int ID2)
Get distance between two clusters.
uint32_t GetDistanceIndex(int ID)
Get the distance index for the cluster.
CBoonNano(CNanoBackend *NanoBackend=nullptr)
Initialize nano.
uint16_t GetNoveltyIndex(int ID)
Get novelty index for cluster.
bool GetLearningMode() const
Whether or not new clusters can be created.
void ResetClusters()
Resets the model's clusters.
int GetNearestNeighbor(float *Pattern, float &Confidence)
Get closest cluster to the pattern (float)
int ClusterData(float *Pattern, CClusterStats *AdvancedAnalytics=nullptr)
Cluster float pattern.
uint16_t ProbeClusterCount(uint16_t *PatternBuffer, uint32_t NumPatterns, uint32_t MaxClusters)
Get number of clusters for uint16 data.
uint32_t ClusterData(int16_t *PatternBuffer, uint32_t NumPatterns, int *ResultBuffer, uint32_t StepCount, CClusterStats *AdvancedAnalyticsBuffer=nullptr)
Cluster overlapping int16 patterns.
void Reset(bool BackendReset=true)
Clear object variables.
int GetNearestNeighbor(uint16_t *Pattern, float &Confidence)
Get closest cluster to the pattern (uint16)
uint16_t GetCurrentClusterCount() const
Get last error message.
int GetNearestNeighbor(int ID)
Get nearest cluster.
uint16_t ProbeClusterCount(int16_t *PatternBuffer, uint32_t NumPatterns, uint32_t MaxClusters)
Get number of clusters for int16 data.
uint32_t ClusterData(uint16_t *PatternBuffer, uint32_t NumPatterns, int *ResultBuffer, uint32_t StepCount, CClusterStats *AdvancedAnalyticsBuffer=nullptr)
Cluster overlapping uint16 patterns.
uint32_t GetAnomalyIndex(int ID)
Get anomaly index for cluster.
CNanoConfigParameters & GetNanoConfig()
Get configuration.
Main class of processing data.
Definition boonnano.h:110
CTypeConverter * m_TypeConverter
Object for managing data type and conversions.
Definition boonnano.h:606
Cluster specific statistics.
Definition clusterstats.h:17
std::string GetStatusString(int CurrentIndent=0, int AdditionalIndent=4)
Print string of object.
uint16_t GetNBKernels()
Get the number of backends allocated.
void GetErrorMessage(char *Message)
Get last error message.
bool InitBackend(uint16_t NBKernels=1)
Create number of backends.
CNanoBackend * GetBackendPointer(uint16_t KernelIndex=0)
Get reference to indexed backend.
void ReleaseBackendPointer(uint16_t KernelIndex)
Free backend from memory.
int GetNextAvailableBackendIndex()
Get next unused backend.
Simple class to create and provide nano back ends.
Definition boonnano.h:30
Main object for configuration.
Definition boonconfig.h:86