Beispiel #1
0
        /// <summary>
        /// Initializes memory manager
        /// </summary>
        /// <param name="databaseName">datbase name</param>
        public Manager(IRlmNetwork network, bool trackStats = false)
        {
            Network = network;

            bcSessionsToCreate = new BlockingCollection <Session>();
            bcSessionsToUpdate = new BlockingCollection <Session>();
            bcCasesQueue       = new BlockingCollection <Case>();


            rlmDb         = new RlmDbMgr(network.RlmDBData, network.PersistData);
            rlmDbEnqueuer = new RlmObjectEnqueuer();

            progressUpdater.Interval = 1000;
            progressUpdater.Elapsed += ProgressUpdater_Elapsed;

            if (trackStats)
            {
                GetRneuronTimes      = new List <TimeSpan>();
                RebuildCacheboxTimes = new List <TimeSpan>();
                SwGetRneuron         = new System.Diagnostics.Stopwatch();
                SwRebuildCache       = new System.Diagnostics.Stopwatch();
            }

            MASTER_CASE_QUEUE.Enqueue(caseQueue = new Queue <Case>());

            if (network.GPURneuronProcessor == null)
            {
                rneuronProcessor = new RlmRneuronGetter(this);
            }
            else
            {
                GPUMode          = true;
                rneuronProcessor = network.GPURneuronProcessor;
            }
        }
        /// <summary>
        /// Initializes memory manager
        /// </summary>
        /// <param name="databaseName">datbase name</param>
        public Manager(IRlmNetwork network, bool trackStats = false)
        {
            Network            = network;
            rneuron_queue      = new BlockingCollection <Rneuron>();
            session_queue      = new BlockingCollection <Session>();
            savedSession_queue = new BlockingCollection <Session>();
            solution_queue     = new BlockingCollection <Solution>();
            case_queue         = new BlockingCollection <Case>();

            rlmDb         = new RlmDbMgr(network.DatabaseName);
            rlmDbEnqueuer = new RlmObjectEnqueuer();

            ctSourceSessions = new CancellationTokenSource();
            tokenSessions    = ctSourceSessions.Token;

            ctSourceCases = new CancellationTokenSource();
            tokenCases    = ctSourceCases.Token;

            progressUpdater.Interval = 1000;
            progressUpdater.Elapsed += ProgressUpdater_Elapsed;

            if (trackStats)
            {
                GetRneuronTimes      = new List <TimeSpan>();
                RebuildCacheboxTimes = new List <TimeSpan>();
                SwGetRneuron         = new System.Diagnostics.Stopwatch();
                SwRebuildCache       = new System.Diagnostics.Stopwatch();
            }

            MASTER_CASE_QUEUE.Enqueue(caseQueue = new Queue <Case>());
        }
        /// <summary>
        /// Initializes memory manager
        /// </summary>
        /// <param name="databaseName">datbase name</param>
        public Manager(IRlmNetwork network)
        {
            Network            = network;
            rneuron_queue      = new BlockingCollection <Rneuron>();
            session_queue      = new BlockingCollection <Session>();
            savedSession_queue = new BlockingCollection <Session>();
            solution_queue     = new BlockingCollection <Solution>();
            case_queue         = new BlockingCollection <Case>();

            rlmDb         = new RlmDbMgr(network.DatabaseName);
            rlmDbEnqueuer = new RlmObjectEnqueuer();

            ctSourceSessions = new CancellationTokenSource();
            tokenSessions    = ctSourceSessions.Token;

            ctSourceCases = new CancellationTokenSource();
            tokenCases    = ctSourceCases.Token;

            progressUpdater.Interval = 1000;
            progressUpdater.Elapsed += ProgressUpdater_Elapsed;
        }