Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use mixin for binops #4

Closed
wants to merge 13 commits into from
Closed

Commits on Feb 25, 2022

  1. Fix std::bad_alloc exception due to JIT reserving a huge buffer (ra…

    …pidsai#10317)
    
    In file `jit/cache.cpp`, a program cache always internally reserves a `std::unordered_map` using a size set by an environment variable `LIBCUDF_KERNEL_CACHE_LIMIT_PER_PROCESS`. If that environment variable does not exist, a default value (`std::numeric_limit<size_t>::max`) is used. Such default value is huge, leading to allocating a huge (impossible) size of memory chunk that crashes the system.
    
    This PR changes that default value from `std::numeric_limit<size_t>::max` to `1024^2`. This is essentially a reverse of the PR rapidsai#10312 but set the default value to `1024` instead of `100`.
    
    Note that `1024^2` is just some random number, not based on any specific calculation.
    
    Closes rapidsai#10312 and closes rapidsai#9362.
    
    Authors:
      - Nghia Truong (https://github.com/ttnghia)
    
    Approvers:
      - Mark Harris (https://github.com/harrism)
      - Karthikeyan (https://github.com/karthikeyann)
    
    URL: rapidsai#10317
    ttnghia authored Feb 25, 2022
    Configuration menu
    Copy the full SHA
    df646b2 View commit details
    Browse the repository at this point in the history
  2. Add device create_sequence_table for benchmarks (rapidsai#10300)

    addresses parts of rapidsai#5773
    - Add `create_sequence_table` which creates sequences in device (only numeric types supported) with/without nulls.
    - Add `create_random_null_mask` to create random null mask with given probability. (0.0-1.0 null probability)
    ~- add gnu++17 to generate_input.cu (temporarily for  int128 STL support).~
    - renamed `repeat_dtypes` to `cycle_dtypes` and moved out of create_* methods
    - updated ast bench, search, scatter , binary ops bench
    
    
    Splitting PR rapidsai#10109 for review
    
    Authors:
      - Karthikeyan (https://github.com/karthikeyann)
    
    Approvers:
      - Conor Hoekstra (https://github.com/codereport)
      - Nghia Truong (https://github.com/ttnghia)
      - Robert Maynard (https://github.com/robertmaynard)
      - MithunR (https://github.com/mythrocks)
      - Bradley Dice (https://github.com/bdice)
    
    URL: rapidsai#10300
    karthikeyann authored Feb 25, 2022
    Configuration menu
    Copy the full SHA
    eaae94b View commit details
    Browse the repository at this point in the history
  3. Add cleanup of python artifacts (rapidsai#10355)

    This PR removes `__pycache__`, `.so` & `.pyc` files.
    
    Authors:
      - GALI PREM SAGAR (https://github.com/galipremsagar)
    
    Approvers:
      - Vyas Ramasubramani (https://github.com/vyasr)
    
    URL: rapidsai#10355
    galipremsagar authored Feb 25, 2022
    Configuration menu
    Copy the full SHA
    044922d View commit details
    Browse the repository at this point in the history
  4. Fix warnings in test_categorical.py. (rapidsai#10354)

    This PR catches or silences warnings in `test_categorical.py`. (I am working through one test file at a time so we can enable `-Werr` in the future.) Most of the warnings come from deprecated `inplace` arguments to pandas' categorical functions. The `inplace` argument will be removed in pandas 2.0. Until then, we should just hide the warning.
    
    Additionally, I refactored some `inplace` behavior to make the expected behavior of the test clearer.
    
    Authors:
      - Bradley Dice (https://github.com/bdice)
    
    Approvers:
      - Ashwin Srinath (https://github.com/shwina)
    
    URL: rapidsai#10354
    bdice authored Feb 25, 2022
    Configuration menu
    Copy the full SHA
    3f175ce View commit details
    Browse the repository at this point in the history
  5. Refactor array_ufunc for Index and unify across all classes (rapidsai…

    …#10346)
    
    This PR builds on rapidsai#10217 and rapidsai#10287 to bring full ufunc support for Index types, expanding well beyond the small set previously supported in the `cudf.core.ops` namespace. By using most of the machinery introduced for IndexedFrame in the prior two PRs we avoid duplicating much logic so that all ufunc dispatches flow through a relatively standard path of known methods prior to a common cupy dispatch. With this change we are also able to deprecate the various ufunc operations defined in cudf/core/ops.py that exist only for this purpose as well as a number of Frame methods that are not defined for the corresponding pandas types. Users of those APIs are recommended to calling the corresponding numpy/cupy ufuncs instead to leverage the new dispatch.
    
    This PR also fixes a bug where index binary operations that output booleans would previously return instances of GenericIndex, whereas those pandas operations would return numpy arrays. cudf now returns cupy arrays in those cases.
    
    Resolves rapidsai#9083. Contributes to rapidsai#9038.
    
    Authors:
      - Vyas Ramasubramani (https://github.com/vyasr)
    
    Approvers:
      - GALI PREM SAGAR (https://github.com/galipremsagar)
    
    URL: rapidsai#10346
    vyasr authored Feb 25, 2022
    Configuration menu
    Copy the full SHA
    e0af727 View commit details
    Browse the repository at this point in the history
  6. Implement a mixin for reductions (rapidsai#9925)

    This PR implements a factory for mixins classes based on the common pattern in cuDF of categories of similar functions all calling a common method implementing some standard pre/post-processing before calling a lower-level API of either one of its members (e.g. `Frames` calling `Column` methods) or the C++ libcudf library. When added to another class, these mixins support customization of which methods are exposed via a class member set of method names. Documentation for these methods is generated by formatting the docstring for the common internal method, e.g. `_reduce` for reductions. As a first pass, this PR generates a single mixin for reductions and applies it to all the relevant classes. Future PRs will use this to generate classes for scans, binary operations, and unary operations, and perhaps other similar categories as they are uncovered.
    
    This approach assumes a great deal of API homogeneity between the different methods in a category. `Frame` violates this assumption because similar operations often support slightly different parameters (for instance, some reductions support a `min_count` parameter), so for now `Frame` was not made `Reducible`. That decision could be revisited if 1) the degree of homogeneity of these function signatures increases over time, or 2) we can introduce greater customization into these mixins without adding too much complexity. A first attempt of (2) can be seen in [this branch](https://github.com/vyasr/cudf/tree/refactor/reductions_extended), but the degree of additional complexity just to support `Frame` isn't really justifiable at this stage, so unless we can come up with a simpler solution I recommend leaving `Frame` as is for now.
    
    Authors:
      - Vyas Ramasubramani (https://github.com/vyasr)
      - Ashwin Srinath (https://github.com/shwina)
    
    Approvers:
      - Michael Wang (https://github.com/isVoid)
      - Ashwin Srinath (https://github.com/shwina)
    
    URL: rapidsai#9925
    vyasr authored Feb 25, 2022
    Configuration menu
    Copy the full SHA
    21325e8 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    26b6a84 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    4339a72 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    adbf831 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    1168cd6 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    ada6b45 View commit details
    Browse the repository at this point in the history
  12. Make Scalar a BinaryOperand.

    vyasr committed Feb 25, 2022
    Configuration menu
    Copy the full SHA
    c58570c View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    70a13a0 View commit details
    Browse the repository at this point in the history