# IT4Innovations
# LK 2023

name = 'PyTorch'
version = '1.13.1'

homepage = 'https://pytorch.org/'
description = """Tensors and Dynamic neural networks in Python with strong GPU acceleration.
PyTorch is a deep learning framework that puts Python first."""

toolchain = {'name': 'foss', 'version': '2022b'}

source_urls = [GITHUB_RELEASE]
sources = ['%(namelower)s-v%(version)s.tar.gz']
patches = [
    'PyTorch-1.7.0_disable-dev-shm-test.patch',
    'PyTorch-1.10.0_fix-kineto-crash.patch',
    'PyTorch-1.11.0_fix-fp16-quantization-without-fbgemm.patch',
    'PyTorch-1.11.1_skip-test_init_from_local_shards.patch',
    'PyTorch-1.12.0_fix-EmbeddingBag-without-fbgemm.patch',
    'PyTorch-1.12.1_add-hypothesis-suppression.patch',
    'PyTorch-1.12.1_fix-skip-decorators.patch',
    'PyTorch-1.12.1_fix-test_cpp_extensions_jit.patch',
    'PyTorch-1.12.1_fix-test_wishart_log_prob.patch',
    'PyTorch-1.12.1_fix-TestTorch.test_to.patch',
    'PyTorch-1.12.1_fix-use-after-free-in-tensorpipe-agent.patch',
    'PyTorch-1.12.1_fix-vsx-loadu.patch',
    'PyTorch-1.12.1_fix-vsx-vector-funcs.patch',
    'PyTorch-1.12.1_skip-test_round_robin.patch',
    'PyTorch-1.13.1_disable-test-sharding.patch',
    'PyTorch-1.13.1_fix-flaky-jit-test.patch',
    'PyTorch-1.13.1_fix-fsdp-fp16-test.patch',
    'PyTorch-1.13.1_fix-gcc-12-missing-includes.patch',
    'PyTorch-1.13.1_fix-gcc-12-warning-in-fbgemm.patch',
    'PyTorch-1.13.1_fix-numpy-deprecations.patch',
    'PyTorch-1.13.1_fix-protobuf-dependency.patch',
    'PyTorch-1.13.1_fix-pytest-args.patch',
    'PyTorch-1.13.1_fix-python-3.11-compat.patch',
    'PyTorch-1.13.1_fix-test-ops-conf.patch',
    'PyTorch-1.13.1_fix-warning-in-test-cpp-api.patch',
    'PyTorch-1.13.1_increase-tolerance-test_ops.patch',
    'PyTorch-1.13.1_install-vsx-vec-headers.patch',
    'PyTorch-1.13.1_no-cuda-stubs-rpath.patch',
    'PyTorch-1.13.1_remove-flaky-test-in-testnn.patch',
    'PyTorch-1.13.1_skip-failing-grad-test.patch',
    'PyTorch-1.13.1_skip-failing-singular-grad-test.patch',
    'PyTorch-1.13.1_skip-tests-without-fbgemm.patch',
]
checksums = [
    {'pytorch-v1.13.1.tar.gz': 'dbc229ee9750b02b514937d017744443a269ea0241ed3f32b9af0703589d25d4'},
    {'PyTorch-1.7.0_disable-dev-shm-test.patch': '622cb1eaeadc06e13128a862d9946bcc1f1edd3d02b259c56a9aecc4d5406b8a'},
    {'PyTorch-1.10.0_fix-kineto-crash.patch': 'dc467333b28162149af8f675929d8c6bf219f23230bfc0d39af02ba4f6f882eb'},
    {'PyTorch-1.11.0_fix-fp16-quantization-without-fbgemm.patch':
     'cc526130b6446bbbf5f0f7372d3aeee3e7d4c4d6e471524dff028b430b152934'},
    {'PyTorch-1.11.1_skip-test_init_from_local_shards.patch':
     '4aeb1b0bc863d4801b0095cbce69f8794066748f0df27c6aaaf729c5ecba04b7'},
    {'PyTorch-1.12.0_fix-EmbeddingBag-without-fbgemm.patch':
     '090598592283e3fc46ee08a68b6a6afe07be41b26514afba51834408bf1c98ed'},
    {'PyTorch-1.12.1_add-hypothesis-suppression.patch':
     'e71ffb94ebe69f580fa70e0de84017058325fdff944866d6bd03463626edc32c'},
    {'PyTorch-1.12.1_fix-skip-decorators.patch': 'e3ca6e42b2fa592ea095939fb59ab875668a058479407db3f3684cc5c6f4146c'},
    {'PyTorch-1.12.1_fix-test_cpp_extensions_jit.patch':
     '1efc9850c431d702e9117d4766277d3f88c5c8b3870997c9974971bce7f2ab83'},
    {'PyTorch-1.12.1_fix-test_wishart_log_prob.patch':
     'cf475ae6e6234b96c8d1bf917597c5176c94b3ccd940b72f2e1cd0c979580f45'},
    {'PyTorch-1.12.1_fix-TestTorch.test_to.patch': '75f27987c3f25c501e719bd2b1c70a029ae0ee28514a97fe447516aee02b1535'},
    {'PyTorch-1.12.1_fix-use-after-free-in-tensorpipe-agent.patch':
     '0bd7e88b92c4c6f0fecf01746009858ba19f2df68b10b88c41485328a531875d'},
    {'PyTorch-1.12.1_fix-vsx-loadu.patch': '8bfe3c94ada1dd1f7974a1261a8b576fb7ae944050fa1c7830fca033831123b2'},
    {'PyTorch-1.12.1_fix-vsx-vector-funcs.patch': 'caccbf60f62eac313896c1eaec78b08f5d0fdfcb907079087490bb13d1561aa2'},
    {'PyTorch-1.12.1_skip-test_round_robin.patch': '63d4849b78605aa088fdff695637d9473ea60dee603a3ff7f788690d70c55349'},
    {'PyTorch-1.13.1_disable-test-sharding.patch': 'df2074adeba47998ce2993d99ca64eb6f1c79ab7057f553b436efdec264d3572'},
    {'PyTorch-1.13.1_fix-flaky-jit-test.patch': '71efdeb29b5e5b4982c9f5cb2182733654a34d52f85bb5487bc4d7d99b86101b'},
    {'PyTorch-1.13.1_fix-fsdp-fp16-test.patch': '8ae68e60d6e1f92f50322b7f0381c7e65251fba32d7606e3a238a36a2f55b5cf'},
    {'PyTorch-1.13.1_fix-gcc-12-missing-includes.patch':
     '18df8c61ecaa9fb659346c1e172828bca6b069f0145bb8f6a36b0a23b7bef0a6'},
    {'PyTorch-1.13.1_fix-gcc-12-warning-in-fbgemm.patch':
     '5c7be91a6096083a0b1315efe0001537499c600f1f569953c6a2c7f4cc1d0910'},
    {'PyTorch-1.13.1_fix-numpy-deprecations.patch':
     'f461b570efe0434ddd806bf2fa7020eb213e3ed89d0eb4403e076f4276ba2a46'},
    {'PyTorch-1.13.1_fix-protobuf-dependency.patch':
     '8bd755a0cab7233a243bc65ca57c9630dfccdc9bf8c9792f0de4e07a644fcb00'},
    {'PyTorch-1.13.1_fix-pytest-args.patch': 'd3e3c841cf8d73683750f29326f2be56ee0bb5df7ff522baf7d7c3f301a91ec2'},
    {'PyTorch-1.13.1_fix-python-3.11-compat.patch':
     'fa4eb0e27e00a90bb217b77c0023089c4659c03f37d781ab4a681bdcb4f0432f'},
    {'PyTorch-1.13.1_fix-test-ops-conf.patch': 'df652eec7753864ebebbfeca546929a53e3fb8f24259d5c9b964266a8551198c'},
    {'PyTorch-1.13.1_fix-warning-in-test-cpp-api.patch':
     'bdde0f2105215c95a54de64ec4b1a4520528510663174fef6d5b900eb1db3937'},
    {'PyTorch-1.13.1_increase-tolerance-test_ops.patch':
     'c909fdfc2b12df457e1eb5514265ffec3eab653994949416f3f048668421e223'},
    {'PyTorch-1.13.1_install-vsx-vec-headers.patch':
     '7b678f54bb947afd4767f5877ac424b4b94ce5db609ea20f5a869ccf4027035f'},
    {'PyTorch-1.13.1_no-cuda-stubs-rpath.patch': '4c636059850fc9d1ecb27ce275f8aad5d5b6fdc19e35aff0c25b86cb3201352a'},
    {'PyTorch-1.13.1_remove-flaky-test-in-testnn.patch':
     'be83ff61fe2dedab6d49c232936d5622df81ab49154264490021c6c828e53315'},
    {'PyTorch-1.13.1_skip-failing-grad-test.patch': '6681200f9509893cb9231b5c93ac9bc5e6d9d9ae4febefca52e7cbc843ba8f51'},
    {'PyTorch-1.13.1_skip-failing-singular-grad-test.patch':
     '72688a57b2bb617665ad1a1d5e362c5111ae912c10936bb38a089c0204729f48'},
    {'PyTorch-1.13.1_skip-tests-without-fbgemm.patch':
     '481e595f673baf8ae58b41697a6792b83048b0264aa79b422f48cd8c22948bb7'},
]

osdependencies = [OS_PKG_IBVERBS_DEV]

builddependencies = [
    ('CMake', '3.24.3'),
    ('hypothesis', '6.68.2'),
    # For tests
    ('pytest-rerunfailures', '12.0'),
    ('pytest-shard', '0.1.2'),
]

dependencies = [
    ('Ninja', '1.11.1'),  # Required for JIT compilation of C++ extensions
    ('Python', '3.10.8'),
    ('protobuf', '23.0'),
    ('protobuf-python', '4.23.0'),
    ('pybind11', '2.10.3'),
#   ('SciPy-bundle', '2023.02'),
    ('PyYAML', '6.0'),
    ('MPFR', '4.2.0'),
    ('GMP', '6.2.1'),
    ('numactl', '2.0.16'),
    ('FFmpeg', '5.1.2'),
    ('Pillow', '9.4.0'),
    ('expecttest', '0.1.3'),
]

custom_opts = ['CMAKE_CXX_STANDARD=17']

excluded_tests = {
    '': [
        # This test seems to take too long on NVIDIA Ampere at least.
        'distributed/test_distributed_spawn',
        # Broken on CUDA 11.6/11.7: https://github.com/pytorch/pytorch/issues/75375
        'distributions/test_constraints',
        # no xdoctest
        'doctests',
        # failing on broadwell
        # See https://github.com/easybuilders/easybuild-easyconfigs/issues/17712
        'test_native_mha',
        # intermittent failures on various systems
        # See https://github.com/easybuilders/easybuild-easyconfigs/issues/17712
        'distributed/rpc/test_tensorpipe_agent',
    ]
}

runtest = 'cd test && PYTHONUNBUFFERED=1 %(python)s run_test.py --continue-through-error  --verbose %(excluded_tests)s'

# Especially test_quantization has a few corner cases that are triggered by the random input values,
# those cannot be easily avoided, see https://github.com/pytorch/pytorch/issues/107030
# So allow a low number of tests to fail as the tests "usually" succeed
max_failed_tests = 2

tests = ['PyTorch-check-cpp-extension.py']

moduleclass = 'ai'
