| 171 | std::shared_mutex _mutex; |
| 172 | |
| 173 | std::vector<std::shared_ptr<const models::Model>> clone_models(Device device, |
| 174 | const std::vector<int>& device_index, |
| 175 | std::vector<std::shared_ptr<const models::Model>> cached_models, |
| 176 | size_t num_models_per_device = 1) { |
| 177 | std::vector<std::shared_ptr<const models::Model>> copied_models; |
| 178 | for (size_t i = 0; i < cached_models.size(); ++i) { |
| 179 | auto& model = const_cast<models::Model&>(*cached_models[i]); |
| 180 | auto copied_model = model.copy_to(device, device_index[i / num_models_per_device]); |
| 181 | copied_models.push_back(copied_model); |
| 182 | } |
| 183 | return copied_models; |
| 184 | } |
| 185 | |
| 186 | const std::shared_ptr<const models::Model>& model() const { |
| 187 | return _pool->get_first_replica().model(); |