MCPcopy Create free account
hub / github.com/catboost/catboost / ReadToDistributedObjectVec

Function ReadToDistributedObjectVec

catboost/cuda/cuda_lib/cuda_buffer.h:672–692  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

670
671 template <class T>
672 inline TVector<TDistributedObject<std::remove_const_t<T>>> ReadToDistributedObjectVec(const TStripeBuffer<T>& src) {
673 using T_ = std::remove_const_t<T>;
674 TVector<T_> tmp;
675 src.Read(tmp);
676 ui32 devCount = NCudaLib::GetCudaManager().GetDeviceCount();
677 TVector<TDistributedObject<T_>> result;
678
679 for (ui32 dev = 0; dev < devCount; ++dev) {
680 CB_ENSURE(src.GetMapping().DeviceSlice(dev).Size() == src.GetMapping().DeviceSlice(0).Size());
681 }
682 ui32 size = static_cast<ui32>(tmp.size() / devCount);
683
684 for (ui32 i = 0; i < size; ++i) {
685 TDistributedObject<T_> obj = NCudaLib::GetCudaManager().CreateDistributedObject<T_>();
686 for (ui32 dev = 0; dev < devCount; ++dev) {
687 obj.Set(dev, tmp[i + dev * size]);
688 }
689 result.push_back(obj);
690 }
691 return result;
692 }
693}

Callers 1

AddFeaturesMethod · 0.85

Calls 8

GetMappingMethod · 0.80
ReadMethod · 0.45
GetDeviceCountMethod · 0.45
SizeMethod · 0.45
DeviceSliceMethod · 0.45
sizeMethod · 0.45
SetMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected