Skip to content

Commit 2fc5e97

Browse files
committed
Merge branch-25.06 into branch-25.08
2 parents 520edce + 9e6357a commit 2fc5e97

File tree

20 files changed

+578
-145
lines changed

20 files changed

+578
-145
lines changed

.github/workflows/pr.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,11 @@ jobs:
4343
- telemetry-setup
4444
- third-party-integration-tests-cudf-pandas
4545
secrets: inherit
46+
<<<<<<< HEAD
4647
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
48+
=======
49+
uses: rapidsai/shared-workflows/.github/workflows/[email protected]
50+
>>>>>>> branch-25.06
4751
if: always()
4852
with:
4953
needs: ${{ toJSON(needs) }}

ci/cudf_pandas_scripts/fetch_pandas_versions.py

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,55 @@
33
import argparse
44
import json
55
import ssl
6+
import sys
67
import urllib.request
78

89
import certifi
910
from packaging.specifiers import SpecifierSet
1011
from packaging.version import Version
1112

1213

14+
def has_python_version(version, data):
15+
for d in data:
16+
try:
17+
if Version(d["python_version"][2:]) == version:
18+
return True
19+
except Exception:
20+
pass
21+
return False
22+
23+
1324
def get_pandas_versions(pandas_range):
1425
url = "https://pypi.org/pypi/pandas/json"
1526
ssl_context = ssl.create_default_context(cafile=certifi.where())
16-
with urllib.request.urlopen(url, context=ssl_context) as response:
27+
python_version = Version(
28+
str(sys.version_info.major) + str(sys.version_info.minor)
29+
)
30+
# Set a timeout for the request to avoid hanging
31+
timeout = 10 # seconds
32+
33+
# Try to fetch pandas versions from PyPI
34+
with urllib.request.urlopen(
35+
url, timeout=timeout, context=ssl_context
36+
) as response:
1737
data = json.loads(response.read())
38+
39+
# Extract and filter versions
1840
versions = [Version(v) for v in data["releases"]]
41+
1942
specifier = SpecifierSet(pandas_range.lstrip("pandas"))
20-
matching_versions = [v for v in versions if v in specifier]
43+
matching_versions = [
44+
v
45+
for v in versions
46+
if v in specifier
47+
and has_python_version(python_version, data["releases"][str(v)])
48+
]
49+
2150
matching_minors = sorted(
2251
set(".".join((str(v.major), str(v.minor))) for v in matching_versions),
2352
key=Version,
2453
)
54+
2555
return matching_minors
2656

2757

conda/environments/all_cuda-118_arch-aarch64.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ dependencies:
5454
- nbsphinx
5555
- ninja
5656
- notebook
57-
- numba-cuda>=0.10.1,<0.11.0a0
57+
- numba-cuda>=0.11.0,<0.12.0a0
5858
- numba>=0.59.1,<0.62.0a0
5959
- numpy>=1.23,<3.0a0
6060
- numpydoc

conda/environments/all_cuda-118_arch-x86_64.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ dependencies:
5656
- nbsphinx
5757
- ninja
5858
- notebook
59-
- numba-cuda>=0.10.1,<0.11.0a0
59+
- numba-cuda>=0.11.0,<0.12.0a0
6060
- numba>=0.59.1,<0.62.0a0
6161
- numpy>=1.23,<3.0a0
6262
- numpydoc

conda/environments/all_cuda-128_arch-aarch64.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ dependencies:
5454
- nbsphinx
5555
- ninja
5656
- notebook
57-
- numba-cuda>=0.10.1,<0.11.0a0
57+
- numba-cuda>=0.11.0,<0.12.0a0
5858
- numba>=0.59.1,<0.62.0a0
5959
- numpy>=1.23,<3.0a0
6060
- numpydoc

conda/environments/all_cuda-128_arch-x86_64.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ dependencies:
5555
- nbsphinx
5656
- ninja
5757
- notebook
58-
- numba-cuda>=0.10.1,<0.11.0a0
58+
- numba-cuda>=0.11.0,<0.12.0a0
5959
- numba>=0.59.1,<0.62.0a0
6060
- numpy>=1.23,<3.0a0
6161
- numpydoc

conda/recipes/cudf/recipe.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ requirements:
7373
- typing_extensions >=4.0.0
7474
- pandas >=2.0,<2.2.4dev0
7575
- cupy >=12.0.0
76-
- numba-cuda >=0.10.1,<0.11.0a0
76+
- numba-cuda >=0.11.0,<0.12.0a0
7777
- numba >=0.59.1,<0.62.0a0
7878
- numpy >=1.23,<3.0a0
7979
- pyarrow>=14.0.0,<20.0.0a0

cpp/include/cudf/detail/join/distinct_hash_join.cuh

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ struct always_not_equal {
4949
};
5050

5151
/**
52-
* @brief An comparator adapter wrapping the two table comparator
52+
* @brief A comparator adapter wrapping the two table comparator
5353
*/
5454
template <typename Equal>
5555
struct comparator_adapter {
@@ -67,6 +67,25 @@ struct comparator_adapter {
6767
Equal _d_equal;
6868
};
6969

70+
/**
71+
* @brief A comparator adapter wrapping the two table comparator
72+
*/
73+
template <typename Equal>
74+
struct primitive_comparator_adapter {
75+
primitive_comparator_adapter(Equal const& d_equal) : _d_equal{d_equal} {}
76+
77+
__device__ constexpr auto operator()(
78+
cuco::pair<hash_value_type, lhs_index_type> const& lhs,
79+
cuco::pair<hash_value_type, rhs_index_type> const& rhs) const noexcept
80+
{
81+
if (lhs.first != rhs.first) { return false; }
82+
return _d_equal(static_cast<size_type>(lhs.second), static_cast<size_type>(rhs.second));
83+
}
84+
85+
private:
86+
Equal _d_equal;
87+
};
88+
7089
/**
7190
* @brief Distinct hash join that builds hash table in creation and probes results in subsequent
7291
* `*_join` member functions.

cpp/include/cudf/table/experimental/row_operators.cuh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@
5656

5757
namespace CUDF_EXPORT cudf {
5858

59+
namespace row::primitive {
60+
class row_equality_comparator; // Forward declaration
61+
62+
template <template <typename> class Hash>
63+
class row_hasher; // Forward declaration
64+
} // namespace row::primitive
65+
5966
namespace experimental {
6067

6168
/**
@@ -1577,6 +1584,11 @@ struct preprocessed_table {
15771584
friend class self_comparator; ///< Allow self_comparator to access private members
15781585
friend class two_table_comparator; ///< Allow two_table_comparator to access private members
15791586
friend class hash::row_hasher; ///< Allow row_hasher to access private members
1587+
/// Allow primitive equality comparator to access private members
1588+
friend class ::cudf::row::primitive::row_equality_comparator;
1589+
1590+
template <template <typename> class Hash>
1591+
friend class ::cudf::row::primitive::row_hasher;
15801592

15811593
using table_device_view_owner =
15821594
std::invoke_result_t<decltype(table_device_view::create), table_view, rmm::cuda_stream_view>;

0 commit comments

Comments
 (0)