Skip to content

Commit 11230bc

Browse files
authored
Merge pull request #3371 from Flamefire/tensorflow-tmp-dir
Use build dir for big files/folders while building TensorFlow
2 parents 52e3c0d + e53a3e2 commit 11230bc

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

easybuild/easyblocks/t/tensorflow.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import re
3636
import stat
3737
import tempfile
38+
from contextlib import contextmanager
3839
from itertools import chain
3940

4041
import easybuild.tools.environment as env
@@ -451,6 +452,18 @@ def setup_build_dirs(self):
451452
self.wrapper_dir = os.path.join(parent_dir, 'wrapper_bin')
452453
mkdir(self.wrapper_dir)
453454

455+
@contextmanager
456+
def set_tmp_dir(self):
457+
# TF uses the temporary folder, which becomes quite large (~2 GB) so use the build folder explicitely.
458+
old_tmpdir = os.environ['TMPDIR']
459+
tmpdir = os.path.join(self.builddir, 'tmpdir')
460+
mkdir(tmpdir)
461+
os.environ['TMPDIR'] = tmpdir
462+
try:
463+
yield tmpdir
464+
finally:
465+
os.environ['TMPDIR'] = old_tmpdir
466+
454467
def configure_step(self):
455468
"""Custom configuration procedure for TensorFlow."""
456469

@@ -940,11 +953,12 @@ def build_step(self):
940953
+ ['//tensorflow/tools/pip_package:build_pip_package']
941954
)
942955

943-
run_cmd(' '.join(cmd), log_all=True, simple=True, log_ok=True)
956+
with self.set_tmp_dir():
957+
run_cmd(' '.join(cmd), log_all=True, simple=True, log_ok=True)
944958

945-
# run generated 'build_pip_package' script to build the .whl
946-
cmd = "bazel-bin/tensorflow/tools/pip_package/build_pip_package %s" % self.builddir
947-
run_cmd(cmd, log_all=True, simple=True, log_ok=True)
959+
# run generated 'build_pip_package' script to build the .whl
960+
cmd = "bazel-bin/tensorflow/tools/pip_package/build_pip_package %s" % self.builddir
961+
run_cmd(cmd, log_all=True, simple=True, log_ok=True)
948962

949963
def test_step(self):
950964
"""Run TensorFlow unit tests"""
@@ -1067,7 +1081,8 @@ def test_step(self):
10671081
+ test_targets
10681082
)
10691083

1070-
stdouterr, ec = run_cmd(cmd, log_ok=False, simple=False)
1084+
with self.set_tmp_dir():
1085+
stdouterr, ec = run_cmd(cmd, log_ok=False, simple=False)
10711086
if ec:
10721087
fail_msg = 'Tests on %s (cmd: %s) failed with exit code %s and output:\n%s' % (
10731088
device, cmd, ec, stdouterr)
@@ -1104,7 +1119,7 @@ def test_step(self):
11041119
def install_step(self):
11051120
"""Custom install procedure for TensorFlow."""
11061121
# find .whl file that was built, and install it using 'pip install'
1107-
if ("-rc" in self.version):
1122+
if "-rc" in self.version:
11081123
whl_version = self.version.replace("-rc", "rc")
11091124
else:
11101125
whl_version = self.version

0 commit comments

Comments
 (0)