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)); } } } } }
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); } }