Mxnet: PrefetcherIter в C ++ API - PullRequest
       25

Mxnet: PrefetcherIter в C ++ API

0 голосов
/ 27 февраля 2019

Всякий раз, когда кто-то хочет создать пользовательский итератор в платформе Mxnet в C ++, он наследуется IIterator<TBlobBatch>.Затем для регистрации в реестр добавляется PrefetcherIter.Насколько я понимаю, значение PrefetcherIter означает, что будет создан другой поток, и его роль будет состоять в загрузке данных с диска до того, как это понадобится графическому процессору.

В моей пользовательской реализации итератора,У меня есть массив «порядков индексов», который используется, чтобы иметь случайный порядок, который согласован на протяжении эпохи (я не могу генерировать случайные индексы на лету, в противном случае я, скорее всего, пропущу одно и то же изображение несколько раз и пропущу некоторыедругие).Это должен быть доступ каждый раз, когда вызывается bool Next(void).И оно перезаписывается каждый раз, когда вызывается void Shuffle(void).У меня также есть целое число, которое является «текущим местоположением индекса», для увеличения при каждом размере пакета.

Теперь, очевидно, это не потокобезопасный код, если я не приму некоторые дополнительные меры предосторожности, чтобы сделать его таким.Таким образом, мой вопрос: гарантирует ли инфраструктура Mxnet, что вызовы итераторов не будут выполняться одновременно?Или мне самому позаботиться об этом?

...