For histograms, opting into maximum shared memory available per block. (#5491)

This commit is contained in:
Andy Adinets
2020-04-21 04:56:42 +02:00
committed by GitHub
parent 9c1103e06c
commit 73142041b9
6 changed files with 54 additions and 31 deletions

View File

@@ -27,7 +27,7 @@ void TestDeterminsticHistogram() {
auto rounding = CreateRoundingFactor<Gradient>(gpair.DeviceSpan());
BuildGradientHistogram(page->GetDeviceAccessor(0), gpair.DeviceSpan(), ridx,
d_histogram, rounding, true);
d_histogram, rounding);
for (size_t i = 0; i < kRounds; ++i) {
dh::device_vector<Gradient> new_histogram(kBins * kCols);
@@ -35,7 +35,7 @@ void TestDeterminsticHistogram() {
auto rounding = CreateRoundingFactor<Gradient>(gpair.DeviceSpan());
BuildGradientHistogram(page->GetDeviceAccessor(0), gpair.DeviceSpan(), ridx,
d_histogram, rounding, true);
d_histogram, rounding);
for (size_t j = 0; j < new_histogram.size(); ++j) {
ASSERT_EQ(((Gradient)new_histogram[j]).GetGrad(),
@@ -50,7 +50,7 @@ void TestDeterminsticHistogram() {
gpair.SetDevice(0);
dh::device_vector<Gradient> baseline(kBins * kCols);
BuildGradientHistogram(page->GetDeviceAccessor(0), gpair.DeviceSpan(), ridx,
dh::ToSpan(baseline), rounding, true);
dh::ToSpan(baseline), rounding);
for (size_t i = 0; i < baseline.size(); ++i) {
EXPECT_NEAR(((Gradient)baseline[i]).GetGrad(), ((Gradient)histogram[i]).GetGrad(),
((Gradient)baseline[i]).GetGrad() * 1e-3);

View File

@@ -101,7 +101,6 @@ void TestBuildHist(bool use_shared_memory_histograms) {
maker.hist.AllocateHistogram(0);
maker.gpair = gpair.DeviceSpan();
maker.use_shared_memory_histograms = use_shared_memory_histograms;
maker.BuildHist(0);
DeviceHistogram<GradientSumT> d_hist = maker.hist;