3#if _MSC_VER >= 1900 && defined(_M_X64)
12 class CComputationalBase;
15 class CComputationalGraph;
21 class CInternalOptimizerBase;
24 class FL_EXPORT CComputationalGraphUtilities :
public Base::CFLBase
27 CComputationalGraphUtilities();
30 virtual ~CComputationalGraphUtilities();
32 static const CResult SetBinaryData(
const Base::CFLData* pFldModel, CComputationalBase<T>** ppResultModel, int64_t i64Base = 0, int64_t i64Size = -1);
33 static const CResult SetBinaryData(
const Base::CFLData* pFldModel, std::vector<Base::CFLString<wchar_t>>& vctModelID, CComputationalBase<T>** ppResultModel, std::vector<int64_t>& vctModelOffset, int64_t i64Base = 0, int64_t i64Size = -1);
34 static const CResult GetBinaryData(
const CComputationalBase<T>* pModel, Base::CFLData* pFldResult,
bool bDumpMode =
false,
bool bAppend =
false);
36 static const CResult
Load(
const wchar_t* pWcsFileName, CComputationalBase<T>** ppResultModel);
37 static const CResult
Save(
const wchar_t* pWcsFileName,
const CComputationalBase<T>* pModel,
bool bDumpMode =
false);
39 static const CResult GetSequentialNode(
const CComputationalBase<T>* pModel, std::vector<
const CComputationalBase<T>*>* pVctResult,
bool bIncludeIntrinsicOperands =
false,
bool bIncludePlaceholderOperands =
false,
bool bStartFromTailNode =
true,
bool bOnlyActivatedNodes =
true);
40 static const CResult GetSequentialNode(std::vector<
const CComputationalBase<T>*>& vctModels, std::vector<
const CComputationalBase<T>*>* pVctResult,
bool bIncludeIntrinsicOperands =
false,
bool bIncludePlaceholderOperands =
false,
bool bStartFromTailNode =
true,
bool bOnlyActivatedNodes =
true);
41 static const CResult GetSequentialNode(
const CComputationalBase<T>* pModelStart,
const CComputationalBase<T>* pModelEnd, std::vector<
const CComputationalBase<T>*>* pVctResult,
bool bIncludeIntrinsicOperands =
false,
bool bIncludePlaceholderOperands =
false);
43 static const CResult Evaluate(CComputationalBase<T>& cgLastLayer, CTensor<T>* pTsrOutput, int64_t i64DeviceIndex,
const std::vector<int64_t>* pVctBatchIndices =
nullptr, int32_t* pI32IterationFeedback =
nullptr, int32_t i32MiniBatch = 0);
44 static T Validate(CComputationalBase<T>& cgLabelLayer, CComputationalBase<T>& cgLastLayer,
const std::vector<int64_t>* pVctBatchIndices =
nullptr, int32_t* pI32IterationFeedback =
nullptr);
45 static const CResult
Delete(CComputationalBase<T>* pCgLayer,
bool bDeletePlaceholder =
false);
46 static const CResult Delete2(CComputationalBase<T>* pCgLayer);
47 static int64_t GetMaxMiniBatch(CComputationalBase<T>* pModel,
bool bTrainingMode, int64_t i64DeviceIndex, int64_t i64MaxMiniBatchRange = 0,
double f64MemoryLimitRatio = 1., CInternalOptimizerBase<T>* pOptimizer =
nullptr);
48 static int64_t GetRequiredOptimizerMemory(CInternalOptimizerBase<T>* pOptimizer, int64_t i64MiniBatchSize = 1);
49 static int64_t GetUniformMiniBatch(CComputationalBase<T>* pModel,
bool bTrainingMode, int64_t i64MaxBatch = 0);
50 static const CResult SetProcessingUnit(CComputationalBase<T>* pModel,
const Base::CProcessingUnitBase* pPuBase,
bool bRecursive =
true);
52 static const CResult ClearTensorMemory(CComputationalBase<T>* pModel);
54 static const CResult RegisterComputationalBaseObjects(CComputationalBase<T>* pObject);
55 static CComputationalBase<T>* CreateComputationalBaseObject(
const Base::CFLString<char>& astrClassNameWithNamespace);
57 static CComputationalGraphUtilities<T>* GetSingletonObject();
59 static const CResult DuplicateGraph(
const CComputationalBase<T>* pCgSource, CComputationalBase<T>** ppCgTarget, int32_t i32TargetDeviceNumber);
61 static const CResult SetRetainedGraph(CComputationalBase<T>* pModel);
62 static const CResult SetAddGradientCount(CComputationalBase<T>* pModel, int64_t i64AddGraidentCount);
64 static const CResult GetGPUName(Base::CFLString<wchar_t>& strGPUName, int32_t& i32ComputeCapabilityMajor, int32_t& i32ComputeCapabilityMinor, int32_t i32DeviceIndex);
65 static const CResult GetGPUMemoryInfo(int64_t& i64AvailableGPUMemory, int64_t& i64TotalGPUMemory, int32_t i32DeviceIndex);
66 static const CResult ClearAllSharedMemory();
67 static const CResult ResetCudaMemory(int32_t i32DeviceIndex);
69 static const CResult SetCudaDevice(int32_t i32DeviceIndex);
70 DeclareGetClassType();
72 static const CResult ReApplyComputationalGraph(CComputationalGraph<T>* pReapplyCGCost, int64_t i64ReapplyClassCount, int64_t i64ChCount);
73 static const CResult ReApplyComputationalGraph(CComputationalGraph<T>* pReapplyModel,
const std::vector<Base::CFLString<wchar_t>>& vctGraphName,
const std::vector<int64_t>& vctReapplyCount,
const std::vector<bool>& vctAdjustToOut);
74 static const CResult TransferModel(CComputationalGraph<T>* pTarget,
const CComputationalGraph<T>* pSource);
75 static const CResult TransferModel(std::vector<
const CComputationalBase<T>*>& vctTarget,
const std::vector<
const CComputationalBase<T>*>& vctSource);
78 std::map<Base::CFLString<char>, CComputationalBase<T>*>& m_mapSingletonObjects;
81 virtual void Throw(
const CResult& res,
const wchar_t* pWcsExtraMessage =
nullptr)
const override;
84 static CComputationalGraphUtilities<T>* GetSingletonInstance();
87 typedef CComputationalGraphUtilities<float> CComputationalGraphUtilitiesF;
88 typedef CComputationalGraphUtilities<double> CComputationalGraphUtilitiesD;
@ Delete
Remove windows and remove menu items from tree.