| 129 | } |
| 130 | |
| 131 | bool read(MatrixPtr<V>& Y, MatrixPtr<V>& X, SArray<Key>& key) { |
| 132 | MatrixPtrList<V> data; |
| 133 | if (!data_prefetcher_.pop(&data)) return false; |
| 134 | CHECK_EQ(data.size(), 2); |
| 135 | Y = data[0]; |
| 136 | |
| 137 | // localizer |
| 138 | SArray<Key> uniq_key; |
| 139 | SArray<uint8> key_cnt; |
| 140 | Localizer<Key, V> localizer; |
| 141 | localizer.countUniqIndex(data[1], &uniq_key, &key_cnt); |
| 142 | |
| 143 | // filter keys |
| 144 | filter_.insertKeys(uniq_key, key_cnt); |
| 145 | key = filter_.queryKeys(uniq_key, key_freq_); |
| 146 | |
| 147 | // to local keys |
| 148 | X = localizer.remapIndex(key); |
| 149 | return true; |
| 150 | } |
| 151 | private: |
| 152 | int minibatch_size_ = 1000; |
| 153 | StreamReader<V> reader_; |
no test coverage detected