GithubHelp home page GithubHelp logo

ucx-split-feedstock's Introduction

About ucx-split-feedstock

Feedstock license: BSD-3-Clause

About ucx-split

Home: https://github.com/openucx/ucx

Package license: BSD-3-Clause

Summary: Unified Communication X.

Development: https://github.com/openucx/ucx

Documentation: https://openucx.readthedocs.io/ About ucx

Home: https://openucx.org

Package license: BSD-3-Clause

Summary: Unified Communication X.

Development: https://github.com/openucx/ucx

Documentation: https://openucx.readthedocs.io/

Current build status

Travis linux
Azure
VariantStatus
linux_64_c_compiler_version10cdt_namecos7cuda_compilernvcccuda_compiler_version11.1cxx_compiler_version10 variant
linux_64_c_compiler_version10cdt_namecos7cuda_compilernvcccuda_compiler_version11.2cxx_compiler_version10 variant
linux_64_c_compiler_version12cdt_namecos7cuda_compilercuda-nvcccuda_compiler_version12.0cxx_compiler_version12 variant
linux_64_c_compiler_version7cdt_namecos6cuda_compilernvcccuda_compiler_version10.2cxx_compiler_version7 variant
linux_64_c_compiler_version9cdt_namecos7cuda_compilernvcccuda_compiler_version11.0cxx_compiler_version9 variant
linux_aarch64_c_compiler_version10cuda_compilernvcccuda_compiler_version11.2cxx_compiler_version10 variant
linux_ppc64le_c_compiler_version10cuda_compilernvcccuda_compiler_version11.2cxx_compiler_version10 variant

Current release info

Name Downloads Version Platforms
Conda Recipe Conda Downloads Conda Version Conda Platforms

Installing ucx-split

Installing ucx-split from the conda-forge channel can be achieved by adding conda-forge to your channels with:

conda config --add channels conda-forge
conda config --set channel_priority strict

Once the conda-forge channel has been enabled, ucx can be installed with conda:

conda install ucx

or with mamba:

mamba install ucx

It is possible to list all of the versions of ucx available on your platform with conda:

conda search ucx --channel conda-forge

or with mamba:

mamba search ucx --channel conda-forge

Alternatively, mamba repoquery may provide more information:

# Search all versions available on your platform:
mamba repoquery search ucx --channel conda-forge

# List packages depending on `ucx`:
mamba repoquery whoneeds ucx --channel conda-forge

# List dependencies of `ucx`:
mamba repoquery depends ucx --channel conda-forge

About conda-forge

Powered by NumFOCUS

conda-forge is a community-led conda channel of installable packages. In order to provide high-quality builds, the process has been automated into the conda-forge GitHub organization. The conda-forge organization contains one repository for each of the installable packages. Such a repository is known as a feedstock.

A feedstock is made up of a conda recipe (the instructions on what and how to build the package) and the necessary configurations for automatic building using freely available continuous integration services. Thanks to the awesome service provided by Azure, GitHub, CircleCI, AppVeyor, Drone, and TravisCI it is possible to build and upload installable packages to the conda-forge Anaconda-Cloud channel for Linux, Windows and OSX respectively.

To manage the continuous integration and simplify feedstock maintenance conda-smithy has been developed. Using the conda-forge.yml within this repository, it is possible to re-render all of this feedstock's supporting files (e.g. the CI configuration files) with conda smithy rerender.

For more information please check the conda-forge documentation.

Terminology

feedstock - the conda recipe (raw material), supporting scripts and CI configuration.

conda-smithy - the tool which helps orchestrate the feedstock. Its primary use is in the construction of the CI .yml files and simplify the management of many feedstocks.

conda-forge - the place where the feedstock and smithy live and work to produce the finished article (built conda distributions)

Updating ucx-split-feedstock

If you would like to improve the ucx-split recipe or build a new package version, please fork this repository and submit a PR. Upon submission, your changes will be run on the appropriate platforms to give the reviewer an opportunity to confirm that the changes result in a successful build. Once merged, the recipe will be re-built and uploaded automatically to the conda-forge channel, whereupon the built conda packages will be available for everybody to install and use from the conda-forge channel. Note that all branches in the conda-forge/ucx-split-feedstock are immediately built and any created packages are uploaded, so PRs should be based on branches in forks and branches in the main repository should only be used to build distinct package versions.

In order to produce a uniquely identifiable distribution:

  • If the version of a package is not being increased, please add or increase the build/number.
  • If the version of a package is being increased, please remember to return the build/number back to 0.

Feedstock Maintainers

ucx-split-feedstock's People

Contributors

conda-forge-admin avatar conda-forge-curator[bot] avatar conda-forge-webservices[bot] avatar github-actions[bot] avatar jakirkham avatar leofang avatar matthiasdiener avatar pentschev avatar quasiben avatar regro-cf-autotick-bot avatar xhochy avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ucx-split-feedstock's Issues

Building with mlx5 Direct Verbs support

Currently we are not building with mlx5 Direct Verbs support. This would be useful in scenarios where Mellanox NICs are available as it could give us a performance boost. To do this we would need the following.

  1. CDT for libmlx5
  2. CDT for headers (no libmlx5-devel in CentOS 6?)
  3. --with-mlx5-dv to ./configure.

Both 1 and 3 seem straightforward (though there may be other issues). It's unclear how to address 2 currently.

Building with CMA

While PR ( #64 ) added the --enable-cma flag, it hasn't been included in the builds as can be seen on CI or the build logs thereof. The reason being, this requires the functions process_vm_readv and process_vm_writev need to be available, which UCX checks for here. These functions are added in GLIBC version 2.15. However CentOS 6 uses GLIBC version 2.12, which is not new enough to have these features. Though CentOS 7 uses GLIBC version 2.17, which should include these functions.

Build w/OpenMP?

Noticed in recent builds that UCX looks for OpenMP support, which we currently are not building with.

Looking at UCX source it seems OpenMP is mainly used for testing/benchmarking and not in the library (though could be wrong about this). If that's true, there probably isn't a need to build against OpenMP.

Still wanted to raise the question in case I've missed something. Do we want to build with OpenMP? Would that be useful?

Building with KNEM

Currently we are not building with KNEM support in UCX. KNEM is a kernel module providing high-performance, large transfers. This would supply another UCT transport protocol that UCX could use optionally (if supported). Also this is used by various MPI implementations. So likely would be relevant for issue ( conda-forge/openmpi-feedstock#42 ) as well.

Provide variant in build string or depend on cudatoolkit

Solution to issue cannot be found in the documentation.

  • I checked the documentation.

Issue

At the moment, conda and mamba resolve to reproducible random ucx realizations.

conda install -c conda-forge openmpi

installs the cpu version whereas mamba installs the gpu version with cudatoolkit.

ucx-proc can be used to force a version but it's never pulled by default so it never shows up in the resolution plan so choosing the right ucx variant is not obvious.

I propose 3 ways to solve the problem (either would be fine, multiple are possible):

  1. Instead of creating a dummy ucx-proc package with build string corresponding to the variant you want, just put that variant in ucx build string. ucx=*=cuda_hXXXXXX is much easier to spot than a package that never appears anywhere.
  2. Make ucx-proc a dependency of ucx so that when resolver display a plan, ucx-proc always appears in the package list.
  3. Remove ucx-proc and constrain the ucx variant to the existence of cudatoolkit. So if there is no cudatoolkit in the environment, the cpu variant is always chosen and conversely if it is present, the cuda variant is chosen.

At any rate, ucx pulling cudatoolkit is poor.

Installed packages

None.

Environment info

None.

valid run constraint?

Is this line

cudatoolkit {{ cuda_compiler_version }}  # [cuda_compiler_version not in ("None", "11.2")]

a valid run constraint or do we need

cudatoolkit =={{ cuda_compiler_version }}.*  # [cuda_compiler_version not in ("None", "11.2")]

I am seeing mamba fail weirdly on this in some cases.

Reuse GPU build on CPU

Given how UCX is architected (using dlopen for communication protocol backends), it may make sense to build GPU support even in the CPU only case and simply make cudatoolkit an optional requirement. This way if cudatoolkit is not installed, the GPU parts are simply not used. So it would work just as well when a GPU is not available.

Though one thing we still need to check is how UCX behaves when built under different CUDA versions.

Using intrinsics

UCX allows building with intrinsics. According to UCX devs this improves performance slightly (a few percent). These include SSE and AVX options (./configure flags below). The Conda compilers usually enable these intrinsics in the compilations flags (along with a fallback for CPUs that don't support these intrinsics). If these flags are simply passing the compiler options we already pass, then enabling them through ./configure won't have an impact. However if UCX is doing something more clever, these flags may be needed in order to ensure intrinsics are added where UCX devs want them. We should investigate the impact of these flags and enable them if it makes sense.

  --with-avx              Use AVX compiler option.
  --with-sse41            Use SSE 4.1 compiler option.
  --with-sse42            Use SSE 4.2 compiler option.

ucx should depend on libnuma

Solution to issue cannot be found in the documentation.

  • I checked the documentation.

Issue

The UCX shared libraries depend on symbols from libnuma, however, libnuma is not automatically installed with UCX, and it is not always provided by the base system.

$ nm --undefined-only --demangle ~/mambaforge/pkgs/ucx-1.13.1-h30ec399_0/lib/libucs.so | rg numa
                 U numa_all_nodes_ptr@libnuma_1.2
                 U numa_allocate_cpumask@libnuma_1.2
                 U numa_bitmask_free@libnuma_1.2
                 U numa_bitmask_isbitset@libnuma_1.2
                 U numa_max_node@libnuma_1.1
                 U numa_node_to_cpus@libnuma_1.2
                 U numa_num_configured_cpus@libnuma_1.2

Installed packages

# packages in environment at /home/antoine/mambaforge/envs/pyarrow:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
abseil-cpp                20220623.0           h93e1e8c_4    conda-forge
aiobotocore               2.4.0              pyhd8ed1ab_0    conda-forge
aiohttp                   3.8.1           py310h5764c6d_1    conda-forge
aioitertools              0.11.0             pyhd8ed1ab_0    conda-forge
aiosignal                 1.2.0              pyhd8ed1ab_0    conda-forge
alabaster                 0.7.12                   pypi_0    pypi
archery                   0.1.0                     dev_0    <develop>
asttokens                 2.0.8              pyhd8ed1ab_0    conda-forge
async-timeout             4.0.2              pyhd8ed1ab_0    conda-forge
attrs                     22.1.0             pyh71513ae_1    conda-forge
autopep8                  1.7.0                    pypi_0    pypi
aws-c-auth                0.6.19               h590a338_2    conda-forge
aws-c-cal                 0.5.20               hb6568d2_2    conda-forge
aws-c-common              0.8.4                h166bdaf_0    conda-forge
aws-c-compression         0.2.15               hf3f2267_4    conda-forge
aws-c-event-stream        0.2.15               h1aaca40_5    conda-forge
aws-c-http                0.6.25               h2d647b7_0    conda-forge
aws-c-io                  0.13.6               h6f60407_2    conda-forge
aws-c-mqtt                0.7.13               h5aab154_2    conda-forge
aws-c-s3                  0.1.51               ha0bd9a9_7    conda-forge
aws-c-sdkutils            0.1.6                hf3f2267_0    conda-forge
aws-checksums             0.1.13               hf3f2267_4    conda-forge
aws-crt-cpp               0.18.15              h7bdbbfa_0    conda-forge
aws-sdk-cpp               1.9.379              hf2893d4_4    conda-forge
babel                     2.10.3                   pypi_0    pypi
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.1                pyhd3eb1b0_0    defaults
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
benchmark                 1.7.0                h27087fc_0    conda-forge
binutils_impl_linux-64    2.36.1               h193b22a_2    conda-forge
boost-cpp                 1.80.0               h75c5d50_0    conda-forge
boto3                     1.24.59            pyhd8ed1ab_0    conda-forge
botocore                  1.27.59            pyhd8ed1ab_0    conda-forge
brotli                    1.0.9                h166bdaf_7    conda-forge
brotli-bin                1.0.9                h166bdaf_7    conda-forge
brotlipy                  0.7.0           py310h5764c6d_1004    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
c-ares                    1.18.1               h7f98852_0    conda-forge
ca-certificates           2022.10.11           h06a4308_0    defaults
certifi                   2022.9.24          pyhd8ed1ab_0    conda-forge
cffi                      1.15.1          py310h255011f_0    conda-forge
charset-normalizer        2.1.1              pyhd8ed1ab_0    conda-forge
clang                     15.0.2               ha770c72_0    conda-forge
clang-15                  15.0.2          default_h2e3cab8_0    conda-forge
clangxx                   15.0.2          default_ha074a59_0    conda-forge
click                     8.1.3           py310hff52083_0    conda-forge
cloudpickle               2.2.0              pyhd8ed1ab_0    conda-forge
cmake                     3.24.2               h5432695_0    conda-forge
cmake-format              0.6.13                   pypi_0    pypi
cmakelang                 0.6.13                   pypi_0    pypi
crc32c                    2.3                      pypi_0    pypi
cryptography              38.0.3          py310h600f1e7_0    conda-forge
cython                    0.29.32         py310hd8f1fbe_0    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1                    pypi_0    pypi
deprecated                1.2.13                   pypi_0    pypi
docutils                  0.19                     pypi_0    pypi
executing                 1.0.0              pyhd8ed1ab_0    conda-forge
expat                     2.4.8                h27087fc_0    conda-forge
flake8                    5.0.4                    pypi_0    pypi
flask                     2.1.2                    pypi_0    pypi
flatbuffers               2.0.7                h27087fc_0    conda-forge
frozenlist                1.3.1           py310h5764c6d_0    conda-forge
fsspec                    2022.8.2           pyhd8ed1ab_0    conda-forge
gcc                       12.1.0              h9ea6d83_10    conda-forge
gcc_impl_linux-64         12.1.0              hea43390_16    conda-forge
gdb                       11.2            py310h01e0b26_0    conda-forge
gflags                    2.2.2             he1b5a44_1004    conda-forge
gitdb                     4.0.9                    pypi_0    pypi
github3-py                3.2.0                    pypi_0    pypi
gitpython                 3.1.27                   pypi_0    pypi
glog                      0.6.0                h6f12383_0    conda-forge
gmock                     1.11.0               h924138e_0    conda-forge
gmp                       6.2.1                h58526e2_0    conda-forge
google-cloud-cpp          2.4.0                h66391e6_0    conda-forge
googleapis-common-protos  1.56.0                   pypi_0    pypi
googleapis-storage-testbench 0.27.0                   pypi_0    pypi
grpc-cpp                  1.49.1               h27aab58_1    conda-forge
grpcio                    1.46.1                   pypi_0    pypi
gtest                     1.11.0               h924138e_0    conda-forge
gunicorn                  20.1.0                   pypi_0    pypi
gxx                       12.1.0              h9ea6d83_10    conda-forge
gxx_impl_linux-64         12.1.0              hea43390_16    conda-forge
hypothesis                6.47.1             pyhd8ed1ab_0    conda-forge
icu                       70.1                 h27087fc_0    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
imagesize                 1.4.1                    pypi_0    pypi
importlib-metadata        4.11.4          py310hff52083_0    conda-forge
iniconfig                 1.1.1              pyh9f0ad1d_0    conda-forge
ipython                   8.5.0              pyh41d4057_1    conda-forge
itsdangerous              2.1.2                    pypi_0    pypi
jedi                      0.18.1          py310hff52083_1    conda-forge
jinja2                    3.1.2                    pypi_0    pypi
jira                      3.4.1                    pypi_0    pypi
jmespath                  1.0.1              pyhd8ed1ab_0    conda-forge
julia                     0.5.7                    pypi_0    pypi
kernel-headers_linux-64   2.6.32              he073ed8_15    conda-forge
keyutils                  1.6.1                h166bdaf_0    conda-forge
krb5                      1.19.3               h08a2579_0    conda-forge
ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
libabseil                 20220623.0      cxx17_h48a1fff_4    conda-forge
libblas                   3.9.0           16_linux64_openblas    conda-forge
libbrotlicommon           1.0.9                h166bdaf_7    conda-forge
libbrotlidec              1.0.9                h166bdaf_7    conda-forge
libbrotlienc              1.0.9                h166bdaf_7    conda-forge
libcblas                  3.9.0           16_linux64_openblas    conda-forge
libclang-cpp15            15.0.2          default_h2e3cab8_0    conda-forge
libcrc32c                 1.1.2                h9c3ff4c_0    conda-forge
libcurl                   7.86.0               h2283fc2_1    conda-forge
libedit                   3.1.20210910         h7f8727e_0    defaults
libev                     4.33                 h516909a_1    conda-forge
libevent                  2.1.10               h28343ad_4    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-devel_linux-64     12.1.0              h1ec3361_16    conda-forge
libgcc-ng                 12.1.0              h8d9b700_16    conda-forge
libgfortran-ng            12.1.0              h69a702a_16    conda-forge
libgfortran5              12.1.0              hdcd56e2_16    conda-forge
libgomp                   12.1.0              h8d9b700_16    conda-forge
libgoogle-cloud           2.4.0                h66391e6_0    conda-forge
libgrpc                   1.49.1               h30feacc_1    conda-forge
libiconv                  1.17                 h166bdaf_0    conda-forge
liblapack                 3.9.0           16_linux64_openblas    conda-forge
libllvm15                 15.0.2               h503ea73_0    conda-forge
libnghttp2                1.47.0               hff17c54_1    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libopenblas               0.3.21          pthreads_h78a6416_3    conda-forge
libprotobuf               3.21.9               h6239696_0    conda-forge
libsanitizer              12.1.0              ha89aaad_16    conda-forge
libsqlite                 3.39.3               h753d276_0    conda-forge
libssh2                   1.10.0               hf14f497_3    conda-forge
libstdcxx-devel_linux-64  12.1.0              h1ec3361_16    conda-forge
libstdcxx-ng              12.1.0              ha89aaad_16    conda-forge
libthrift                 0.16.0               he500d00_2    conda-forge
libutf8proc               2.7.0                h7f98852_0    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libuv                     1.44.2               h166bdaf_0    conda-forge
libxml2                   2.9.14               h22db469_4    conda-forge
libzlib                   1.2.13               h166bdaf_4    conda-forge
llvmlite                  0.39.1                   pypi_0    pypi
lz4-c                     1.9.3                h9c3ff4c_1    conda-forge
make                      4.3                  hd18ef5c_1    conda-forge
markupsafe                2.1.1                    pypi_0    pypi
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
mccabe                    0.7.0                    pypi_0    pypi
multidict                 6.0.2           py310h5764c6d_1    conda-forge
ncurses                   6.3                  h27087fc_1    conda-forge
ninja                     1.11.0               h924138e_0    conda-forge
nlohmann_json             3.11.2               h27087fc_0    conda-forge
numba                     0.56.2                   pypi_0    pypi
numpy                     1.23.3          py310h53a5b5f_0    conda-forge
numpydoc                  1.1.0                    pypi_0    pypi
oauthlib                  3.2.1                    pypi_0    pypi
openssl                   3.0.7                h166bdaf_0    conda-forge
orc                       1.8.0                h09e0d61_0    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pandas                    1.5.0           py310h769672d_0    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
pexpect                   4.8.0              pyh9f0ad1d_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pip                       22.2.2             pyhd8ed1ab_0    conda-forge
pkg-config                0.29.2            h36c2ea0_1008    conda-forge
pluggy                    1.0.0           py310hff52083_3    conda-forge
prompt-toolkit            3.0.31             pyha770c72_0    conda-forge
protobuf                  3.20.1                   pypi_0    pypi
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
py                        1.11.0             pyh6c4a22f_0    conda-forge
py-mini-racer             0.6.0                    pypi_0    pypi
pycodestyle               2.9.1                    pypi_0    pypi
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pyflakes                  2.5.0                    pypi_0    pypi
pygit2                    1.10.1                   pypi_0    pypi
pygithub                  1.55                     pypi_0    pypi
pygments                  2.13.0             pyhd8ed1ab_0    conda-forge
pyjwt                     2.5.0                    pypi_0    pypi
pynacl                    1.5.0                    pypi_0    pypi
pyopenssl                 22.0.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pysocks                   1.7.1           py310hff52083_5    conda-forge
pytest                    7.1.3           py310hff52083_0    conda-forge
pytest-faulthandler       2.0.1                      py_0    conda-forge
pytest-lazy-fixture       0.6.3                      py_0    conda-forge
python                    3.10.6          ha86cf86_0_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-dotenv             0.21.0                   pypi_0    pypi
python_abi                3.10                    2_cp310    conda-forge
pytz                      2022.2.1           pyhd8ed1ab_0    conda-forge
rapidjson                 1.1.0             he1b5a44_1002    conda-forge
re2                       2022.06.01           h27087fc_0    conda-forge
readline                  8.1.2                h0f457ee_0    conda-forge
requests                  2.28.1                   pypi_0    pypi
requests-oauthlib         1.3.1                    pypi_0    pypi
requests-toolbelt         0.9.1                    pypi_0    pypi
rhash                     1.4.3                h166bdaf_0    conda-forge
ruamel-yaml               0.17.21                  pypi_0    pypi
ruamel-yaml-clib          0.2.6                    pypi_0    pypi
s2n                       1.3.27               h1b5e8cb_0    conda-forge
s3fs                      2022.8.2           pyhd8ed1ab_0    conda-forge
s3transfer                0.6.0              pyhd8ed1ab_0    conda-forge
scalpl                    0.4.2                    pypi_0    pypi
scipy                     1.9.2                    pypi_0    pypi
semver                    2.13.0                   pypi_0    pypi
setuptools                59.8.0                   pypi_0    pypi
setuptools-scm            7.0.5              pyhd8ed1ab_0    conda-forge
setuptools_scm            7.0.5                hd8ed1ab_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
smmap                     5.0.0                    pypi_0    pypi
snappy                    1.1.9                hbd366e4_1    conda-forge
snowballstemmer           2.2.0                    pypi_0    pypi
sortedcontainers          2.4.0              pyhd8ed1ab_0    conda-forge
sparse                    0.13.0                   pypi_0    pypi
sphinx                    5.1.1                    pypi_0    pypi
sphinxcontrib-applehelp   1.0.2                    pypi_0    pypi
sphinxcontrib-devhelp     1.0.2                    pypi_0    pypi
sphinxcontrib-htmlhelp    2.0.0                    pypi_0    pypi
sphinxcontrib-jsmath      1.0.1                    pypi_0    pypi
sphinxcontrib-qthelp      1.0.3                    pypi_0    pypi
sphinxcontrib-serializinghtml 1.1.5                    pypi_0    pypi
stack_data                0.5.0              pyhd8ed1ab_0    conda-forge
sysroot_linux-64          2.12                he073ed8_15    conda-forge
thrift-compiler           0.16.0               he500d00_2    conda-forge
thrift-cpp                0.16.0               h27aab58_2    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
toml                      0.10.2                   pypi_0    pypi
tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
traitlets                 5.4.0              pyhd8ed1ab_0    conda-forge
types-cryptography        3.3.23                   pypi_0    pypi
typing-extensions         4.3.0                hd8ed1ab_0    conda-forge
typing_extensions         4.3.0              pyha770c72_0    conda-forge
tzdata                    2022c                h191b570_0    conda-forge
ucx                       1.13.1               h30ec399_0    conda-forge
ucx-proc                  1.0.0                       cpu    conda-forge
uritemplate               4.1.1                    pypi_0    pypi
urllib3                   1.26.11            pyhd8ed1ab_0    conda-forge
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
werkzeug                  2.2.2                    pypi_0    pypi
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
wrapt                     1.14.1          py310h5764c6d_0    conda-forge
xsimd                     9.0.1                h924138e_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
yarl                      1.8.1           py310h5eee18b_0    defaults
zipp                      3.8.1              pyhd8ed1ab_0    conda-forge
zlib                      1.2.13               h166bdaf_4    conda-forge
zstd                      1.5.2                h6239696_4    conda-forge

Environment info

active environment : pyarrow
    active env location : /home/antoine/mambaforge/envs/pyarrow
            shell level : 1
       user config file : /home/antoine/.condarc
 populated config files : /home/antoine/mambaforge/.condarc
                          /home/antoine/.condarc
          conda version : 22.9.0
    conda-build version : not installed
         python version : 3.9.13.final.0
       virtual packages : __cuda=11.4=0
                          __linux=5.15.0=0
                          __glibc=2.31=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /home/antoine/mambaforge  (writable)
      conda av data dir : /home/antoine/mambaforge/etc/conda
  conda av metadata url : None
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
          package cache : /home/antoine/mambaforge/pkgs
                          /home/antoine/.conda/pkgs
       envs directories : /home/antoine/mambaforge/envs
                          /home/antoine/.conda/envs
               platform : linux-64
             user-agent : conda/22.9.0 requests/2.28.1 CPython/3.9.13 Linux/5.15.0-53-generic ubuntu/20.04.5 glibc/2.31
                UID:GID : 1000:1000
             netrc file : None
           offline mode : False

Add dependency on libibcm CDT

For InfiniBand, a CDT of libibcm is needed for the build. Currently that is not included. Nor does the CDT exist. Opening this issue to track this work.

Disable debugging features

Comment:

I'm curious if there's a reason why the UCX package is not doing release builds, currently ucx/configure is used, but the UCX repo provides a ucx/contrib/configure-release file that disables some features that are generally better suited for a debug build, which may also be somewhat detrimental to performance.

Is there a reason to keep building in the way it is currently build, or should we consider doing release builds as described above? I'm happy to submit a patch for that, unless someone has a reason why we should keep the build as it currently is.

Building with gdrcopy

One of the build options in UCX allows using gdrcopy as part of UCT in a loadable module (meaning that it uses dlopen to load this module and handles any errors encountered gracefully). This would be good to include to improve performance in GPU use cases. In theory as gdrcopy is a kernel module, it should be possible to just enable this flag during the build (even if the build is happening somewhere without gdrcopy). The resulting package will only use gdrcopy if it is available in the system, but will skip it otherwise. So should not impact users that do not have gdrcopy. That said, the reality may be different. Will need to investigate how well this works in practice.

CPU build of ucx depends on cudatoolkit

Solution to issue cannot be found in the documentation.

  • I checked the documentation.

Issue

From conda-forge/arrow-cpp-feedstock#962

When installing ucx, you always get cudatoolkit, even when installing the cpu build of ucx:

$ mamba create -n test-ucx
$ mamba install ucx
...
  Package          Version  Build        Channel                    Size
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  Install:
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

  + _libgcc_mutex      0.1  conda_forge  conda-forge/linux-64        3kB
  + _openmp_mutex      4.5  2_gnu        conda-forge/linux-64       24kB
  + cudatoolkit     11.8.0  h37601d7_11  conda-forge/linux-64      667MB
  + libgcc-ng       12.2.0  h65d4601_19  conda-forge/linux-64     Cached
  + libgomp         12.2.0  h65d4601_19  conda-forge/linux-64     Cached
  + libstdcxx-ng    12.2.0  h46fd767_19  conda-forge/linux-64     Cached
  + ucx             1.13.1  h538f049_1   conda-forge/linux-64       17MB

I am not super familiar with UCX, but I assume the GPU/cuda support is not required?

It also seems that ucx already has some logic around this:

- cudatoolkit {{ cuda_compiler_version }} # [cuda_compiler_version not in ("None", "11.2")]
- cudatoolkit >=11.2,<12 # [cuda_compiler_version == "11.2"]

But maybe I am interpreting it wrongly, but it seems it should already not depend on cudatoolkit if cuda_compiler_version is "None", but clearly that is not working correctly.

Environment info

$ conda info

     active environment : arrow-110-test
    active env location : /home/joris/miniconda3/envs/arrow-110-test
            shell level : 2
       user config file : /home/joris/.condarc
 populated config files : /home/joris/.condarc
          conda version : 22.9.0
    conda-build version : not installed
         python version : 3.10.8.final.0
       virtual packages : __linux=5.4.0=0
                          __glibc=2.31=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /home/joris/miniconda3  (writable)
      conda av data dir : /home/joris/miniconda3/etc/conda
  conda av metadata url : None
           channel URLs : https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /home/joris/miniconda3/pkgs
                          /home/joris/.conda/pkgs
       envs directories : /home/joris/miniconda3/envs
                          /home/joris/.conda/envs
               platform : linux-64
             user-agent : conda/22.9.0 requests/2.28.1 CPython/3.10.8 Linux/5.4.0-137-generic ubuntu/20.04.5 glibc/2.31
                UID:GID : 1001:1001
             netrc file : None
           offline mode : False

Packaging 1.7.0 RC1

It sounds like 1.7.0 RC1 should ship in a couple weeks. Would be good to publish this RC to conda-forge for downstream use cases relying on changes in 1.7.0. Should also help us bridge the gap until 1.7.0 lands. Also could generate some useful feedback for upstream to improve things before 1.7.0 final.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.