Robert (Bobby) Evans
Robert (Bobby) Evans
Multiply looks relatively simple to implement. Divide however is much more difficult. Sadly, it looks like in the worst case we are going to need more than 256-bits. - 192-bits...
The basics of multiply and divide are in place now.
This is done
Turns out that lists::contains is doing the right thing. Thanks @mythrocks for seeing that. Now all we have to do is remove the check from ArrayContains and add in more...
After talking to @jrhemstad I think we have a work around where we can do Min/Max aggregations without any changes to CUDF. I need to put together a prototype to...
One of the issues with doing this for min/max is that the any/all aggregations are only for reduction and segmented_reduce_aggregation. https://github.com/rapidsai/cudf/blob/9ac24773d186c22ffbacbe31d92dad60ed2cdb5f/cpp/src/aggregation/aggregation.cpp#L463-L483 For `all` we can use a `min` aggregation on...
@HaoYang670 The way we do aggregates is complicated and is different for each type of aggregations being done. For a reduction you would put all of the code into the...
@HaoYang670 > Should CudfAny implement CudfAggregate? Yes > If it does, what should be the value of groupByAggregate? GroupByAggregation.any()? `GroupByAggregation.any()` is not currently in cudf of the JNI that wraps...
@HaoYang670 There are a few ways to avoid this. You can do what GpuAverage does and split the recursion. ``` override def windowReplacement(spec: GpuWindowSpecDefinition): Expression = child.dataType match { case...
So then split it or have another argument to `GpuMax` that tells it to not replace itself. For `GpuBasicMax` there are also several options. We could have an abstract base...