MCPcopy Create free account
hub / github.com/dmlc/xgboost / TestIterationRangeColumnSplit

Function TestIterationRangeColumnSplit

tests/cpp/predictor/test_predictor.cc:579–630  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

577} // anonymous namespace
578
579void TestIterationRangeColumnSplit(int world_size, bool use_gpu) {
580 std::size_t constexpr kRows = 1000, kCols = 20, kClasses = 4, kForest = 3, kIters = 10;
581 auto dmat = RandomDataGenerator(kRows, kCols, 0).Classes(kClasses).GenerateDMatrix(true);
582 Context ctx;
583 if (use_gpu) {
584 ctx = MakeCUDACtx(0);
585 }
586 auto learner = LearnerForTest(&ctx, dmat, kIters, kForest);
587
588 bool bound = false;
589 std::unique_ptr<Learner> sliced{learner->Slice(0, 3, 1, &bound)};
590 ASSERT_FALSE(bound);
591
592 // margin
593 HostDeviceVector<float> margin_predt_sliced;
594 HostDeviceVector<float> margin_predt_ranged;
595 sliced->Predict(dmat, true, &margin_predt_sliced, 0, 0, false, false, false, false, false);
596 learner->Predict(dmat, true, &margin_predt_ranged, 0, 3, false, false, false, false, false);
597 auto const &margin_sliced = margin_predt_sliced.HostVector();
598 auto const &margin_ranged = margin_predt_ranged.HostVector();
599
600 // Leaf
601 HostDeviceVector<float> leaf_predt_sliced;
602 HostDeviceVector<float> leaf_predt_ranged;
603 sliced->Predict(dmat, false, &leaf_predt_sliced, 0, 0, false, true, false, false, false);
604 learner->Predict(dmat, false, &leaf_predt_ranged, 0, 3, false, true, false, false, false);
605 auto const &leaf_sliced = leaf_predt_sliced.HostVector();
606 auto const &leaf_ranged = leaf_predt_ranged.HostVector();
607
608 Json ranged_model{Object{}};
609 learner->SaveModel(&ranged_model);
610 Json sliced_model{Object{}};
611 sliced->SaveModel(&sliced_model);
612
613#if !defined(XGBOOST_USE_NCCL)
614 if (use_gpu) {
615 GTEST_SKIP_("Not compiled with NCCL");
616 return;
617 }
618#endif // defined(XGBOOST_USE_NCCL)
619 collective::TestDistributedGlobal(world_size, [&] {
620 VerifyIterationRangeColumnSplit(use_gpu, ranged_model, sliced_model, kRows, kCols, kClasses,
621 margin_ranged, margin_sliced, leaf_ranged, leaf_sliced);
622 });
623
624#if defined(XGBOOST_USE_FEDERATED)
625 collective::TestFederatedGlobal(world_size, [&] {
626 VerifyIterationRangeColumnSplit(use_gpu, ranged_model, sliced_model, kRows, kCols, kClasses,
627 margin_ranged, margin_sliced, leaf_ranged, leaf_sliced);
628 });
629#endif // defined(XGBOOST_USE_FEDERATED)
630}
631
632void TestSparsePrediction(Context const *ctx, float sparsity) {
633 size_t constexpr kRows = 512, kCols = 128, kIters = 4;

Callers 1

TESTFunction · 0.85

Calls 10

RandomDataGeneratorClass · 0.85
MakeCUDACtxFunction · 0.85
LearnerForTestFunction · 0.85
TestDistributedGlobalFunction · 0.85
TestFederatedGlobalFunction · 0.85
GenerateDMatrixMethod · 0.80
PredictMethod · 0.80
SliceMethod · 0.45
SaveModelMethod · 0.45

Tested by

no test coverage detected