Skip to content

Commit 3671d11

Browse files
authored
remove tmp fp32 var for gaussian_random (#46033)
1 parent f3206b0 commit 3671d11

File tree

3 files changed

+9
-43
lines changed

3 files changed

+9
-43
lines changed

python/paddle/fluid/initializer.py

Lines changed: 7 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -374,68 +374,36 @@ def forward(self, var, block=None):
374374
["uint16", "float16", "float32", "float64"],
375375
"guassian_random")
376376

377-
# to be compatible of fp16 initalizers
378-
if var.dtype in [VarDesc.VarType.FP16, VarDesc.VarType.BF16]:
379-
out_dtype = VarDesc.VarType.FP32
380-
out_var = block.create_var(name=unique_name.generate(".".join(
381-
['normal_init', var.name, 'tmp'])),
382-
shape=var.shape,
383-
dtype=out_dtype,
384-
type=VarDesc.VarType.LOD_TENSOR,
385-
persistable=False)
386-
else:
387-
out_dtype = var.dtype
388-
out_var = var
389-
390377
if self._seed == 0:
391378
self._seed = block.program.random_seed
392379

393380
if in_dygraph_mode():
394381
place = _current_expected_place()
395382
out_var = _C_ops.gaussian_random(var.shape, self._mean,
396383
self._std_dev, self._seed,
397-
out_dtype, place)
398-
399-
if var.dtype in [VarDesc.VarType.FP16, VarDesc.VarType.BF16]:
400-
var_tmp = _C_ops.cast(out_var, var.dtype)
401-
var_tmp._share_underline_tensor_to(var)
402-
else:
403-
out_var._share_underline_tensor_to(var)
384+
var.dtype, place)
385+
out_var._share_underline_tensor_to(var)
404386
return None
405387

406388
if _in_legacy_dygraph():
407389
out_var = _legacy_C_ops.gaussian_random(
408-
'shape', var.shape, 'dtype', out_dtype, 'mean', self._mean,
390+
'shape', var.shape, 'dtype', var.dtype, 'mean', self._mean,
409391
'std', self._std_dev, 'seed', self._seed, 'use_mkldnn', False)
410392

411-
if var.dtype in [VarDesc.VarType.FP16, VarDesc.VarType.BF16]:
412-
var_tmp = _legacy_C_ops.cast(out_var, 'in_dtype', out_var.dtype,
413-
'out_dtype', var.dtype)
414-
var_tmp._share_underline_tensor_to(var)
415-
else:
416-
out_var._share_underline_tensor_to(var)
393+
out_var._share_underline_tensor_to(var)
417394
return None
418395
else:
419396
op = block.append_op(type="gaussian_random",
420-
outputs={"Out": out_var},
397+
outputs={"Out": var},
421398
attrs={
422399
"shape": var.shape,
423-
"dtype": out_dtype,
400+
"dtype": var.dtype,
424401
"mean": self._mean,
425402
"std": self._std_dev,
426403
"seed": self._seed,
427404
"use_mkldnn": False
428405
},
429406
stop_gradient=True)
430-
431-
if var.dtype in [VarDesc.VarType.FP16, VarDesc.VarType.BF16]:
432-
block.append_op(type="cast",
433-
inputs={"X": out_var},
434-
outputs={"Out": var},
435-
attrs={
436-
"in_dtype": out_var.dtype,
437-
"out_dtype": var.dtype
438-
})
439407
var.op = op
440408
return op
441409

@@ -695,7 +663,7 @@ def forward(self, var, block=None):
695663
outputs={"Out": out_var},
696664
attrs={
697665
"shape": out_var.shape,
698-
"dtype": out_dtype,
666+
"dtype": out_var.dtype,
699667
"mean": 0.0,
700668
"std": std,
701669
"seed": self._seed

python/paddle/fluid/tests/unittests/test_initializer.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ def test_normal_initializer(self, dtype="float32"):
245245
name="param",
246246
initializer=initializer.NormalInitializer(
247247
2.3, 1.9, 123))
248-
num_ops = 2 if (dtype == "float16" or dtype == "uint16") else 1
248+
num_ops = 1
249249
self.assertEqual(len(block.ops), num_ops)
250250
init_op = block.ops[0]
251251
self.assertEqual(init_op.type, 'gaussian_random')
@@ -390,7 +390,6 @@ def test_xavier_initializer_fp16(self):
390390
"""Test the Xavier initializer with float16
391391
"""
392392
block = self.test_xavier_initializer_supplied_arguments("float16")
393-
self.assertTrue(check_cast_op(block.ops[1]))
394393

395394
def test_xavier_initializer_bf16(self):
396395
"""Test the Xavier initializer with bfloat16
@@ -400,7 +399,6 @@ def test_xavier_initializer_bf16(self):
400399
self.assertEqual(len(block_uniform.ops), 1)
401400
block_gaussian = self.test_xavier_initializer_supplied_arguments(
402401
"uint16", False)
403-
self.assertTrue(check_cast_op(block_gaussian.ops[1]))
404402

405403

406404
class TestMSRAInitializer(unittest.TestCase):

python/paddle/fluid/tests/unittests/test_initializer_nn.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ def test_normal_initializer(self, dtype="float32"):
398398
lod_level=0,
399399
name="param",
400400
initializer=initializer.Normal(2.3, 1.9))
401-
num_ops = 2 if dtype in ["float16", "uint16"] else 1
401+
num_ops = 1
402402
self.assertEqual(len(block.ops), num_ops)
403403
init_op = block.ops[0]
404404
self.assertEqual(init_op.type, 'gaussian_random')

0 commit comments

Comments
 (0)