Exemple #1
0
        private void m_internalThread_DoWork(object sender, ActionStateArgs <T> e)
        {
            while (!m_internalThread.CancellationPending)
            {
                if (m_evtDataReady.WaitOne(10))
                {
                    for (int i = 0; i < m_nNumBatches; i++)
                    {
                        for (int j = 0; j < m_nBatchSize; j++)
                        {
                            if (m_evtCancel.WaitOne(0))
                            {
                                return;
                            }

                            int nIdx    = (i * m_nBatchSize) + j;
                            int nImgIdx = (int)Convert.ChangeType(m_rgInput[nIdx], typeof(int));

                            SimpleDatum d = m_imgdb.QueryImage(m_src.ID, nImgIdx, IMGDB_LABEL_SELECTION_METHOD.NONE, IMGDB_IMAGE_SELECTION_METHOD.NONE);
                            m_rgrgDataQueue[i].Push(new Datum(d));
                        }
                    }
                }
            }
        }
Exemple #2
0
        void m_internalThread_DoWork(object sender, ActionStateArgs <T> e)
        {
            CudaDnn <T> cuda    = m_cuda;
            Log         log     = m_log;
            long        hStream = 0; // cuda.CreateStream(false);

            try
            {
                Batch <T> batch = new Batch <T>(cuda, log);

                while (!m_internalThread.CancellationPending)
                {
                    if (m_rgPrefetchFree.Pop(ref batch))
                    {
                        load_batch(batch);

                        batch.Data.AsyncGpuPush(hStream);
                        if (hStream != 0)
                        {
                            m_cuda.SynchronizeStream(hStream);
                        }

                        if (m_bOutputLabels)
                        {
                            batch.Label.AsyncGpuPush(hStream);
                            if (hStream != 0)
                            {
                                m_cuda.SynchronizeStream(hStream);
                            }
                        }

                        m_transformer.DistortImage(batch.Data);

                        m_rgPrefetchFull.Push(batch);
                    }
                }
            }
            catch (Exception excpt)
            {
                m_err = excpt;
                m_rgPrefetchFull.Abort();
                m_rgPrefetchFree.Abort();
                throw excpt;
            }
            finally
            {
                if (hStream != 0)
                {
                    cuda.FreeStream(hStream);
                }
            }
        }
        void m_internalThread_DoWork(object sender, ActionStateArgs <T> e)
        {
            CudaDnn <T> cuda    = m_cuda;
            Log         log     = m_log;
            long        hStream = 0; // cuda.CreateStream(false);

            while (!m_internalThread.CancellationPending)
            {
                Batch <T> batch = new Batch <T>(cuda, log);

                if (m_rgPrefetchFree.Pop(ref batch))
                {
                    load_batch(batch);

                    batch.Data.AsyncGpuPush(hStream);
                    if (hStream != 0)
                    {
                        m_cuda.SynchronizeStream(hStream);
                    }

                    if (m_bOutputLabels)
                    {
                        batch.Label.AsyncGpuPush(hStream);
                        if (hStream != 0)
                        {
                            m_cuda.SynchronizeStream(hStream);
                        }
                    }

                    m_rgPrefetchFull.Push(batch);
                }
            }

            if (hStream != 0)
            {
                m_cuda.FreeStream(hStream);
            }
        }