Giter VIP home page Giter VIP logo

devcontainers's Introduction

devcontainers's People

Contributors

ajschmidt8 avatar alliepiper avatar ayodeawe avatar bdice avatar cwharris avatar github-actions[bot] avatar jjacobelli avatar jrhemstad avatar miscco avatar msarahan avatar raydouglass avatar sleeepyjack avatar trxcllnt avatar vyasr avatar wence- avatar wmaxey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

devcontainers's Issues

Remove the old RAPIDS nightly index from the rapids-build-utils post-attach command

RAPIDS nightly wheels have migrated from the old, private nightly index to a new, public nightly index hosted on anaconda.org. The old index is currently still live, but we should plan to remove it from the rapids-build-utils feature's post-attach command by 24.04 or so since that index is now outdated and will soon be removed altogether. Since the new nightly index is public, every repo's dependencies.yaml file can be relied upon to include the necessary index information.

Extend the `matrix.yaml` specification to allow specifying environment variables per container

Currently, the containers that are built and published are specified in the matrix.yaml file and follow a format like:

- os: "ubuntu:18.04"
  images:
  - features: [*gcc_6, *cuda_prev_min, *python, *lit]
  - features: [*gcc_7, *cuda_prev_min, *python, *lit]
  - features: [*gcc_8, *cuda_prev_min, *python, *lit]
  - features: [*gcc_9, *cuda_prev_min, *python, *lit]
  - features: [*llvm_9, *cuda_prev_min, *python, *lit]
  - features: [*oneapi_2022, *cuda_prev_min, *python, *lit]

Where we specify the base OS container and then a list of features to install in each generated image.

I would like to extend this to add the ability to specify custom environment variable definitions in each container environment as well.

I imagine we could do this by adding an env field like this:

- os: "ubuntu:18.04"
  images:
  - features: [*gcc_6, *cuda_prev_min, *python, *lit]
    env: {my_var: "my_value"}

This would then translate down into the generated devcontainer.json as:

"containerEnv": {
  "my_var": "my_value"
}

Enable finer grain control over packages installed by LLVM feature

In the CCCL devcontainers, we would like to have the latest version of clang-format installed in every image.

We could do that today by installing the latest version of the llvm feature, but that would unnecessarily bloat the size of the image.

Ideally there would be finer grain control over which LLVM packages are installed by the llvm feature.

The feature uses the llvm.sh install script provided by the LLVM project. This script already provides some control over which packages are installed via the all argument passed to the script. If all is not specified, it only installs clang, lldb, lld, and clangd. Otherwise it installs the remaining LLVM packages:

PKG="$PKG clang-tidy-$LLVM_VERSION clang-format-$LLVM_VERSION clang-tools-$LLVM_VERSION llvm-$LLVM_VERSION-dev lld-$LLVM_VERSION lldb-$LLVM_VERSION llvm-$LLVM_VERSION-tools libomp-$LLVM_VERSION-dev libc++-$LLVM_VERSION-dev libc++abi-$LLVM_VERSION-dev libclang-common-$LLVM_VERSION-dev libclang-$LLVM_VERSION-dev"

I see a few options:

  1. Update the devcontainer feature to add a packages: option that controls which packages are installed. Then to install just clang-format we could add the feature with packages: clang-format.
  2. Update the llvm.sh script such that when all isn't specified, it will still install clang-format.

Option 1 would be the most flexible, but would require the most modification to the llvm.sh script. Option 2 is probably easier, but provides less control and may still install unnecessary packages.

CUDAARCHS should be NATIVE when building locally

I'm doing a devcontainer build without GitHub auth. In ~coder/.bashrc SCCACHE_BUCKET and SCCACE_REGION are unset, but CUDAARCHS is left set as "RAPIDS" causing my build to target all architectures. I think CUDAARCHS should either be unset or set to "NATIVE" in this case.

Dev Container support for building and testing RAPIDS Spark

Is your feature request related to a problem? Please describe.

More developers are using dev containers for RAPIDS development. We can build most of RAPIDS from the provided dev containers. But when changes need to be tested for impacts on the Java bindings, we have to use a completely separate process.

This would also enable experimenting with cuDF / RAPIDS changes while running Spark workloads.

Describe the solution you'd like

Add the proper dependencies and scripts for building and testing JNI.

Describe alternatives you've considered

  • Use the documented process for building libcudf for Spark and then install JDK and maven and build them.
  • Use Spark-RAPIDS containers for testing.

Both of these require me to commit my changes from the dev container, and then checkout the branch inside the Spark environment in order to build and test. An integrated environment will be more productive.

Additional context

I have successfully installed JDK and Maven in a dev container with cuDF, but was unable to build cuDF because of a CMake error.

[exec] CMake Error at /home/coder/cudf/java/target/cmake-build/_deps/rapids-cmake-src/rapids-cmake/find/package.cmake:125 (find_package):
     [exec]   By not providing "Findcudf.cmake" in CMAKE_MODULE_PATH this project has
     [exec]   asked CMake to find a package configuration file provided by "cudf", but
     [exec]   CMake did not find one.

Add benchmarking toolkit

It would be nice to have nsight compute and nsight system pre-installed in the devcontainers. Benchmarking kernels is common for rapids developers.

devcontainer clang-format version should match RAPIDS pre-commit requirements

Currently just about every time I push to CI my PRs fail clang-format checks because the clang-format in the devcontainer (cuSpatial) is v16, and RAPIDS pre-commit uses something like v11. Small things like bracket wrapping and comment alignment have changed between versions.

Would be nice for these to align.

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.