From e423444b4355f16fff5659f389652a62e4d60722 Mon Sep 17 00:00:00 2001 From: Pavel Tomanek Date: Wed, 15 Jan 2025 17:13:37 +0100 Subject: [PATCH] adding easyconfigs: Pillow-SIMD-10.4.0-GCCcore-13.2.0.eb, tensorboard-2.18.0-gfbf-2023b.eb, torchvision-0.17.0-foss-2023b.eb and patches: torchvision-0.17.0_fix-build-with-FFmpeg6.patch, torchvision-0.17.0_quantized_tol.patch --- .../Pillow-SIMD-10.4.0-GCCcore-13.2.0.eb | 48 +++++++++++++++ .../tensorboard-2.18.0-gfbf-2023b.eb | 59 +++++++++++++++++++ .../torchvision-0.17.0-foss-2023b.eb | 36 +++++++++++ ...vision-0.17.0_fix-build-with-FFmpeg6.patch | 36 +++++++++++ .../torchvision-0.17.0_quantized_tol.patch | 15 +++++ 5 files changed, 194 insertions(+) create mode 100644 easybuild/easyconfigs/p/Pillow-SIMD/Pillow-SIMD-10.4.0-GCCcore-13.2.0.eb create mode 100644 easybuild/easyconfigs/t/tensorboard/tensorboard-2.18.0-gfbf-2023b.eb create mode 100644 easybuild/easyconfigs/t/torchvision/torchvision-0.17.0-foss-2023b.eb create mode 100644 easybuild/easyconfigs/t/torchvision/torchvision-0.17.0_fix-build-with-FFmpeg6.patch create mode 100644 easybuild/easyconfigs/t/torchvision/torchvision-0.17.0_quantized_tol.patch diff --git a/easybuild/easyconfigs/p/Pillow-SIMD/Pillow-SIMD-10.4.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/p/Pillow-SIMD/Pillow-SIMD-10.4.0-GCCcore-13.2.0.eb new file mode 100644 index 00000000000..0abd176f2f2 --- /dev/null +++ b/easybuild/easyconfigs/p/Pillow-SIMD/Pillow-SIMD-10.4.0-GCCcore-13.2.0.eb @@ -0,0 +1,48 @@ +easyblock = 'PythonPackage' + +name = 'Pillow-SIMD' +version = '10.4.0' + +homepage = 'https://github.com/uploadcare/pillow-simd' +description = """Pillow is the 'friendly PIL fork' by Alex Clark and Contributors. + PIL is the Python Imaging Library by Fredrik Lundh and Contributors.""" + +toolchain = {'name': 'GCCcore', 'version': '13.2.0'} + +source_urls = ['https://github.com/uploadcare/pillow-simd/archive/'] +sources = ['%(version)s.tar.gz'] +checksums = ['8c7c3c0fc2952ff11b9a8c60365e098ee5334427dd5688c3584e77c25a7e1b3f'] + +builddependencies = [('binutils', '2.40')] + +dependencies = [ + ('Python', '3.11.5'), + ('libjpeg-turbo', '3.0.1'), + ('libpng', '1.6.40'), + ('zlib', '1.2.13'), + ('LibTIFF', '4.6.0'), + ('freetype', '2.13.2'), + ('libwebp', '1.3.2'), + ('OpenJPEG', '2.5.0'), + ('LittleCMS', '2.15'), +] + +use_pip = True +download_dep_fail = True + +# patch setup.py to prefix hardcoded /usr/* and /lib paths with value of %(sysroot) template +# (which will be empty if EasyBuild is not configured to use an alternate sysroot); +# see also https://gitlab.com/eessi/support/-/issues/9 +preinstallopts = """sed -i 's@"/usr/@"%(sysroot)s/usr/@g' setup.py && """ +preinstallopts += """sed -i 's@"/lib@"%(sysroot)s/lib@g' setup.py && """ + +options = {'modulename': 'PIL'} + +sanity_check_paths = { + 'files': [], + 'dirs': ['lib/python%(pyshortver)s/site-packages/PIL'], +} + +sanity_pip_check = True + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/t/tensorboard/tensorboard-2.18.0-gfbf-2023b.eb b/easybuild/easyconfigs/t/tensorboard/tensorboard-2.18.0-gfbf-2023b.eb new file mode 100644 index 00000000000..d4e1338f463 --- /dev/null +++ b/easybuild/easyconfigs/t/tensorboard/tensorboard-2.18.0-gfbf-2023b.eb @@ -0,0 +1,59 @@ +easyblock = 'PythonBundle' + +name = 'tensorboard' +version = '2.18.0' + +homepage = 'https://github.com/tensorflow/tensorboard' +description = """TensorBoard is a suite of web applications for inspecting and +understanding your TensorFlow runs and graphs.""" + +toolchain = {'name': 'gfbf', 'version': '2023b'} + +builddependencies = [ + ('poetry', '1.6.1'), +] + +dependencies = [ + ('Python', '3.11.5'), + ('SciPy-bundle', '2023.11'), + ('protobuf-python', '4.25.3'), + ('grpcio', '1.67.1'), + ('Markdown', '3.6'), +] + +use_pip = True +sanity_pip_check = True + +exts_list = [ + ('absl-py', '2.1.0', { + 'modulename': 'absl', + 'checksums': ['7820790efbb316739cde8b4e19357243fc3608a152024288513dd968d7d959ff'], + }), + ('cachetools', '5.5.0', { + 'checksums': ['2cc24fb4cbe39633fb7badd9db9ca6295d766d9c2995f245725a46715d050f2a'], + }), + ('pyasn1_modules', '0.4.1', { + 'checksums': ['c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c'], + }), + ('rsa', '4.9', { + 'checksums': ['e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21'], + }), + ('google_auth', '2.35.0', { + 'modulename': 'google.auth', + 'checksums': ['f4c64ed4e01e8e8b646ef34c018f8bf3338df0c8e37d8b3bba40e7f574a3278a'], + }), + ('tensorboard_data_server', '0.7.2', { + 'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl', + 'checksums': ['7e0610d205889588983836ec05dc098e80f97b7e7bbff7e994ebb78f578d0ddb'], + }), + ('Werkzeug', '3.1.0', { + 'source_tmpl': '%(namelower)s-%(version)s.tar.gz', + 'checksums': ['6f2a0d38f25ba5a75c36c45b4ae350c7a23b57e3b974e9eb2d6851f2c648c00d'], + }), + (name, version, { + 'source_tmpl': '%(name)s-%(version)s-py3-none-any.whl', + 'checksums': ['107ca4821745f73e2aefa02c50ff70a9b694f39f790b11e6f682f7d326745eab'], + }), +] + +moduleclass = 'lib' diff --git a/easybuild/easyconfigs/t/torchvision/torchvision-0.17.0-foss-2023b.eb b/easybuild/easyconfigs/t/torchvision/torchvision-0.17.0-foss-2023b.eb new file mode 100644 index 00000000000..7579a357707 --- /dev/null +++ b/easybuild/easyconfigs/t/torchvision/torchvision-0.17.0-foss-2023b.eb @@ -0,0 +1,36 @@ +name = 'torchvision' +version = '0.17.0' + +homepage = 'https://github.com/pytorch/vision' +description = " Datasets, Transforms and Models specific to Computer Vision" + +toolchain = {'name': 'foss', 'version': '2023b'} +toolchainopts = {'cstd': 'c++17'} + +source_urls = ['https://github.com/pytorch/vision/archive'] +sources = ['v%(version)s.tar.gz'] +patches = [ + '%(name)s-%(version)s_fix-build-with-FFmpeg6.patch', + '%(name)s-%(version)s_quantized_tol.patch' +] +checksums = [ + {'v0.17.0.tar.gz': '55e395d5c7d9bf7658c82ac633cac2224aa168e1bfe8bb5b2b2a296c792a3500'}, + {'torchvision-0.17.0_fix-build-with-FFmpeg6.patch': + '64404865a489c0348f79684419831ebd71ece7c7326a80184785578a368047b5'}, + {'torchvision-0.17.0_quantized_tol.patch': '991b959f7d5e0fd418a163fa3ad828a2b60a64d0ce894cf579847138b13b62af'}, +] + +builddependencies = [ + ('CMake', '3.27.6'), +] + +dependencies = [ + ('Python', '3.11.5'), + ('Python-bundle-PyPI', '2023.10'), + ('SciPy-bundle', '2023.11'), + ('FFmpeg', '6.0'), + ('Pillow-SIMD', '10.4.0'), + ('PyTorch', '2.1.2'), +] + +moduleclass = 'vis' diff --git a/easybuild/easyconfigs/t/torchvision/torchvision-0.17.0_fix-build-with-FFmpeg6.patch b/easybuild/easyconfigs/t/torchvision/torchvision-0.17.0_fix-build-with-FFmpeg6.patch new file mode 100644 index 00000000000..03fe3502ba1 --- /dev/null +++ b/easybuild/easyconfigs/t/torchvision/torchvision-0.17.0_fix-build-with-FFmpeg6.patch @@ -0,0 +1,36 @@ +From 86620bd84b872b76db0acafec167949dca03a29e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?= + +Date: Tue, 7 Nov 2023 10:43:11 +0100 +Subject: [PATCH] Fix build with ffmpeg 6.0 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Zoltán Böszörményi +--- + torchvision/csrc/io/decoder/stream.cpp | 11 ++--------- + 1 file changed, 2 insertions(+), 9 deletions(-) + +diff --git a/torchvision/csrc/io/decoder/stream.cpp b/torchvision/csrc/io/decoder/stream.cpp +index 0d625ef211c..8c914050587 100644 +--- a/torchvision/csrc/io/decoder/stream.cpp ++++ b/torchvision/csrc/io/decoder/stream.cpp +@@ -63,15 +63,8 @@ int Stream::openCodec(std::vector* metadata, int num_threads) { + codecCtx_->thread_count = num_threads; + } else { + // otherwise set sensible defaults +- // with the special case for the different MPEG4 codecs +- // that don't have threading context functions +- if (codecCtx_->codec->capabilities & AV_CODEC_CAP_INTRA_ONLY) { +- codecCtx_->thread_type = FF_THREAD_FRAME; +- codecCtx_->thread_count = 2; +- } else { +- codecCtx_->thread_count = 8; +- codecCtx_->thread_type = FF_THREAD_SLICE; +- } ++ codecCtx_->thread_count = 8; ++ codecCtx_->thread_type = FF_THREAD_SLICE; + } + + int ret; \ No newline at end of file diff --git a/easybuild/easyconfigs/t/torchvision/torchvision-0.17.0_quantized_tol.patch b/easybuild/easyconfigs/t/torchvision/torchvision-0.17.0_quantized_tol.patch new file mode 100644 index 00000000000..040e82cd81f --- /dev/null +++ b/easybuild/easyconfigs/t/torchvision/torchvision-0.17.0_quantized_tol.patch @@ -0,0 +1,15 @@ +Increase the toleances for quantized model that failed tests +The absolute error just barely exceed the default 0.02, but given the small numbers +the relative tolerance is high, thus the relative high tolerance of 0.5 +author: micketeer@gmail.com +--- test/test_models.py.orig 2024-03-21 10:54:03.467723691 +0000 ++++ test/test_models.py 2024-03-21 10:53:49.857749169 +0000 +@@ -987,7 +987,7 @@ + out = model(x) + + if model_name not in quantized_flaky_models: +- _assert_expected(out.cpu(), model_name + "_quantized", prec=2e-2) ++ _assert_expected(out.cpu(), model_name + "_quantized", prec=5e-1) + assert out.shape[-1] == 5 + _check_jit_scriptable(model, (x,), unwrapper=script_model_unwrapper.get(model_name, None), eager_out=out) + _check_fx_compatible(model, x, eager_out=out) \ No newline at end of file