Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
tianlh
LightGBM-DCU
Commits
da6c6ea3
Unverified
Commit
da6c6ea3
authored
Nov 07, 2020
by
Guolin Ke
Committed by
GitHub
Nov 07, 2020
Browse files
fix invalid read detected by valgrind (#3526)
Co-authored-by:
StrikerRUS
<
nekit94-12@hotmail.com
>
parent
bee732af
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
9 additions
and
4 deletions
+9
-4
src/treelearner/leaf_splits.hpp
src/treelearner/leaf_splits.hpp
+9
-4
No files found.
src/treelearner/leaf_splits.hpp
View file @
da6c6ea3
...
@@ -22,8 +22,13 @@ namespace LightGBM {
...
@@ -22,8 +22,13 @@ namespace LightGBM {
class
LeafSplits
{
class
LeafSplits
{
public:
public:
LeafSplits
(
data_size_t
num_data
,
const
Config
*
config
)
LeafSplits
(
data_size_t
num_data
,
const
Config
*
config
)
:
config_
(
config
),
num_data_in_leaf_
(
num_data
),
num_data_
(
num_data
),
:
deterministic_
(
false
),
num_data_in_leaf_
(
num_data
),
num_data_
(
num_data
),
data_indices_
(
nullptr
),
weight_
(
0
)
{
data_indices_
(
nullptr
),
weight_
(
0
)
{
if
(
config
!=
nullptr
)
{
deterministic_
=
config
->
deterministic
;
}
}
}
void
ResetNumData
(
data_size_t
num_data
)
{
void
ResetNumData
(
data_size_t
num_data
)
{
num_data_
=
num_data
;
num_data_
=
num_data
;
...
@@ -71,7 +76,7 @@ class LeafSplits {
...
@@ -71,7 +76,7 @@ class LeafSplits {
data_indices_
=
nullptr
;
data_indices_
=
nullptr
;
double
tmp_sum_gradients
=
0.0
f
;
double
tmp_sum_gradients
=
0.0
f
;
double
tmp_sum_hessians
=
0.0
f
;
double
tmp_sum_hessians
=
0.0
f
;
#pragma omp parallel for schedule(static, 512) reduction(+:tmp_sum_gradients, tmp_sum_hessians) if (num_data_in_leaf_ >= 1024 && !
config_->
deterministic)
#pragma omp parallel for schedule(static, 512) reduction(+:tmp_sum_gradients, tmp_sum_hessians) if (num_data_in_leaf_ >= 1024 && !deterministic
_
)
for
(
data_size_t
i
=
0
;
i
<
num_data_in_leaf_
;
++
i
)
{
for
(
data_size_t
i
=
0
;
i
<
num_data_in_leaf_
;
++
i
)
{
tmp_sum_gradients
+=
gradients
[
i
];
tmp_sum_gradients
+=
gradients
[
i
];
tmp_sum_hessians
+=
hessians
[
i
];
tmp_sum_hessians
+=
hessians
[
i
];
...
@@ -93,7 +98,7 @@ class LeafSplits {
...
@@ -93,7 +98,7 @@ class LeafSplits {
data_indices_
=
data_partition
->
GetIndexOnLeaf
(
leaf
,
&
num_data_in_leaf_
);
data_indices_
=
data_partition
->
GetIndexOnLeaf
(
leaf
,
&
num_data_in_leaf_
);
double
tmp_sum_gradients
=
0.0
f
;
double
tmp_sum_gradients
=
0.0
f
;
double
tmp_sum_hessians
=
0.0
f
;
double
tmp_sum_hessians
=
0.0
f
;
#pragma omp parallel for schedule(static, 512) reduction(+:tmp_sum_gradients, tmp_sum_hessians) if (num_data_in_leaf_ >= 1024 && !
config_->
deterministic)
#pragma omp parallel for schedule(static, 512) reduction(+:tmp_sum_gradients, tmp_sum_hessians) if (num_data_in_leaf_ >= 1024 && !deterministic
_
)
for
(
data_size_t
i
=
0
;
i
<
num_data_in_leaf_
;
++
i
)
{
for
(
data_size_t
i
=
0
;
i
<
num_data_in_leaf_
;
++
i
)
{
const
data_size_t
idx
=
data_indices_
[
i
];
const
data_size_t
idx
=
data_indices_
[
i
];
tmp_sum_gradients
+=
gradients
[
idx
];
tmp_sum_gradients
+=
gradients
[
idx
];
...
@@ -146,7 +151,7 @@ class LeafSplits {
...
@@ -146,7 +151,7 @@ class LeafSplits {
private:
private:
const
Config
*
config
_
;
bool
deterministic
_
;
/*! \brief current leaf index */
/*! \brief current leaf index */
int
leaf_index_
;
int
leaf_index_
;
/*! \brief number of data on current leaf */
/*! \brief number of data on current leaf */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment