Skip to content

Commit

Permalink
Merge branch 'branch-24.02' into fix-dep-strs-factory-calls
Browse files Browse the repository at this point in the history
  • Loading branch information
davidwendt committed Jan 19, 2024
2 parents ac8a8de + eeee795 commit f5552fe
Show file tree
Hide file tree
Showing 12 changed files with 61 additions and 27 deletions.
2 changes: 1 addition & 1 deletion conda/environments/all_cuda-118_arch-x86_64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ dependencies:
- pydata-sphinx-theme!=0.14.2
- pytest
- pytest-benchmark
- pytest-cases<3.8.2
- pytest-cases>=3.8.2
- pytest-cov
- pytest-xdist
- python-confluent-kafka>=1.9.0,<1.10.0a0
Expand Down
2 changes: 1 addition & 1 deletion conda/environments/all_cuda-120_arch-x86_64.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ dependencies:
- pydata-sphinx-theme!=0.14.2
- pytest
- pytest-benchmark
- pytest-cases<3.8.2
- pytest-cases>=3.8.2
- pytest-cov
- pytest-xdist
- python-confluent-kafka>=1.9.0,<1.10.0a0
Expand Down
7 changes: 6 additions & 1 deletion cpp/benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# =============================================================================
# Copyright (c) 2018-2023, NVIDIA CORPORATION.
# Copyright (c) 2018-2024, NVIDIA CORPORATION.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
# in compliance with the License. You may obtain a copy of the License at
Expand Down Expand Up @@ -183,6 +183,11 @@ ConfigureNVBench(
sort/sort_lists.cpp sort/sort_structs.cpp
)

# ##################################################################################################
# * structs benchmark
# --------------------------------------------------------------------------------
ConfigureNVBench(STRUCT_CREATION_NVBENCH structs/create_structs.cpp)

# ##################################################################################################
# * quantiles benchmark
# --------------------------------------------------------------------------------
Expand Down
31 changes: 31 additions & 0 deletions cpp/benchmarks/structs/create_structs.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Copyright (c) 2024, NVIDIA CORPORATION.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include <benchmarks/common/generate_nested_types.hpp>

#include <nvbench/nvbench.cuh>

void nvbench_create_structs(nvbench::state& state)
{
state.exec(nvbench::exec_tag::sync,
[&](nvbench::launch& launch) { auto const table_ptr = create_structs_data(state); });
}

NVBENCH_BENCH(nvbench_create_structs)
.set_name("create_structs")
.add_int64_power_of_two_axis("NumRows", {10, 18, 26})
.add_int64_axis("Depth", {1, 8, 16})
.add_int64_axis("Nulls", {0, 1});
14 changes: 4 additions & 10 deletions cpp/src/structs/utilities.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2020-2023, NVIDIA CORPORATION.
* Copyright (c) 2020-2024, NVIDIA CORPORATION.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -17,6 +17,7 @@
#include <cudf/column/column_factories.hpp>
#include <cudf/detail/copy.hpp>
#include <cudf/detail/null_mask.hpp>
#include <cudf/detail/nvtx/ranges.hpp>
#include <cudf/detail/structs/utilities.hpp>
#include <cudf/detail/unary.hpp>
#include <cudf/structs/structs_column_view.hpp>
Expand Down Expand Up @@ -229,6 +230,7 @@ std::unique_ptr<column> superimpose_nulls_no_sanitize(bitmask_type const* null_m
rmm::cuda_stream_view stream,
rmm::mr::device_memory_resource* mr)
{
CUDF_FUNC_RANGE();
if (input->type().id() == cudf::type_id::EMPTY) {
// EMPTY columns should not have a null mask,
// so don't superimpose null mask on empty columns.
Expand Down Expand Up @@ -258,19 +260,11 @@ std::unique_ptr<column> superimpose_nulls_no_sanitize(bitmask_type const* null_m
// If the input is also a struct, repeat for all its children. Otherwise just return.
if (input->type().id() != cudf::type_id::STRUCT) { return std::move(input); }

auto const current_mask = input->view().null_mask();
auto const new_null_count = input->null_count(); // this was just computed in the step above
auto content = input->release();

// Build new children columns.
std::for_each(content.children.begin(),
content.children.end(),
[current_mask, new_null_count, stream, mr](auto& child) {
child = superimpose_nulls_no_sanitize(
current_mask, new_null_count, std::move(child), stream, mr);
});

// Replace the children columns.
// make_structs_column recursively calls superimpose_nulls
return cudf::make_structs_column(num_rows,
std::move(content.children),
new_null_count,
Expand Down
2 changes: 1 addition & 1 deletion dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -620,7 +620,7 @@ dependencies:
- fastavro>=0.22.9
- hypothesis
- pytest-benchmark
- pytest-cases<3.8.2
- pytest-cases>=3.8.2
- python-snappy>=0.6.0
- scipy
- output_types: conda
Expand Down
12 changes: 6 additions & 6 deletions docs/cudf/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,12 @@ def clean_definitions(root):
# All of these in type declarations cause Breathe to choke.
# For friend, see https://github.com/breathe-doc/breathe/issues/916
strings_to_remove = ("__forceinline__", "CUDF_HOST_DEVICE", "decltype(auto)", "friend")
for field in (".//type", ".//definition"):
for type_ in root.findall(field):
if type_.text is not None:
for string in strings_to_remove:
type_.text = type_.text.replace(string, "")

for node in root.iter():
for string in strings_to_remove:
if node.text is not None:
node.text = node.text.replace(string, "")
if node.tail is not None:
node.tail = node.tail.replace(string, "")

def clean_all_xml_files(path):
for fn in glob.glob(os.path.join(path, "*.xml")):
Expand Down
6 changes: 4 additions & 2 deletions python/cudf/benchmarks/API/bench_dataframe.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2022-2023, NVIDIA CORPORATION.
# Copyright (c) 2022-2024, NVIDIA CORPORATION.

"""Benchmarks of DataFrame methods."""

Expand Down Expand Up @@ -178,6 +178,8 @@ def bench_nsmallest(benchmark, dataframe, num_cols_to_sort, n):
benchmark(dataframe.nsmallest, n, by)


@pytest_cases.parametrize_with_cases("dataframe, cond, other", prefix="where")
@pytest_cases.parametrize_with_cases(
"dataframe, cond, other", prefix="where", cases="cases_dataframe"
)
def bench_where(benchmark, dataframe, cond, other):
benchmark(dataframe.where, cond, other)
6 changes: 4 additions & 2 deletions python/cudf/benchmarks/API/bench_functions.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2022, NVIDIA CORPORATION.
# Copyright (c) 2022-2024, NVIDIA CORPORATION.

"""Benchmarks of free functions that accept cudf objects."""

Expand All @@ -9,7 +9,9 @@
from utils import benchmark_with_object


@pytest_cases.parametrize_with_cases("objs", prefix="concat")
@pytest_cases.parametrize_with_cases(
"objs", prefix="concat", cases="cases_functions"
)
@pytest.mark.parametrize(
"axis",
[
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2022, NVIDIA CORPORATION.
# Copyright (c) 2022-2024, NVIDIA CORPORATION.

from utils import benchmark_with_object

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2022, NVIDIA CORPORATION.
# Copyright (c) 2022-2024, NVIDIA CORPORATION.

"""Test cases for benchmarks in bench_functions.py."""

Expand Down
2 changes: 1 addition & 1 deletion python/cudf/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ test = [
"msgpack",
"pytest",
"pytest-benchmark",
"pytest-cases<3.8.2",
"pytest-cases>=3.8.2",
"pytest-cov",
"pytest-xdist",
"python-snappy>=0.6.0",
Expand Down

0 comments on commit f5552fe

Please sign in to comment.