| 281 | } |
| 282 | |
| 283 | THolder<TStopCudaManagerCallback> StartCudaManager(const NCudaLib::TDeviceRequestConfig& requestConfig, |
| 284 | const ELoggingLevel loggingLevel) { |
| 285 | TSetLogging inThisScope(loggingLevel); |
| 286 | |
| 287 | #if defined(USE_MPI) |
| 288 | CB_ENSURE(GetMpiManager().IsMaster(), "Error: can't run cudaManager on slave"); |
| 289 | #endif |
| 290 | |
| 291 | auto& manager = NCudaLib::GetCudaManager(); |
| 292 | manager.Start(requestConfig); |
| 293 | manager.WaitComplete(); |
| 294 | |
| 295 | ui32 devCount = manager.GetDeviceCount(); |
| 296 | for (ui32 dev = 0; dev < devCount; ++dev) { |
| 297 | CATBOOST_INFO_LOG << "Free memory on device #" << dev << " " << manager.FreeMemoryMb(dev) << "MB" << Endl; |
| 298 | } |
| 299 | InitMemPerformanceTables(manager); |
| 300 | |
| 301 | return MakeHolder<TStopCudaManagerCallback>(); |
| 302 | } |
| 303 | |
| 304 | THolder<TStopCudaManagerCallback> StartCudaManager(const ELoggingLevel loggingLevel) { |
| 305 | return StartCudaManager(NCudaLib::GetDefaultDeviceRequestConfig(), loggingLevel); |