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

Cast result of pip_bitmap_column_to_binary_array to cupy array #14

Closed
wants to merge 713 commits into from
Closed
Changes from all commits
Commits
Show all changes
713 commits
Select commit Hold shift + click to select a range
ccf526a
Refactor spatial join tests (#1019)
harrism Apr 5, 2023
8afef5f
Merge pull request #1039 from rapidsai/branch-23.04
GPUtester Apr 5, 2023
fdacbb2
Add Header Only API for Linestring-Polygon Distance (#1011)
isVoid Apr 6, 2023
5cca1a1
Merge pull request #1040 from rapidsai/branch-23.04
GPUtester Apr 6, 2023
405699f
Intersection only predicates (#1016)
thomcom Apr 6, 2023
127ae9b
Merge pull request #1041 from rapidsai/branch-23.04
GPUtester Apr 6, 2023
034bbb9
Bug Fix: point-in-multipolygon reduction using the wrong key-compare …
isVoid Apr 7, 2023
67d0f33
Merge pull request #1045 from rapidsai/branch-23.04
GPUtester Apr 7, 2023
0985aef
Reduced equals time and fixed a bug. (#1051)
thomcom Apr 7, 2023
07ba65d
Use thrust::host_vector instead of std::vector<bool> in tests (#1048)
cwharris Apr 7, 2023
68ff3f4
use make_device_vector in pairwise_point_in_polygon_test (#1049)
cwharris Apr 8, 2023
062f0e3
Improve Hausdorff Many Column Performance (#916)
isVoid Apr 11, 2023
aa73362
Update `CMAKE_CUDA_ARCHITECTURE` to use new value (#1070)
isVoid Apr 12, 2023
1ea32f9
Use ARC V2 self-hosted runners for GPU jobs (#1066)
jjacobelli Apr 17, 2023
1598c65
Bug fix in `pairwise_linestring_intersection` (#1069)
isVoid Apr 17, 2023
8f49daa
Update clang-format to 15.0.7 (#1072)
bdice Apr 19, 2023
fadab94
Remove usage of rapids-get-rapids-version-from-git (#1088)
jjacobelli Apr 20, 2023
d044dc4
Column API for linestring-polygon distance (#1030)
isVoid Apr 22, 2023
2d1f9f8
Update minimum Python version to Python 3.9 (#1089)
shwina Apr 26, 2023
5f91e68
Move `experimental` headers into main `include/cuspatial` directory (…
harrism Apr 26, 2023
5269685
Header only API for polygon-polygon distance (#1065)
isVoid Apr 26, 2023
24d29bc
Python API for linestring polygon distance (#1031)
isVoid Apr 26, 2023
3935a84
Add Hausdorff Clustering Notebooks (#922)
isVoid Apr 26, 2023
959cfdb
Binary Predicate Test Dispatching (#1085)
thomcom Apr 26, 2023
86e8912
Fix a bug in segment intersection primitive where two collinear segme…
isVoid Apr 27, 2023
e992329
Pairwise Multipoint Equals Count function (#1022)
thomcom Apr 27, 2023
021c1f2
Revert to branch-23.06 for shared-action-workflows (#1107)
shwina May 1, 2023
50c579a
Enable sccache hits from local builds (#1109)
AyodeAwe May 1, 2023
c713325
Pin cuml dependency in notebook testing environment to nightlies (#1110)
isVoid May 1, 2023
8c66988
Fix a bug in point-in-polygon kernel: if the point is collinear with …
isVoid May 2, 2023
2d02073
Column API for `pairwise_polygon_distance` (#1073)
isVoid May 2, 2023
2509fce
Reorganize cuSpatial headers (#1097)
harrism May 2, 2023
3b6a59b
update changelog
raydouglass May 3, 2023
af32654
Merge pull request #1117 from rapidsai/branch-23.04
GPUtester May 3, 2023
986c1a6
Python API for `pairwise_polygon_distance` (#1074)
isVoid May 3, 2023
e1de9f5
Reorganize src, tests, and benchmarks (#1115)
harrism May 4, 2023
8b97a72
Add `contains`predicate. (#1086)
thomcom May 4, 2023
6e56d13
Bump Gtest version following Rapids-cmake change (#1126)
isVoid May 9, 2023
916b8ba
Add Legal Terms to Trajectory Clustering Notebook (#1111)
isVoid May 9, 2023
9a85409
Delete add_issue_to_project.yml (#1129)
jarmak-nv May 10, 2023
036c897
Make User Guide appear in Docs page header (#1133)
jarmak-nv May 11, 2023
5829c49
Improve zipcode counting notebook by adding GPU backed WKT parser (#1…
isVoid May 15, 2023
d7bb3fb
Add GTC 2023 Reverse GeoCoding Demo Notebook (#1001)
thomcom May 15, 2023
c6ecbc0
Refactor ST_Distance Column API and Cython (#1124)
isVoid May 16, 2023
4973417
DOC
raydouglass May 19, 2023
7f42eeb
Adds `pairwise_point_polygon_distance` benchmark (#1131)
isVoid May 23, 2023
e7c9332
Merge pull request #1150 from rapidsai/branch-23.06
GPUtester May 23, 2023
5162e39
Fix `cudf::column` constructor args (#1151)
trxcllnt May 26, 2023
8e041f1
Merge pull request #1155 from rapidsai/branch-23.06
GPUtester May 26, 2023
3bb733a
Fix scatter bug due to overlapping range in `pairwise_linestring_inte…
isVoid May 26, 2023
ac40ed6
Merge pull request #1157 from rapidsai/branch-23.06
GPUtester May 26, 2023
3300768
Implement and Test All Simple Feature Combinations (#1064)
thomcom May 26, 2023
7bff69d
Merge pull request #1158 from rapidsai/branch-23.06
GPUtester May 26, 2023
88b86da
Refactor `ST_Distance` header only API (#1143)
isVoid May 31, 2023
085d946
Merge pull request #1159 from rapidsai/branch-23.06
GPUtester May 31, 2023
f571e9d
Add Benchmark to `pairwise_linestring_polygon_distance` (#1153)
isVoid May 31, 2023
361bd4d
Merge pull request #1163 from rapidsai/branch-23.06
GPUtester May 31, 2023
50e3b6a
Add `multilinestring_segment_manager` for segment related methods in …
isVoid Jun 1, 2023
40d00f7
Merge pull request #1167 from rapidsai/branch-23.06
GPUtester Jun 1, 2023
400cc15
Add documentation for `pairwise_linestring_polygon_distance`, `pairwi…
isVoid Jun 1, 2023
f07ac48
Run docs nightly (#1141)
AyodeAwe Jun 1, 2023
1a0593d
Merge pull request #1168 from rapidsai/branch-23.06
GPUtester Jun 1, 2023
4b76c44
cuSpatial pip packages (#1148)
trxcllnt Jun 2, 2023
9f990ea
Remove documentation build scripts for Jenkins (#1169)
ajschmidt8 Jun 5, 2023
ddf831d
Merge branch-23.06 into branch-23.08
trxcllnt Jun 5, 2023
663ac38
more 23.06 -> 23.08
trxcllnt Jun 5, 2023
d428850
pyproject.toml not pyproject.py
trxcllnt Jun 5, 2023
e9a227d
handle yaml anchors
Jun 5, 2023
39f66d0
Merge pull request #1175 from trxcllnt/branch-23.08-merge-23.06
raydouglass Jun 6, 2023
73d3c3e
update changelog
raydouglass Jun 7, 2023
cb4e28b
Merge pull request #1184 from rapidsai/branch-23.06
GPUtester Jun 7, 2023
34dc2a3
Fix update version (#1187)
raydouglass Jun 7, 2023
00fc842
Merge branch-23.06 into rbanch-23.08
raydouglass Jun 7, 2023
0c395d1
Merge pull request #1190 from raydouglass/branch-23.08-merge-23.06
raydouglass Jun 7, 2023
400b310
use rapids-upload-docs script (#1181)
AyodeAwe Jun 7, 2023
1d2c174
Better support for binary predicates with large inputs. (#1166)
thomcom Jun 8, 2023
77ca81b
External issue triage GHA (#1177)
jarmak-nv Jun 8, 2023
72edee1
Remove `osmnx` dependency and use a small local dataset (#1195)
isVoid Jun 9, 2023
56fa0c2
Update to CMake 3.26.4 (#1196)
vyasr Jun 9, 2023
f43d18b
Remove Stale Demo Scripts (#1180)
isVoid Jun 12, 2023
9d91cd3
Updates Build Instructions to Adjust for Devcontainer Instructions an…
isVoid Jun 20, 2023
bb6c7cb
Fix a small typo in pairwise_linestring_distance (#1199)
isVoid Jun 22, 2023
d5499d2
Simplify point-in-polygon header only APIs (#1192)
isVoid Jun 22, 2023
b047c6a
Add cmake infrastructure for internal projection library (#1132)
harrism Jun 24, 2023
3da3332
Add author credit to zipcode counting notebook, fix cudf string proce…
isVoid Jun 26, 2023
7cb3000
Use grid_stride_range in kernel loops (#1178)
harrism Jun 27, 2023
feff9eb
cuSpatial: Build CUDA 12 packages (#1044)
isVoid Jul 6, 2023
0ae38c7
Add CUDA major to `cuspatial`'s `build/string` (#1211)
jakirkham Jul 7, 2023
29fb208
Add streams to allocate_like call (#1218)
isVoid Jul 17, 2023
1e0e357
Update GeoDataFrame to Use the Structured GatherMap Class (#1219)
isVoid Jul 18, 2023
174ca0e
Revert CUDA 12.0 CI workflows to branch-23.08. (#1223)
bdice Jul 18, 2023
b0657dd
WGS84 <--> UTM projection header-only API (#1191)
harrism Jul 20, 2023
7f3231c
Use rapids-cmake to supply Google Benchmark library. (#1224)
bdice Jul 20, 2023
8d88bed
v23.10 Updates [skip ci]
raydouglass Jul 21, 2023
7cacad2
Use Google Benchmark from rapids-cmake in cuproj. (#1225)
bdice Jul 21, 2023
f5fc894
Merge pull request #1226 from rapidsai/branch-23.08
GPUtester Jul 21, 2023
8ee773c
Sort the mergeable segments before computing merged segments (#1207)
isVoid Jul 25, 2023
8f907d2
Merge pull request #1228 from rapidsai/branch-23.08
GPUtester Jul 25, 2023
e8d2145
Switch to new wheel building pipeline (#1227)
vyasr Jul 25, 2023
bbca8f9
Merge branch 'branch-23.08' into branch-23.10-merge-23.08
vyasr Jul 25, 2023
bd3085c
Merge pull request #1230 from vyasr/branch-23.10-merge-23.08
ajschmidt8 Jul 25, 2023
e4f5ac0
Fix overflowing in `intersection_intermediates.remove_if` (#1209)
isVoid Jul 28, 2023
8d6ca40
Merge pull request #1236 from rapidsai/branch-23.08
GPUtester Jul 28, 2023
8525f6b
Add `geoseries.distance` (#1231)
isVoid Jul 31, 2023
742b6b3
Merge pull request #1240 from rapidsai/branch-23.08
GPUtester Jul 31, 2023
657c507
Add Comprehensive Test for Multigeometry Range Classes (#1197)
isVoid Jul 31, 2023
7a50764
Merge pull request #1241 from rapidsai/branch-23.08
GPUtester Jul 31, 2023
fb240fe
Update to `rapidsai/devcontainers:23.08` (#1214)
trxcllnt Aug 2, 2023
cb7ce8e
WGS84 to UTM benchmark (C++) (#1216)
harrism Aug 2, 2023
01a1078
Improve Polygon.contains(LineString) predicate logic. (#1186)
thomcom Aug 2, 2023
6b4476b
Initial Python bindings for cuProj (#1217)
harrism Aug 2, 2023
1b1de7c
Adding Spherical Surface Processing Capability to Point-in-Polygon Qu…
ayasar70 Aug 3, 2023
d55fb40
cuSpatial 23.08 README updates (#1232)
jarmak-nv Aug 3, 2023
011c5f7
cuProj Python and C++ Documentation (#1237)
harrism Aug 3, 2023
a09cc0d
Update nightly wheel tests for cuproj (#1250)
raydouglass Aug 3, 2023
ae8eb90
Binary Predicates Introduction and Benchmark Notebook (#1156)
thomcom Aug 4, 2023
701bd12
Merge branch 'branch-23.08' into branch-23.10
thomcom Aug 4, 2023
278de03
All 23.10 version updates?
thomcom Aug 4, 2023
8177367
Remove cuspatial=23.10 dependency from cuproj.
thomcom Aug 4, 2023
48b3406
Remove cuspatial from pyproject.toml as well
thomcom Aug 4, 2023
19fff38
Drop cuspatial from cuproj test.
thomcom Aug 4, 2023
52238a0
Update to Cython 3.0.0 (#1235)
vyasr Aug 7, 2023
9d50b2f
Merge branch 'branch-23.10' into bug/fix-23.08-23.10-automerge
thomcom Aug 7, 2023
fb963ff
Merge pull request #1251 from thomcom/bug/fix-23.08-23.10-automerge
ajschmidt8 Aug 7, 2023
0cd7c34
Update Changelog [skip ci]
raydouglass Aug 9, 2023
456ebeb
Merge pull request #1254 from rapidsai/branch-23.08
GPUtester Aug 9, 2023
4220ab1
Change path to trajectories_extracted.p to improve CI run consistency…
thomcom Aug 10, 2023
f105464
Add LICENSE to wheels (#1255)
raydouglass Aug 10, 2023
3007d88
Merge pull request #1257 from rapidsai/branch-23.08
GPUtester Aug 10, 2023
88ee1bb
Add back deleted conda env files (#1261)
harrism Aug 19, 2023
7237565
Use `copy-pr-bot` (#1262)
ajschmidt8 Aug 28, 2023
a87d21f
[REVIEW] Add cudf example code for haversine distance into 23.10 (#1260)
taureandyernv Aug 30, 2023
56f7cfc
Use `conda mambabuild` not `mamba mambabuild` (#1265)
bdice Sep 8, 2023
a8adea4
Simplify wheel build scripts and allow alphas of RAPIDS dependencies …
divyegala Sep 8, 2023
7f14fb2
Update to clang 16.0.6. (#1266)
bdice Sep 19, 2023
b063e08
Update image names (#1269)
AyodeAwe Sep 21, 2023
f9d2a04
v23.12 Updates [skip ci]
raydouglass Sep 22, 2023
73412e6
Update devcontainers to align with other RAPIDS repositories (#1263)
trxcllnt Sep 25, 2023
6ebb3b7
fix update-version.sh (#1272)
trxcllnt Sep 26, 2023
3e4c691
Merge branch-23.10 into branch-23.12
harrism Sep 26, 2023
a20f984
fix dependencies.yaml
trxcllnt Sep 27, 2023
30da30a
bump devcontainer versions
trxcllnt Sep 27, 2023
22d4b9b
Merge pull request #1273 from harrism/branch-23.12-merge-23.10
raydouglass Sep 28, 2023
73e2df7
Add binary_predicates.ipynb workflow and test data to package. (#1258)
thomcom Oct 2, 2023
daf8277
Merge pull request #1274 from rapidsai/branch-23.10
GPUtester Oct 2, 2023
4fed6a9
Build CUDA 12.0 ARM conda packages. (#1275)
bdice Oct 3, 2023
366183c
Benchmark `GeoSeries.Distance` (#1277)
isVoid Oct 5, 2023
971bac2
Merge pull request #1278 from rapidsai/branch-23.10
GPUtester Oct 5, 2023
6c9ac11
Re-enable cuspatial tests and dependency. (#1253)
thomcom Oct 5, 2023
d3b1f70
Merge pull request #1279 from rapidsai/branch-23.10
GPUtester Oct 5, 2023
32d908f
Add `curl` for notebook testing (#1281)
raydouglass Oct 10, 2023
418ea72
Merge pull request #1282 from rapidsai/branch-23.10
GPUtester Oct 10, 2023
38bad5c
Update Changelog [skip ci]
raydouglass Oct 11, 2023
1d4b6e2
Merge pull request #1283 from rapidsai/branch-23.10
GPUtester Oct 11, 2023
16f704e
Use branch-23.12 workflows. (#1284)
bdice Oct 12, 2023
4b87030
update workflow links (#1287)
AyodeAwe Oct 18, 2023
74dd123
Pin theme (#1289)
vyasr Oct 26, 2023
8731137
Update versioning strategy (#1285)
vyasr Oct 31, 2023
71e83d9
v24.02 Updates [skip ci]
raydouglass Nov 9, 2023
252165c
Fix broken hausdorff test (#1295)
isVoid Nov 16, 2023
dbfec3d
Merge pull request #1296 from rapidsai/branch-23.12
GPUtester Nov 16, 2023
56261fa
Enable build concurrency for nightly and merge triggers. (#1298)
bdice Nov 17, 2023
4e37f64
Merge pull request #1299 from rapidsai/branch-23.12
GPUtester Nov 17, 2023
a4e5cb8
Pin actions/labeler to v4 [skip ci] (#1301)
raydouglass Dec 4, 2023
b7f0311
Merge pull request #1302 from rapidsai/branch-23.12
GPUtester Dec 4, 2023
4fbf7fd
Update Changelog [skip ci]
raydouglass Dec 6, 2023
13b297f
Merge pull request #1306 from rapidsai/branch-23.12
GPUtester Dec 6, 2023
feaf99e
Remove CUSPATIAL_BUILD_WHEELS and standardize Python builds (#1304)
vyasr Dec 6, 2023
289267f
Update dependencies.yaml to new pip index (#1305)
vyasr Dec 7, 2023
7eb9d57
Pin `proj` to `9.3.0` in `cuproj` (#1307)
jakirkham Dec 7, 2023
1602638
Merge pull request #1311 from rapidsai/branch-23.12
GPUtester Dec 7, 2023
cdccd49
Use Cython 3 for cuproj. (#1309)
bdice Dec 13, 2023
60de429
Switch to scikit-build-core (#1313)
vyasr Dec 13, 2023
8e8fa06
Use cuda::proclaim_return_type on device lambdas. (#1314)
bdice Dec 15, 2023
9501982
Update to CCCL 2.2.0. (#1315)
bdice Dec 20, 2023
48f601b
refactor CUDA versions in dependencies.yaml (#1317)
jameslamb Jan 11, 2024
36549cd
Remove usages of rapids-env-update (#1321)
KyleFromNVIDIA Jan 12, 2024
9b2b723
Update usage of cudf.core.column.arange to cudf.core.column.as_column…
AjayThorve Jan 13, 2024
43bb8f3
Add explicit initial size to all pools and avoid RMM detail APIs (#1319)
harrism Jan 16, 2024
0a321ec
DOC v24.04 Updates [skip ci]
raydouglass Jan 18, 2024
534b267
Replace cudf _from_columns with a public API (#1326)
mroeschke Jan 23, 2024
90d5446
Merge pull request #1331 from rapidsai/branch-24.02
GPUtester Jan 23, 2024
0eadc2d
fix formatting in developer guide (#1330)
jameslamb Jan 25, 2024
5e0cb36
handle more RAPIDS version formats in update-version.sh, refactor dep…
jameslamb Jan 25, 2024
6113f5f
Use ListColumn instead of build_list_column (#1327)
mroeschke Feb 1, 2024
7d8aa02
Merge pull request #1333 from rapidsai/branch-24.02
GPUtester Feb 1, 2024
d185528
Make sure cudf uses pyarrow's libarrow during wheel builds (#1334)
vyasr Feb 2, 2024
b6fc63f
Merge pull request #1335 from rapidsai/branch-24.02
GPUtester Feb 2, 2024
301a3e6
Exclude tests from builds (#1339)
vyasr Feb 7, 2024
ad975b3
Merge pull request #1340 from rapidsai/branch-24.02
GPUtester Feb 7, 2024
719c52a
Fix Broken CI for 24.04 (#1338)
isVoid Feb 7, 2024
eeab2a5
Support CUDA 12.2 (#1320)
jameslamb Feb 10, 2024
662e7dc
Update Changelog [skip ci]
raydouglass Feb 12, 2024
598750e
Merge pull request #1342 from rapidsai/branch-24.02
GPUtester Feb 12, 2024
14ef631
target branch-24.04 for GitHub Actions workflows (#1343)
jameslamb Feb 20, 2024
a3367da
updating ops-bot.yaml (#1337)
AyodeAwe Feb 21, 2024
e8be972
Remove -DNVBench_ENABLE_CUPTI=OFF. (#1325)
bdice Feb 26, 2024
9268b36
write PROJ build dir export rules (#1347)
trxcllnt Feb 27, 2024
603d764
Update devcontainers to CUDA Toolkit 12.2 (#1344)
trxcllnt Feb 27, 2024
59972f6
Add support for Python 3.11, require NumPy 1.23+ (#1348)
jameslamb Feb 29, 2024
54f0430
Fix Python 3.11 test failures (#1351)
KyleFromNVIDIA Mar 1, 2024
f29e404
Replace cudf column.full with cudf.as_column (#1350)
mroeschke Mar 5, 2024
baa1bbb
Automate C++ include file grouping and ordering using clang-format (#…
harrism Mar 6, 2024
b08f4f7
Switch `pytest-xdist` algorithm to `worksteal` (#1355)
bdice Mar 6, 2024
47a7961
Replace `cudf.core` imports with public APIs (#1356)
mroeschke Mar 6, 2024
6298419
Enable pytest failures on warnings from cudf (Ensure values being set…
mroeschke Mar 12, 2024
f410685
Remove hard-coding of RAPIDS version where possible (#1357)
KyleFromNVIDIA Mar 12, 2024
faf6d1c
Add upper bound to prevent usage of NumPy 2 (#1359)
bdice Mar 13, 2024
5727015
DOC v24.06 Updates [skip ci]
raydouglass Mar 15, 2024
a248b17
Update pre-commit-hooks to v0.0.3 (#1361)
KyleFromNVIDIA Mar 21, 2024
2800b06
Merge pull request #1362 from rapidsai/branch-24.04
GPUtester Mar 21, 2024
a6e6fd4
Use `conda env create --yes` instead of `--force` (#1364)
bdice Apr 1, 2024
bebeb1a
Merge pull request #1367 from rapidsai/branch-24.04
GPUtester Apr 1, 2024
e12030c
Update Changelog [skip ci]
raydouglass Apr 10, 2024
9451d13
Merge pull request #1372 from rapidsai/branch-24.04
GPUtester Apr 10, 2024
e42de2f
Enable all tests for `arm` jobs (#1365)
galipremsagar Apr 10, 2024
c5203dc
Enable pytest failures on warnings on FutureWarnings (Replace depreca…
mroeschke Apr 16, 2024
76762fc
Replace rmm::mr::device_memory_resource* with rmm::device_async_resou…
harrism Apr 18, 2024
37f35f8
Always use a static gtest and gbench (#1377)
trxcllnt Apr 26, 2024
2e83746
Enable warnings-as-errors for cuproj tests (#1379)
mroeschke May 3, 2024
83e332c
Migrate to `{{ stdlib("c") }}` (#1376)
hcho3 May 6, 2024
0324a33
Fix `JOIN_POINT_IN_POLYGON_LARGE_TEST_EXP` test (#1346)
trxcllnt May 6, 2024
d80834f
add --rm and --name to devcontainer run args (#1375)
trxcllnt May 7, 2024
61b8cc1
Fix up imports (#1383)
vyasr May 17, 2024
f4ec75f
DOC v24.08 Updates [skip ci]
raydouglass May 20, 2024
eff6753
create conda ci test env in one step (#1387)
msarahan May 24, 2024
8840189
Fix quadtree spatial join OOMs on large numbers of input polygons (#1…
trxcllnt May 24, 2024
559bcc7
Fix building cuspatial with CCCL main (#1382)
trxcllnt May 25, 2024
96f0217
Merge branch-24.06 into branch-24.08
trxcllnt May 28, 2024
efee9f7
update 24.6 -> 24.8
trxcllnt May 29, 2024
3414c78
Merge pull request #1390 from trxcllnt/branch-24.08-merge-24.06
raydouglass May 29, 2024
a81f016
remove unnecessary 'setuptools' dependencies (#1389)
jameslamb May 30, 2024
5a0c039
Update Changelog [skip ci]
raydouglass Jun 5, 2024
bd974cf
Merge pull request #1392 from rapidsai/branch-24.06
GPUtester Jun 5, 2024
8de055c
Fix test_intersections.py post cudf refactor (#1398)
mroeschke Jun 7, 2024
afb6a22
Adopt CI/packaging codeowners (#1397)
bdice Jun 7, 2024
62e6f7e
Allow anonymous user in devcontainer name (#1396)
bdice Jun 10, 2024
7b8175e
Remove text builds of documentation (#1394)
vyasr Jun 11, 2024
bc2ca80
use rapids-build-backend (#1393)
jameslamb Jun 12, 2024
e51e8b0
Change _GeoSeriesUtility._from_data(index=) default to None (#1400)
mroeschke Jul 8, 2024
20ef0e7
Fix multipolygon geometry iterator. (#1402)
bdice Jul 9, 2024
400cbe3
skip CMake 3.30.0 (#1401)
jameslamb Jul 9, 2024
c8616c1
Fix geopandas upgrades (#1404)
quasiben Jul 10, 2024
8636b03
test notebooks in 'docs/', make cuspatial_api_examples self-contained…
jameslamb Jul 19, 2024
068f461
Build and test with CUDA 12.5.1 (#1405)
KyleFromNVIDIA Jul 19, 2024
76e6113
Use verify-alpha-spec hook (#1399)
KyleFromNVIDIA Jul 19, 2024
2bbb904
Conda: Move `cmake` to `requirements/build` (#1409)
jakirkham Jul 19, 2024
7f76560
Ensure _from_data accepts columns objects only (#1415)
mroeschke Jul 25, 2024
58d4212
split up CUDA-suffixed dependencies in dependencies.yaml (#1414)
jameslamb Jul 25, 2024
3eddae7
cast numba devicendarray to cupy array
isVoid Jul 30, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
35 changes: 35 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# syntax=docker/dockerfile:1.5

ARG BASE
ARG PYTHON_PACKAGE_MANAGER=conda

FROM ${BASE} as pip-base

ENV DEFAULT_VIRTUAL_ENV=rapids

RUN apt update -y \
&& DEBIAN_FRONTEND=noninteractive apt install -y \
sqlite3 libsqlite3-dev libtiff-dev libcurl4-openssl-dev \
&& rm -rf /tmp/* /var/tmp/* /var/cache/apt/* /var/lib/apt/lists/*;

FROM ${BASE} as conda-base

ENV DEFAULT_CONDA_ENV=rapids

FROM ${PYTHON_PACKAGE_MANAGER}-base

ARG CUDA
ENV CUDAARCHS="RAPIDS"
ENV CUDA_VERSION="${CUDA_VERSION:-${CUDA}}"

ARG PYTHON_PACKAGE_MANAGER
ENV PYTHON_PACKAGE_MANAGER="${PYTHON_PACKAGE_MANAGER}"

ENV PYTHONSAFEPATH="1"
ENV PYTHONUNBUFFERED="1"
ENV PYTHONDONTWRITEBYTECODE="1"

ENV SCCACHE_REGION="us-east-2"
ENV SCCACHE_BUCKET="rapids-sccache-devs"
ENV VAULT_HOST="https://vault.ops.k8s.rapids.ai"
ENV HISTFILE="/home/coder/.cache/._bash_history"
35 changes: 35 additions & 0 deletions .devcontainer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# cuSpatial Development Containers

This directory contains [devcontainer configurations](https://containers.dev/implementors/json_reference/) for using VSCode to [develop in a container](https://code.visualstudio.com/docs/devcontainers/containers) via the `Remote Containers` [extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) or [GitHub Codespaces](https://github.com/codespaces).

This container is a turnkey development environment for building and testing the cuSpatial C++ and Python libraries.

## Table of Contents

* [Prerequisites](#prerequisites)
* [Host bind mounts](#host-bind-mounts)
* [Launch a Dev Container](#launch-a-dev-container)

## Prerequisites

* [VSCode](https://code.visualstudio.com/download)
* [VSCode Remote Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)

## Host bind mounts

By default, the following directories are bind-mounted into the devcontainer:

* `${repo}:/home/coder/cuspatial`
* `${repo}/../.aws:/home/coder/.aws`
* `${repo}/../.local:/home/coder/.local`
* `${repo}/../.cache:/home/coder/.cache`
* `${repo}/../.conda:/home/coder/.conda`
* `${repo}/../.config:/home/coder/.config`

This ensures caches, configurations, dependencies, and your commits are persisted on the host across container runs.

## Launch a Dev Container

To launch a devcontainer from VSCode, open the cuSpatial repo and select the "Reopen in Container" button in the bottom right:<br/><img src="https://user-images.githubusercontent.com/178183/221771999-97ab29d5-e718-4e5f-b32f-2cdd51bba25c.png"/>

Alternatively, open the VSCode command palette (typically `cmd/ctrl + shift + P`) and run the "Rebuild and Reopen in Container" command.
42 changes: 42 additions & 0 deletions .devcontainer/cuda11.8-conda/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"build": {
"context": "${localWorkspaceFolder}/.devcontainer",
"dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
"args": {
"CUDA": "11.8",
"PYTHON_PACKAGE_MANAGER": "conda",
"BASE": "rapidsai/devcontainers:24.08-cpp-cuda11.8-mambaforge-ubuntu22.04"
}
},
"runArgs": [
"--rm",
"--name",
"${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda11.8-conda"
],
"hostRequirements": {"gpu": "optional"},
"features": {
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:24.8": {}
},
"overrideFeatureInstallOrder": [
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
],
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda11.8-envs}"],
"postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
"workspaceFolder": "/home/coder",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind,consistency=consistent",
"mounts": [
"source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda11.8-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
],
"customizations": {
"vscode": {
"extensions": [
"ms-python.flake8",
"nvidia.nsight-vscode-edition"
]
}
}
}
41 changes: 41 additions & 0 deletions .devcontainer/cuda11.8-pip/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"build": {
"context": "${localWorkspaceFolder}/.devcontainer",
"dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
"args": {
"CUDA": "11.8",
"PYTHON_PACKAGE_MANAGER": "pip",
"BASE": "rapidsai/devcontainers:24.08-cpp-cuda11.8-ubuntu22.04"
}
},
"runArgs": [
"--rm",
"--name",
"${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda11.8-pip"
],
"hostRequirements": {"gpu": "optional"},
"features": {
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:24.8": {}
},
"overrideFeatureInstallOrder": [
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
],
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda11.8-venvs}"],
"postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
"workspaceFolder": "/home/coder",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind,consistency=consistent",
"mounts": [
"source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda11.8-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent"
],
"customizations": {
"vscode": {
"extensions": [
"ms-python.flake8",
"nvidia.nsight-vscode-edition"
]
}
}
}
42 changes: 42 additions & 0 deletions .devcontainer/cuda12.5-conda/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"build": {
"context": "${localWorkspaceFolder}/.devcontainer",
"dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
"args": {
"CUDA": "12.5",
"PYTHON_PACKAGE_MANAGER": "conda",
"BASE": "rapidsai/devcontainers:24.08-cpp-mambaforge-ubuntu22.04"
}
},
"runArgs": [
"--rm",
"--name",
"${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda12.5-conda"
],
"hostRequirements": {"gpu": "optional"},
"features": {
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:24.8": {}
},
"overrideFeatureInstallOrder": [
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
],
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config,conda/pkgs,conda/${localWorkspaceFolderBasename}-cuda12.5-envs}"],
"postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
"workspaceFolder": "/home/coder",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind,consistency=consistent",
"mounts": [
"source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.conda/pkgs,target=/home/coder/.conda/pkgs,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.conda/${localWorkspaceFolderBasename}-cuda12.5-envs,target=/home/coder/.conda/envs,type=bind,consistency=consistent"
],
"customizations": {
"vscode": {
"extensions": [
"ms-python.flake8",
"nvidia.nsight-vscode-edition"
]
}
}
}
41 changes: 41 additions & 0 deletions .devcontainer/cuda12.5-pip/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"build": {
"context": "${localWorkspaceFolder}/.devcontainer",
"dockerfile": "${localWorkspaceFolder}/.devcontainer/Dockerfile",
"args": {
"CUDA": "12.5",
"PYTHON_PACKAGE_MANAGER": "pip",
"BASE": "rapidsai/devcontainers:24.08-cpp-cuda12.5-ubuntu22.04"
}
},
"runArgs": [
"--rm",
"--name",
"${localEnv:USER:anon}-rapids-${localWorkspaceFolderBasename}-24.08-cuda12.5-pip"
],
"hostRequirements": {"gpu": "optional"},
"features": {
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils:24.8": {}
},
"overrideFeatureInstallOrder": [
"ghcr.io/rapidsai/devcontainers/features/rapids-build-utils"
],
"initializeCommand": ["/bin/bash", "-c", "mkdir -m 0755 -p ${localWorkspaceFolder}/../.{aws,cache,config/pip,local/share/${localWorkspaceFolderBasename}-cuda12.5-venvs}"],
"postAttachCommand": ["/bin/bash", "-c", "if [ ${CODESPACES:-false} = 'true' ]; then . devcontainer-utils-post-attach-command; . rapids-post-attach-command; fi"],
"workspaceFolder": "/home/coder",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/coder/cuspatial,type=bind,consistency=consistent",
"mounts": [
"source=${localWorkspaceFolder}/../.aws,target=/home/coder/.aws,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.cache,target=/home/coder/.cache,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.config,target=/home/coder/.config,type=bind,consistency=consistent",
"source=${localWorkspaceFolder}/../.local/share/${localWorkspaceFolderBasename}-cuda12.5-venvs,target=/home/coder/.local/share/venvs,type=bind,consistency=consistent"
],
"customizations": {
"vscode": {
"extensions": [
"ms-python.flake8",
"nvidia.nsight-vscode-edition"
]
}
}
}
24 changes: 24 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright (c) 2019-2023, NVIDIA CORPORATION.

[flake8]
filename = *.py, *.pyx, *.pxd, *.pxi
exclude = __init__.py, *.egg, build, docs, .git
force-check = True
ignore =
# line break before binary operator
W503,
# whitespace before :
E203
per-file-ignores =
# Rules ignored only in Cython:
# E211: whitespace before '(' (used in multi-line imports)
# E225: Missing whitespace around operators (breaks cython casting syntax like <int>)
# E226: Missing whitespace around arithmetic operators (breaks cython pointer syntax like int*)
# E227: Missing whitespace around bitwise or shift operator (Can also break casting syntax)
# E275: Missing whitespace after keyword (Doesn't work with Cython except?)
# E402: invalid syntax (works for Python, not Cython)
# E999: invalid syntax (works for Python, not Cython)
# W504: line break after binary operator (breaks lines that end with a pointer)
*.pyx: E211, E225, E226, E227, E275, E402, E999, W504
*.pxd: E211, E225, E226, E227, E275, E402, E999, W504
*.pxi: E211, E225, E226, E227, E275, E402, E999, W504
17 changes: 11 additions & 6 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -8,9 +8,14 @@ python/ @rapidsai/cuspatial-python-codeowners
**/CMakeLists.txt @rapidsai/cuspatial-cmake-codeowners
**/cmake/ @rapidsai/cuspatial-cmake-codeowners

# build/ops code owners
.github/ @rapidsai/ops-codeowners
ci/ @rapidsai/ops-codeowners
conda/ @rapidsai/ops-codeowners
**/Dockerfile @rapidsai/ops-codeowners
**/.dockerignore @rapidsai/ops-codeowners
# CI code owners
/.github/ @rapidsai/ci-codeowners
/ci/ @rapidsai/ci-codeowners
/.pre-commit-config.yaml @rapidsai/ci-codeowners

# packaging code owners
/.devcontainer/ @rapidsai/packaging-codeowners
/conda/ @rapidsai/packaging-codeowners
/dependencies.yaml @rapidsai/packaging-codeowners
/build.sh @rapidsai/packaging-codeowners
pyproject.toml @rapidsai/packaging-codeowners
26 changes: 0 additions & 26 deletions .github/ISSUE_TEMPLATE/bug_report.md

This file was deleted.

88 changes: 88 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# 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.

name: Bug Report
description: File a bug report for cuSpatial
title: "[BUG]: "
labels: ["bug"]

body:
- type: markdown
attributes:
value: |
Thanks for taking the time to help cuSpatial and fill out this bug report!
- By submitting this issue, you agree to follow our [Code of Conduct](https://docs.rapids.ai/resources/conduct/)
- You also confirm that you have searched the [open bugs](https://github.com/rapidsai/cuspatial/issues?q=is%3Aopen+is%3Aissue+label%3Abug) and have found no duplicates for this request
- type: input
id: version
attributes:
label: Version
description: What version of cuSpatial are you running?
placeholder: "example: 22.10"
validations:
required: true

- type: dropdown
id: installation-method
attributes:
label: On which installation method(s) does this occur?
multiple: true
options:
- Docker
- Conda
- Source
- Rapids-Compose

- type: textarea
id: description
attributes:
label: Describe the issue
description: Please provide a complete and succinct description of the problem, including what you expected to happen.
placeholder: XYZ occurred, I expected QRS results
validations:
required: true

- type: textarea
id: mvr
attributes:
label: Minimum reproducible example
description: Please supply a [minimum reproducible code example](https://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports) here.
render: shell

- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please paste relevant error and log output here
render: shell

- type: textarea
id: env-details
attributes:
label: Environment details
description: Please specify installation info and paste the results from [print_env.sh](https://github.com/rapidsai/cuspatial/blob/main/print_env.sh) here
placeholder: |
+ Environment location: [Bare-metal, Docker, Cloud(specify cloud provider)]
+ If method of install is Docker, provide `docker pull` & `docker run` commands used
+ Paste in print_env.sh (linked above) output here
render: shell

- type: textarea
id: misc
attributes:
label: Other/Misc.
description: Please enter any other helpful information here.

5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Ask a Question
url: https://github.com/rapidsai/cuspatial/discussions
about: Thanks for taking the time to ask us a question!
35 changes: 0 additions & 35 deletions .github/ISSUE_TEMPLATE/documentation-request.md

This file was deleted.

64 changes: 64 additions & 0 deletions .github/ISSUE_TEMPLATE/documentation_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# 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.

name: Documentation Request
description: Request updates or additions to cuSpatial's documentation
title: "[DOC]: "
labels: ["doc"]

body:
- type: markdown
attributes:
value: |
Thanks for taking the time to help cuSpatial and improve our documentation!
- By submitting this issue, you agree to follow our [Code of Conduct](https://docs.rapids.ai/resources/conduct/)
- You also confirm that you have searched the [open documentation issues](https://github.com/rapidsai/cuspatial/issues?q=is%3Aopen+is%3Aissue+label%3Adoc) and have found no duplicates for this request
- type: dropdown
id: criticality
attributes:
label: How would you describe the priority of this documentation request
options:
- Critical (currently preventing usage)
- Medium
- Low (would be nice)
validations:
required: true

- type: dropdown
id: new_or_correction
attributes:
label: Is this for new documentation, or an update to existing docs?
options:
- New
- Update
validations:
required: true

- type: textarea
id: problem
attributes:
label: Describe the incorrect/future/missing documentation
placeholder: "Example: A code snippet mentions function foo(args) but I cannot find any documentation on it."
validations:
required: true

- type: textarea
id: search_locs
attributes:
label: If this is a correction, please provide a link to the incorrect documentation. If this is a new documentation request, please link to where you have looked.
placeholder: |
https://docs.rapids.ai/api/cuspatial/stable/ and
https://docs.rapids.ai/api/cuspatial/nightly
20 changes: 0 additions & 20 deletions .github/ISSUE_TEMPLATE/feature_request.md

This file was deleted.

71 changes: 71 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# 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.

name: Feature Request
description: Request new or improved functionality or changes to existing cuSpatial functionality
title: "[FEA]: "
labels: ["feature request"]

body:
- type: markdown
attributes:
value: |
Thanks for taking the time to help cuSpatial and fill out this feature request!
- By submitting this issue, you agree to follow our [Code of Conduct](https://docs.rapids.ai/resources/conduct/)
- You also confirm that you have searched the [open feature requests](https://github.com/rapidsai/cuspatial/issues?q=is%3Aopen+is%3Aissue+label%3A%22feature+request%22%2Cimprovement%2Cenhancement) and have found no duplicates for this request
- type: dropdown
id: new_or_improvement
attributes:
label: Is this a new feature, an improvement, or a change to existing functionality?
options:
- New Feature
- Improvement
- Change
validations:
required: true

- type: dropdown
id: criticality
attributes:
label: How would you describe the priority of this feature request
options:
- Critical (currently preventing usage)
- Medium
- Low (would be nice)
validations:
required: true

- type: textarea
id: problem
attributes:
label: Please provide a clear description of problem you would like to solve.
description: Real usage examples are especially helpful. If there is an existing function you use in a different library, please also provide a link.
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Describe any alternatives you have considered
description: List any other libraries, or approaches you have looked at or tried.
placeholder: I have looked at library xyz and qrs, but they do not offer GPU acceleration

- type: textarea
id: misc
attributes:
label: Additional context
description: Add any other context, code examples, or references to existing implementations about the feature request here.

10 changes: 0 additions & 10 deletions .github/ISSUE_TEMPLATE/submit-question.md

This file was deleted.

53 changes: 9 additions & 44 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,44 +1,9 @@
<!--
Thank you for contributing to cuSpatial :)
Here are some guidelines to help the review process go smoothly.
1. Please write a description in this text box of the changes that are being
made.
2. Please ensure that you have written units tests for the changes made/features
added.
3. If you are closing an issue please use one of the automatic closing words as
noted here: https://help.github.com/articles/closing-issues-using-keywords/
4. If your pull request is not ready for review but you want to make use of the
continuous integration testing facilities please label it with `[WIP]`.
5. If your pull request is ready to be reviewed without requiring additional
work on top of it, then remove the `[WIP]` label (if present) and replace
it with `[REVIEW]`. If assistance is required to complete the functionality,
for example when the C/C++ code of a feature is complete but Python bindings
are still required, then add the label `[HELP-REQ]` so that others can triage
and assist. The additional changes then can be implemented on top of the
same PR. If the assistance is done by members of the rapidsAI team, then no
additional actions are required by the creator of the original PR for this,
otherwise the original author of the PR needs to give permission to the
person(s) assisting to commit to their personal fork of the project. If that
doesn't happen then a new PR based on the code of the original PR can be
opened by the person assisting, which then will be the PR that will be
merged.
6. Once all work has been done and review has taken place please do not add
features or make changes out of the scope of those requested by the reviewer
(doing this just add delays as already reviewed code ends up having to be
re-reviewed/it is hard to tell what is new etc!). Further, please do not
rebase your branch on master/force push/rewrite history, doing any of these
causes the context of any comments made by reviewers to be lost. If
conflicts occur against master they should be resolved by merging master
into the branch used for making the pull request.
Many thanks in advance for your cooperation!
-->
## Description
<!-- Provide a standalone description of changes in this PR. -->
<!-- Reference any issues closed by this PR with "closes #1234". -->
<!-- Note: The pull request title will be included in the CHANGELOG. -->

## Checklist
- [ ] I am familiar with the [Contributing Guidelines](https://github.com/rapidsai/cuspatial/blob/HEAD/CONTRIBUTING.md).
- [ ] New or existing tests cover these changes.
- [ ] The documentation is up to date with these changes.
4 changes: 4 additions & 0 deletions .github/copy-pr-bot.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Configuration file for `copy-pr-bot` GitHub App
# https://docs.gha-runners.nvidia.com/apps/copy-pr-bot/

enabled: true
23 changes: 23 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# https://github.com/actions/labeler#common-examples
# Adapted from https://github.com/rapidsai/cuspatial/blob/main/.github/CODEOWNERS
# Labels culled from https://github.com/rapidsai/cuspatial/labels

Python:
- 'python/**'
- 'notebooks/**'

libcuspatial:
- 'cpp/**'

CMake:
- '**/CMakeLists.txt'
- '**/cmake/**'

ci:
- 'ci/**'

conda:
- 'conda/**'

Java:
- 'java/**'
9 changes: 9 additions & 0 deletions .github/ops-bot.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# This file controls which features from the `ops-bot` repository below are enabled.
# - https://github.com/rapidsai/ops-bot

auto_merger: true
branch_checker: true
label_checker: true
release_drafter: true
recently_updated: true
forward_merger: true
106 changes: 106 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: build

on:
push:
branches:
- "branch-*"
tags:
- v[0-9][0-9].[0-9][0-9].[0-9][0-9]
workflow_dispatch:
inputs:
branch:
required: true
type: string
date:
required: true
type: string
sha:
required: true
type: string
build_type:
type: string
default: nightly

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
cancel-in-progress: true

jobs:
cpp-build:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-24.08
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
python-build:
needs: [cpp-build]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-24.08
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
upload-conda:
needs: [cpp-build, python-build]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-upload-packages.yaml@branch-24.08
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
docs-build:
if: github.ref_type == 'branch'
needs: python-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.08
with:
arch: "amd64"
branch: ${{ inputs.branch }}
build_type: ${{ inputs.build_type || 'branch' }}
container_image: "rapidsai/ci-conda:latest"
date: ${{ inputs.date }}
node_type: "gpu-v100-latest-1"
run_script: "ci/build_docs.sh"
sha: ${{ inputs.sha }}
wheel-build-cuspatial:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-24.08
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
sha: ${{ inputs.sha }}
date: ${{ inputs.date }}
script: ci/build_wheel_cuspatial.sh
wheel-publish-cuspatial:
needs: wheel-build-cuspatial
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-24.08
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
sha: ${{ inputs.sha }}
date: ${{ inputs.date }}
package-name: cuspatial
wheel-build-cuproj:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-24.08
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
sha: ${{ inputs.sha }}
date: ${{ inputs.date }}
script: ci/build_wheel_cuproj.sh
wheel-publish-cuproj:
needs: wheel-build-cuproj
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-publish.yaml@branch-24.08
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
sha: ${{ inputs.sha }}
date: ${{ inputs.date }}
package-name: cuproj
45 changes: 45 additions & 0 deletions .github/workflows/external-issue-labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# SPDX-FileCopyrightText: Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# 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.

name: Triage outside issues

on:
issues:
types:
- opened

env:
GITHUB_TOKEN: ${{ secrets.ISSUE_PR_WRITE_GITHUB_TOKEN }}

jobs:
Label-Issue:
runs-on: ubuntu-latest
# Only run if the issue author is not part of RAPIDS
if: ${{ ! contains(fromJSON('["OWNER", "MEMBER", "CONTRIBUTOR", "COLLABORATOR"]'), github.event.issue.author_association)}}
steps:
- name: add-external-labels
run: |
issue_url=${{ github.event.issue.html_url }}
gh issue edit ${issue_url} --add-label "Needs Triage,External"
- name: add-comment-to-issue
run: |
issue_url=${{ github.event.issue.html_url }}
author=${{ github.event.issue.user.login }}
echo ${author}
gh issue comment ${issue_url} --body "Hi @${author}!
Thanks for submitting this issue - our team has been notified and we'll get back to you as soon as we can!
In the mean time, feel free to add any relevant information to this issue."
11 changes: 11 additions & 0 deletions .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: "Pull Request Labeler"
on:
- pull_request_target

jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
35 changes: 0 additions & 35 deletions .github/workflows/new-issues-to-triage-projects.yml

This file was deleted.

115 changes: 115 additions & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
name: pr

on:
push:
branches:
- "pull-request/[0-9]+"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
pr-builder:
needs:
- checks
- conda-cpp-build
- conda-cpp-tests
- conda-python-build
- conda-python-tests
- conda-notebook-tests
- docs-build
- wheel-build-cuspatial
- wheel-tests-cuspatial
- wheel-build-cuproj
- wheel-tests-cuproj
- devcontainer
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/pr-builder.yaml@branch-24.08
checks:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/checks.yaml@branch-24.08
with:
enable_check_generated_files: false
conda-cpp-build:
needs: checks
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-build.yaml@branch-24.08
with:
build_type: pull-request
conda-cpp-tests:
needs: conda-cpp-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@branch-24.08
with:
build_type: pull-request
conda-python-build:
needs: conda-cpp-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-build.yaml@branch-24.08
with:
build_type: pull-request
conda-python-tests:
needs: conda-python-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-24.08
with:
build_type: pull-request
conda-notebook-tests:
needs: conda-python-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.08
with:
build_type: pull-request
node_type: "gpu-v100-latest-1"
arch: "amd64"
container_image: "rapidsai/ci-conda:latest"
run_script: "ci/test_notebooks.sh"
docs-build:
needs: conda-python-build
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@branch-24.08
with:
build_type: pull-request
node_type: "gpu-v100-latest-1"
arch: "amd64"
container_image: "rapidsai/ci-conda:latest"
run_script: "ci/build_docs.sh"
wheel-build-cuspatial:
needs: checks
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-24.08
with:
build_type: pull-request
script: ci/build_wheel_cuspatial.sh
wheel-tests-cuspatial:
needs: wheel-build-cuspatial
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-24.08
with:
build_type: pull-request
script: ci/test_wheel_cuspatial.sh
wheel-build-cuproj:
needs: checks
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@branch-24.08
with:
build_type: pull-request
script: ci/build_wheel_cuproj.sh
wheel-tests-cuproj:
needs: [wheel-build-cuspatial, wheel-build-cuproj]
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-24.08
with:
build_type: pull-request
script: ci/test_wheel_cuproj.sh
devcontainer:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/build-in-devcontainer.yaml@branch-24.08
with:
arch: '["amd64"]'
cuda: '["12.5"]'
build_command: |
sccache -z;
build-all -DBUILD_TESTS=ON -DBUILD_BENCHMARKS=ON --verbose;
sccache -s;
50 changes: 50 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: test

on:
workflow_dispatch:
inputs:
branch:
required: true
type: string
date:
required: true
type: string
sha:
required: true
type: string

jobs:
conda-cpp-tests:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-cpp-tests.yaml@branch-24.08
with:
build_type: nightly
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
conda-python-tests:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/conda-python-tests.yaml@branch-24.08
with:
build_type: nightly
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
wheel-tests-cuspatial:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-24.08
with:
build_type: nightly
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
script: ci/test_wheel_cuspatial.sh
wheel-tests-cuproj:
secrets: inherit
uses: rapidsai/shared-workflows/.github/workflows/wheels-test.yaml@branch-24.08
with:
build_type: nightly
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
script: ci/test_wheel_cuproj.sh
22 changes: 22 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@ DartConfiguration.tcl
dist/
cuspatial.egg-info/
python/build
_skbuild
python/*/build
python/cuspatial/*/_lib/**/*.cpp
python/cuspatial/*/_lib/**/*.h
@@ -42,6 +43,11 @@ wheels/
*.egg
pip-log.txt
pip-delete-this-directory.txt
naturalearth_lowres_polygon.cpg
naturalearth_lowres_polygon.dbf
naturalearth_lowres_polygon.prj
naturalearth_lowres_polygon.shp
naturalearth_lowres_polygon.shx

# Unit test / coverage reports
htmlcov/
@@ -66,6 +72,9 @@ build/
cpp/build/
cpp/thirdparty/googletest/

## CI build directories
build_rapidsai*/

## Eclipse IDE
.project
.cproject
@@ -137,3 +146,16 @@ ENV/

# mypy
.mypy_cache/

# notebook/example generated files
docs/source/user_guide/cache/
docs/source/user_guide/*.csv
notebooks/taxi2016.csv
notebooks/taxi2017.csv
notebooks/tzones_lonlat.json
notebooks/cu_taxi.zones.*
*.parquet

# clang tooling
compile_commands.json
.clangd/
61 changes: 48 additions & 13 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,23 +1,58 @@
# Copyright (c) 2019-2024, NVIDIA CORPORATION.

repos:
- repo: https://github.com/timothycrosley/isort
rev: 5.0.4
- repo: https://github.com/PyCQA/isort
rev: 5.12.0
hooks:
- id: isort
- repo: https://github.com/ambv/black
rev: stable
# Use the config file specific to each subproject so that each
# project can specify its own first/third-party packages.
args: ["--config-root=python/", "--resolve-all-configs"]
files: python/.*
types_or: [python, cython, pyi]
- repo: https://github.com/psf/black
rev: 22.3.0
hooks:
- id: black
- repo: https://gitlab.com/pycqa/flake8
rev: 3.7.7
files: python/cuspatial/.*
# Explicitly specify the pyproject.toml at the repo root, not per-project.
args: ["--config", "pyproject.toml"]
- repo: https://github.com/PyCQA/flake8
rev: 5.0.4
hooks:
- id: flake8
- repo: https://gitlab.com/pycqa/flake8
rev: 3.7.7
args: ["--config=.flake8"]
files: python/.*$
types: [file]
types_or: [python, cython]
additional_dependencies: ["flake8-force"]
- repo: https://github.com/MarcoGorelli/cython-lint
rev: v0.1.10
hooks:
- id: flake8
alias: flake8-cython
name: flake8-cython
args: ["--config=python/cuspatial/.flake8.cython"]
types: [cython]
- id: cython-lint
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v16.0.6
hooks:
- id: clang-format
types_or: [c, c++, cuda]
args: ["-fallback-style=none", "-style=file", "-i"]
- repo: https://github.com/codespell-project/codespell
rev: v2.2.4
hooks:
- id: codespell
args: ["--config pyproject.toml"]
additional_dependencies: ["tomli"]
- repo: https://github.com/rapidsai/pre-commit-hooks
rev: v0.2.0
hooks:
- id: verify-copyright
- id: verify-alpha-spec
- repo: https://github.com/rapidsai/dependency-file-generator
rev: v1.13.11
hooks:
- id: rapids-dependency-file-generator
args: ["--clean"]


default_language_version:
python: python3
769 changes: 767 additions & 2 deletions CHANGELOG.md

Large diffs are not rendered by default.

52 changes: 1 addition & 51 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,53 +1,3 @@
# Contributing to cuSpatial

If you are interested in contributing to cuSpatial, your contributions will fall
into three categories:
1. You want to report a bug, feature request, or documentation issue
- File an [issue](https://github.com/rapidsai/cuspatial/issues/new/choose)
describing what you encountered or what you want to see changed.
- The RAPIDS team will evaluate the issues and triage them, scheduling
them for a release. If you believe the issue needs priority attention
comment on the issue to notify the team.
2. You want to propose a new Feature and implement it
- Post about your intended feature, and we shall discuss the design and
implementation.
- Once we agree that the plan looks good, go ahead and implement it, using
the [code contributions](#code-contributions) guide below.
3. You want to implement a feature or bug-fix for an outstanding issue
- Follow the [code contributions](#code-contributions) guide below.
- If you need more context on a particular issue, please ask and we shall
provide.

## Code contributions

### Your first issue

1. Read the project's [README.md](https://github.com/rapidsai/cuspatial/blob/main/README.md)
to learn how to setup the development environment
2. Find an issue to work on. The best way is to look for the [good first issue](https://github.com/rapidsai/cuspatial/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
or [help wanted](https://github.com/rapidsai/cuspatial/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) labels
3. Comment on the issue saying you are going to work on it
4. Code! Make sure to update unit tests!
5. When done, [create your pull request](https://github.com/rapidsai/cuspatial/compare)
6. Verify that CI passes all [status checks](https://help.github.com/articles/about-status-checks/). Fix if needed
7. Wait for other developers to review your code and update code as needed
8. Once reviewed and approved, a RAPIDS developer will merge your pull request

Remember, if you are unsure about anything, don't hesitate to comment on issues
and ask for clarifications!

### Seasoned developers

Once you have gotten your feet wet and are more comfortable with the code, you
can look at the prioritized issues of our next release in our [project boards](https://github.com/rapidsai/cuspatial/projects).

> **Pro Tip:** Always look at the release board with the highest number for
issues to work on. This is where RAPIDS developers also focus their efforts.

Look at the unassigned issues, and find an issue you are comfortable with
contributing to. Start with _Step 3_ from above, commenting on the issue to let
others know you are working on it. If you have any questions related to the
implementation of the issue, ask them in the issue instead of the PR.

## Attribution
Portions adopted from https://github.com/pytorch/pytorch/blob/master/CONTRIBUTING.md
See [cuspatial contributing guide](https://docs.rapids.ai/api/cuspatial/nightly/developer_guide/contributing_guide.html)
243 changes: 182 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,78 +1,199 @@
# <div align="left"><img src="https://rapids.ai/assets/images/rapids_logo.png" width="90px"/>&nbsp;cuSpatial - GPU-Accelerated Spatial and Trajectory Data Management and Analytics Library</div>

[![Build Status](https://gpuci.gpuopenanalytics.com/job/rapidsai/job/gpuci/job/cuspatial/job/branches/job/cuspatial-branch-pipeline/badge/icon)](https://gpuci.gpuopenanalytics.com/job/rapidsai/job/gpuci/job/cuspatial/job/branches/job/cuspatial-branch-pipeline/)

**NOTE:** cuSpatial depends on [cuDF](https://github.com/rapidsai/cudf) and
[RMM](https://github.com/rapidsai/rmm) from [RAPIDS](https://rapids.ai/).

## Implemented operations:
cuSpatial supports the following operations on spatial and trajectory data:
1. Spatial window query
2. Point-in-polygon test
3. Haversine distance
4. Hausdorff distance
5. Deriving trajectories from point location data
6. Computing distance/speed of trajectories
7. Computing spatial bounding boxes of trajectories

Future support is planned for the following operations.
1. Temporal window query
2. Temporal point query (year+month+day+hour+minute+second+millisecond)
3. Point-to-polyline nearest neighbor distance
4. Grid-based indexing for points and polygons
5. Quadtree-based indexing for large-scale point data
6. R-Tree-based indexing for Polygons/Polylines

## Install from Conda
To install via conda:
# <div align="left"><img src="https://rapids.ai/assets/images/rapids_logo.png" width="90px"/>&nbsp;cuSpatial - GPU-Accelerated Vector Geospatial Data Analysis</div>

> **Note**
>
> cuSpatial depends on [cuDF](https://github.com/rapidsai/cudf) and [RMM](https://github.com/rapidsai/rmm) from [RAPIDS](https://rapids.ai/).
## cuProj - GPU-accelerated Coordinate Reference System (CRS) Transformations
cuProj is a new RAPIDS library housed within the cuSpatial repo that provides GPU-accelerated transformations of coordinates between coordinate reference systems (CRS). cuProj is available as of release 23.10 with support for transformations of WGS84 coordinates to and from Universal Transverse Mercator (UTM) :globe_with_meridians:.

To learn more about cuProj, see the [Python cuProj README](python/cuproj/README.md) or the [c++ libcuproj README](cpp/cuproj/README.md).

## Resources

- [cuSpatial User's Guide](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html): Python API reference and guides
- [cuSpatial Developer Documentation](https://docs.rapids.ai/api/cuspatial/stable/developer_guide/index.html): Understand cuSpatial's architecture
- [Getting Started](https://docs.rapids.ai/install#selector): Installation options for cuSpatial
- [cuSpatial Community](https://github.com/rapidsai/cuspatial/discussions): Get help, collaborate, and ask the team questions
- [cuSpatial Issues](https://github.com/rapidsai/cuspatial/issues/new/choose): Request a feature/documentation or report a bug

## Overview
cuSpatial accelerates vector geospatial operations through GPU parallelization. As part of the RAPIDS libraries, cuSpatial is inherently connected to [cuDF](https://github.com/rapidsai/cudf), [cuML](https://github.com/rapidsai/cuml), and [cuGraph](https://github.com/rapidsai/cugraph), enabling GPU acceleration across entire workflows.

cuSpatial represents data in [GeoArrow](https://github.com/geoarrow/geoarrow) format, which enables compatibility with the [Apache Arrow](https://arrow.apache.org) ecosystem.

cuSpatial's Python API is closely matched to GeoPandas and data can seamlessly transition between the two:
```python
import geopandas
from shapely.geometry import Polygon
import cuspatial

p1 = Polygon([(0, 0), (1, 0), (1, 1)])
p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
geoseries = geopandas.GeoSeries([p1, p2])

cuspatial_geoseries = cuspatial.from_geopandas(geoseries)
print(cuspatial_geoseries)
```
Output:
```
conda install -c conda-forge -c rapidsai-nightly cuspatial
0 POLYGON ((0 0, 1 0, 1 1, 0 0))
1 POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))
```

## Install from Source
To build and install cuSpatial from source:
For additional examples, browse the complete [API documentation](https://docs.rapids.ai/api/cuspatial/stable/), or check out more detailed [notebooks](https://github.com/rapidsai/notebooks-contrib). the [NYC Taxi][1] and [Weather][2] notebooks make use of cuSpatial.

## Supported Geospatial Operations

cuSpatial is constantly working on new features! Check out the [epics](https://github.com/orgs/rapidsai/projects/41/views/4) for a high-level view of our development, or the [roadmap](https://github.com/orgs/rapidsai/projects/41/views/5) for the details!

### Core Spatial Functions
- [Spatial relationship queries (DE-9IM)](https://docs.rapids.ai/api/cuspatial/stable/api_docs/geopandas_compatibility/#cuspatial.GeoSeries.contains)
- [Linestring-Linestring Intersections](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#Linestring-Intersections)
- Cartesian distance between any two geometries (ST_Distance)
- [Haversine distance](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#cuspatial.haversine_distance)
- [Hausdorff distance](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#cuspatial.directed_hausdorff_distance)
- [Spatial window filtering](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#cuspatial.points_in_spatial_window)

### Indexing and Join Functions
- [Quadtree indexing](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#Quadtree-Indexing)
- [Spatial joins](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#Indexed-Spatial-Joins)
- [Quadtree-based point-in-polygon](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#cuspatial.quadtree_point_in_polygon)
- [Quadtree-based point-to-nearest-linestring](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#cuspatial.quadtree_point_to_nearest_linestring)

### Trajectory Functions
- [Deriving trajectories from point location data](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#cuspatial.derive_trajectories)
- [Computing distance/speed of trajectories](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#cuspatial.trajectory_distances_and_speeds)
- [Computing spatial bounding boxes of trajectories](https://docs.rapids.ai/api/cuspatial/stable/user_guide/cuspatial_api_examples.html#cuspatial.trajectory_bounding_boxes)

### What if operations I need aren't supported?
Thanks to the `from_geopandas` and `to_geopandas` functions you can accelerate what cuSpatial supports, and leave the rest of the workflow in place.

```mermaid
---
title: Integrating into Existing Workflows
---
%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': false},
'themeVariables': {'commitLabelColor': '#000000',
'commitLabelBackground': '#ffffff',
'commitLabelFontSize': '14px'}} }%%
gitGraph
commit id: "Existing Workflow Start"
commit id: "GeoPandas IO"
commit id: "Geospatial Analytics"
branch a
checkout a
commit id: "from_geopandas"
commit id: "cuSpatial GPU Acceleration"
branch b
checkout b
commit id: "cuDF"
commit id: "cuML"
commit id: "cuGraph"
checkout a
merge b
commit id: "to_geopandas"
checkout main
merge a
commit id: "Continue Work"
```

### Install dependencies

Currently, building cuSpatial requires a source installation of cuDF. Install
cuDF by following the [instructions](https://github.com/rapidsai/cudf/blob/branch-0.11/CONTRIBUTING.md#script-to-build-cudf-from-source)
## Using cuSpatial
**CUDA/GPU requirements**
- CUDA 11.2+ with a [compatible, supported driver](https://docs.nvidia.com/datacenter/tesla/drivers/#cuda-drivers)
- Linux native: Pascal architecture or newer ([Compute Capability >=6.0](https://developer.nvidia.com/cuda-gpus))
- WSL2: Volta architecture or newer ([Compute Capability >=7.0](https://developer.nvidia.com/cuda-gpus))

The rest of steps assume the environment variable `CUDF_HOME` points to the
root directory of your clone of the cuDF repo, and that the `cudf_dev` Anaconda
environment created in step 3 is active.
### Quick start: Docker
Use the [RAPIDS Release Selector](https://docs.rapids.ai/install#selector), selecting `Docker` as the installation method. All RAPIDS Docker images contain cuSpatial.

### Clone, build and install cuSpatial
An example command from the Release Selector:
```shell
docker run --gpus all --pull always --rm -it \
--shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 \
-p 8888:8888 -p 8787:8787 -p 8786:8786 \
nvcr.io/nvidia/rapidsai/notebooks:24.08-cuda11.8-py3.10
```

### Install with Conda

To install via conda:
> **Note** cuSpatial is supported only on Linux or [through WSL](https://rapids.ai/wsl2.html), and with Python versions 3.9, 3.10, and 3.11.
1. export `CUSPATIAL_HOME=$(pwd)/cuspatial`
2. clone the cuSpatial repo
cuSpatial can be installed with conda (miniconda, or the full Anaconda distribution) from the rapidsai channel:

```shell
conda install -c rapidsai -c conda-forge -c nvidia \
cuspatial=24.08 python=3.11 cudatoolkit=11.8
```
git clone --recurse-submodules https://github.com/rapidsai/cuspatial.git $CUSPATIAL_HOME
We also provide nightly Conda packages built from the HEAD of our latest development branch.

See the [RAPIDS installation documentation](https://docs.rapids.ai/install) for more OS and version info.

### Install with pip

To install via pip:
> **Note** cuSpatial is supported only on Linux or [through WSL](https://rapids.ai/wsl2.html), and with Python versions 3.9, 3.10, and 3.11.
The cuSpatial pip packages can be installed from NVIDIA's PyPI index. pip installations require using the matching wheel to the system's installed CUDA toolkit.
- For CUDA 11 toolkits, install the `-cu11` wheels
- For CUDA 12 toolkits install the `-cu12` wheels
- If your installation has a CUDA 12 driver but a CUDA 11 toolkit, use the `-cu11` wheels.
```shell
pip install cuspatial-cu12 --extra-index-url=https://pypi.nvidia.com
pip install cuspatial-cu11 --extra-index-url=https://pypi.nvidia.com
```

3. Compile and install
Similar to cuDF (version 0.11), simplely run 'build.sh' diectly under $CUSPATIAL_HOME<br>
Note that a "build" dir is created automatically under $CUSPATIAL_HOME/cpp
#### Troubleshooting Fiona/GDAL versions

cuSpatial depends on [`geopandas`](https://github.com/geopandas/geopandas), which uses [`fiona >= 1.8.19`](https://pypi.org/project/Fiona/), to read common GIS formats with GDAL.

4. Run C++/Python test code <br>
Fiona requires GDAL is already present on your system, but its minimum required version may be newer than the version of GDAL in your OS's package manager.

Some tests using inline data can be run directly, e.g.,
Fiona checks the GDAL version at install time and fails with an error like this if a compatible version of GDAL isn't installed:
```
$CUSPATIAL_HOME/cpp/build/gtests/LEGACY_HAUSDORFF_TEST
$CUSPATIAL_HOME/cpp/build/gtests/POINT_IN_POLYGON_TEST
python python/cuspatial/cuspatial/tests/legacy/test_hausdorff_distance.py
python python/cuspatial/cuspatial/tests/test_pip.py
ERROR: GDAL >= 3.2 is required for fiona. Please upgrade GDAL.
```

Some other tests involve I/O from data files under $CUSPATIAL_HOME/test_fixtures.
For example, $CUSPATIAL_HOME/cpp/build/gtests/SHAPEFILE_READER_TEST requires three
pre-generated polygon shapefiles that contain 0, 1 and 2 polygons, respectively. They are available at
$CUSPATIAL_HOME/test_fixtures/shapefiles <br>

**NOTE:** Currently, cuSpatial supports reading point/polyine/polygon data using
Structure of Array (SoA) format and a [shapefile reader](./cpp/src/io/shp)
to read polygon data from a shapefile.
Alternatively, python users can read any point/polyine/polygon data using
existing python packages, e.g., [Shapely](https://pypi.org/project/Shapely/)
and [Fiona](https://github.com/Toblerity/Fiona),to generate numpy arrays and feed them to
[cuSpatial python APIs](python/cuspatial/cuspatial).
There are two ways to fix this:

1. Install a version of GDAL that meets fiona's minimum required version
* Ubuntu users can install a newer GDAL with the [UbuntuGIS PPA](https://wiki.ubuntu.com/UbuntuGIS):
```shell
sudo -y add-apt-repository ppa:ubuntugis/ppa
sudo apt install libgdal-dev
```
2. Pin fiona's version to a range that's compatible with your version of `libgdal-dev`
* For Ubuntu20.04 ([GDAL v3.0.4](https://packages.ubuntu.com/focal/libgdal-dev)):
```shell
pip install --no-binary fiona --extra-index-url=https://pypi.nvidia.com cuspatial-cu12 'fiona>=1.8.19,<1.9'
```
* For Ubuntu22.04 ([GDAL v3.4.1](https://packages.ubuntu.com/jammy/libgdal-dev)):
```shell
pip install --no-binary fiona --extra-index-url=https://pypi.nvidia.com cuspatial-cu12 'fiona>=1.9'
```

### Build/Install from source

To build and install cuSpatial from source please see the [build documentation](https://docs.rapids.ai/api/cuspatial/stable/developer_guide/build.html).


## Citing cuSpatial

If you find cuSpatial useful in your published work, please consider citing the repository.

```bibtex
@misc{cuspatial:24.08,
author = {{NVIDIA Corporation}},
title = {cuSpatial: GPU-Accelerated Geospatial and Spatiotemporal Algorithms},
year = {2023},
publisher = {NVIDIA},
howpublished = {\url{https://github.com/rapidsai/cuspatial}},
note = {Software available from github.com},
}
```


[1]:https://github.com/rapidsai-community/notebooks-contrib/blob/main/community_tutorials_and_guides/taxi/NYCTaxi-E2E.ipynb
[2]:https://github.com/rapidsai-community/notebooks-contrib/blob/main/community_tutorials_and_guides/weather.ipynb
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24.08.00
120 changes: 93 additions & 27 deletions build.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

# Copyright (c) 2019, NVIDIA CORPORATION.
# Copyright (c) 2019-2024, NVIDIA CORPORATION.

# cuSpatial build script

@@ -18,29 +18,36 @@ ARGS=$*
# script, and that this script resides in the repo dir!
REPODIR=$(cd $(dirname $0); pwd)

VALIDARGS="clean libcuspatial cuspatial tests -v -g -n -h --show_depr_warn"
HELP="$0 [clean] [libcuspatial] [cuspatial] [tests] [-v] [-g] [-n] [-h] [-l] [--show_depr_warn]
clean - remove all existing build artifacts and configuration (start
over)
libcuspatial - build the libcuspatial C++ code only
cuspatial - build the cuspatial Python package
tests - build tests
-v - verbose build mode
-g - build for debug
-n - no install step
-h - print this text
--show_depr_warn - show cmake deprecation warnings
VALIDARGS="clean libcuspatial cuspatial cuproj tests benchmarks -v -g -n -h --allgpuarch --show_depr_warn"
HELP="$0 [clean] [libcuspatial] [cuspatial] [tests] [-v] [-g] [-n] [-h] [-l] [--show_depr_warn] [--cmake-args=\"<args>\"]
clean - remove all existing build artifacts and configuration (start over)
libcuspatial - build the libcuspatial C++ code only
cuspatial - build the cuspatial Python package
cuproj - build the cuproj Python package
tests - build tests
benchmarks - build benchmarks
-v - verbose build mode
-g - build for debug
-n - no install step (does not affect Python)
-h - print this text
--allgpuarch - build for all supported GPU architectures
--show_depr_warn - show cmake deprecation warnings
--cmake-args=\\\"<args>\\\" - pass arbitrary list of CMake configuration options (escape all quotes in argument)
default action (no args) is to build and install 'libcuspatial' then
'cuspatial' targets
"
LIBCUSPATIAL_BUILD_DIR=${REPODIR}/cpp/build
CUSPATIAL_BUILD_DIR=${REPODIR}/python/cuspatial/build
BUILD_DIRS="${LIBCUSPATIAL_BUILD_DIR} ${CUSPATIAL_BUILD_DIR}"
LIBCUPROJ_BUILD_DIR=${REPODIR}/cpp/build/cuproj
CUSPATIAL_BUILD_DIR=${REPODIR}/python/cuspatial/_skbuild
CUPROJ_BUILD_DIR=${REPODIR}/python/cuproj/_skbuild
BUILD_DIRS="${LIBCUSPATIAL_BUILD_DIR} ${CUSPATIAL_BUILD_DIR} ${LIBCUPROJ_BUILD_DIR} ${CUPROJ_BUILD_DIR}"

# Set defaults for vars modified by flags to this script
VERBOSE=""
VERBOSE_FLAG=""
BUILD_TESTS=OFF
BUILD_BENCHMARKS=OFF
BUILD_TYPE=Release
BUILD_ALL_GPU_ARCH=0
INSTALL_TARGET=install
BUILD_DISABLE_DEPRECATION_WARNING=ON

@@ -54,13 +61,36 @@ function hasArg {
(( ${NUMARGS} != 0 )) && (echo " ${ARGS} " | grep -q " $1 ")
}

function cmakeArgs {
# Check for multiple cmake args options
if [[ $(echo $ARGS | { grep -Eo "\-\-cmake\-args" || true; } | wc -l ) -gt 1 ]]; then
echo "Multiple --cmake-args options were provided, please provide only one: ${ARGS}"
exit 1
fi

# Check for cmake args option
if [[ -n $(echo $ARGS | { grep -E "\-\-cmake\-args" || true; } ) ]]; then
# There are possible weird edge cases that may cause this regex filter to output nothing and fail silently
# the true pipe will catch any weird edge cases that may happen and will cause the program to fall back
# on the invalid option error
EXTRA_CMAKE_ARGS=$(echo $ARGS | { grep -Eo "\-\-cmake\-args=\".+\"" || true; })
if [[ -n ${EXTRA_CMAKE_ARGS} ]]; then
# Remove the full EXTRA_CMAKE_ARGS argument from list of args so that it passes validArgs function
ARGS=${ARGS//$EXTRA_CMAKE_ARGS/}
# Filter the full argument down to just the extra string that will be added to cmake call
EXTRA_CMAKE_ARGS=$(echo $EXTRA_CMAKE_ARGS | grep -Eo "\".+\"" | sed -e 's/^"//' -e 's/"$//')
fi
fi
}

if hasArg -h; then
echo "${HELP}"
exit 0
fi

# Check for valid usage
if (( ${NUMARGS} != 0 )); then
cmakeArgs
for a in ${ARGS}; do
if ! (echo " ${VALIDARGS} " | grep -q " ${a} "); then
echo "Invalid option: ${a}"
@@ -71,22 +101,39 @@ fi

# Process flags
if hasArg -v; then
VERBOSE=1
VERBOSE_FLAG="-v"
fi
if hasArg -g; then
BUILD_TYPE=Debug
fi
if hasArg -n; then
INSTALL_TARGET=""
fi
if hasArg --show-_depr_warn; then
if hasArg --allgpuarch; then
BUILD_ALL_GPU_ARCH=1
fi
if hasArg --show_depr_warn; then
BUILD_DISABLE_DEPRECATION_WARNING=OFF
fi

if hasArg tests; then
BUILD_TESTS=ON
fi

if hasArg benchmarks; then
BUILD_BENCHMARKS=ON
fi

# Append `-DFIND_CUSPATIAL_CPP=ON` to EXTRA_CMAKE_ARGS unless a user specified the option.
if [[ "${EXTRA_CMAKE_ARGS}" != *"DFIND_CUSPATIAL_CPP"* ]]; then
EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DFIND_CUSPATIAL_CPP=ON"
fi

# Append `-DFIND_CUPROJ_CPP=ON` to EXTRA_CMAKE_ARGS unless a user specified the option.
if [[ "${EXTRA_CMAKE_ARGS}" != *"DFIND_CUPROJ_CPP"* ]]; then
EXTRA_CMAKE_ARGS="${EXTRA_CMAKE_ARGS} -DFIND_CUPROJ_CPP=ON"
fi

# If clean given, run it prior to any other steps
if hasArg clean; then
# If the dirs to clean are mounted dirs in a container, the
@@ -101,29 +148,48 @@ if hasArg clean; then
done
fi

if (( ${BUILD_ALL_GPU_ARCH} == 0 )); then
CUSPATIAL_CMAKE_CUDA_ARCHITECTURES="-DCMAKE_CUDA_ARCHITECTURES=NATIVE"
echo "Building for the architecture of the GPU in the system..."
else
CUSPATIAL_CMAKE_CUDA_ARCHITECTURES="-DCMAKE_CUDA_ARCHITECTURES=RAPIDS"
echo "Building for *ALL* supported GPU architectures..."
fi

################################################################################
# Configure, build, and install libcuspatial
if (( ${NUMARGS} == 0 )) || hasArg libcuspatial; then

mkdir -p ${LIBCUSPATIAL_BUILD_DIR}
cd ${LIBCUSPATIAL_BUILD_DIR}
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
${CUSPATIAL_CMAKE_CUDA_ARCHITECTURES} \
-DCMAKE_CXX11_ABI=ON \
-DBUILD_TESTS=${BUILD_TESTS} \
-DBUILD_BENCHMARKS=${BUILD_BENCHMARKS} \
-DDISABLE_DEPRECATION_WARNING=${BUILD_DISABLE_DEPRECATION_WARNING} \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} ..
make -j ${PARALLEL_LEVEL} install VERBOSE=${VERBOSE}
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
${EXTRA_CMAKE_ARGS} \
..

cmake --build . -j ${PARALLEL_LEVEL} ${VERBOSE_FLAG}

if [[ ${INSTALL_TARGET} != "" ]]; then
cmake --build . -j ${PARALLEL_LEVEL} --target install ${VERBOSE_FLAG}
fi
fi

# Build and install the cuspatial Python package
if (( ${NUMARGS} == 0 )) || hasArg cuspatial; then

cd ${REPODIR}/python/cuspatial
if [[ ${INSTALL_TARGET} != "" ]]; then
PARALLEL_LEVEL=${PARALLEL_LEVEL} python setup.py build_ext --inplace
python setup.py install --single-version-externally-managed --record=record.txt
else
PARALLEL_LEVEL=${PARALLEL_LEVEL} python setup.py build_ext --inplace --library-dir=${LIBCUSPATIAL_BUILD_DIR}
fi
SKBUILD_CMAKE_ARGS="-DCMAKE_PREFIX_PATH=${INSTALL_PREFIX};-DCMAKE_LIBRARY_PATH=${LIBCUSPATIAL_BUILD_DIR};${EXTRA_CMAKE_ARGS}" \
python -m pip install --no-build-isolation --no-deps --config-settings rapidsai.disable-cuda=true .
fi

# Build and install the cuproj Python package
if (( ${NUMARGS} == 0 )) || hasArg cuproj; then

cd ${REPODIR}/python/cuproj
SKBUILD_CMAKE_ARGS="-DCMAKE_PREFIX_PATH=${INSTALL_PREFIX};-DCMAKE_LIBRARY_PATH=${LIBCUPROJ_BUILD_DIR};${EXTRA_CMAKE_ARGS}" \
python -m pip install --no-build-isolation --no-deps --config-settings rapidsai.disable-cuda=true .
fi
21 changes: 21 additions & 0 deletions ci/build_cpp.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash
# Copyright (c) 2022-2024, NVIDIA CORPORATION.

set -euo pipefail

rapids-configure-conda-channels

source rapids-configure-sccache

source rapids-date-string

export CMAKE_GENERATOR=Ninja

rapids-print-env

rapids-logger "Begin cpp build"

RAPIDS_PACKAGE_VERSION=$(rapids-generate-version) rapids-conda-retry mambabuild \
conda/recipes/libcuspatial

rapids-upload-conda-to-s3 cpp
57 changes: 57 additions & 0 deletions ci/build_docs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/bin/bash
# Copyright (c) 2023-2024, NVIDIA CORPORATION.

set -euo pipefail

rapids-logger "Create test conda environment"
. /opt/conda/etc/profile.d/conda.sh

rapids-logger "Downloading artifacts from previous jobs"
CPP_CHANNEL="$(rapids-download-conda-from-s3 cpp)"
PYTHON_CHANNEL="$(rapids-download-conda-from-s3 python)"

rapids-dependency-file-generator \
--output conda \
--file-key docs \
--matrix "cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch);py=${RAPIDS_PY_VERSION}" \
--prepend-channel "${CPP_CHANNEL}" --prepend-channel "${PYTHON_CHANNEL}" | tee env.yaml

rapids-mamba-retry env create --yes -f env.yaml -n docs
conda activate docs

rapids-print-env

export RAPIDS_VERSION="$(rapids-version)"
export RAPIDS_VERSION_MAJOR_MINOR="$(rapids-version-major-minor)"
export RAPIDS_VERSION_NUMBER="24.08"
export RAPIDS_DOCS_DIR="$(mktemp -d)"

rapids-logger "Build cuSpatial CPP docs"
pushd cpp/doxygen
doxygen Doxyfile
mkdir -p "${RAPIDS_DOCS_DIR}/libcuspatial/html"
mv html/* "${RAPIDS_DOCS_DIR}/libcuspatial/html"
popd

rapids-logger "Build cuProj CPP docs"
pushd cpp/cuproj/doxygen
doxygen Doxyfile
mkdir -p "${RAPIDS_DOCS_DIR}/libcuproj/html"
mv html/* "${RAPIDS_DOCS_DIR}/libcuproj/html"
popd

rapids-logger "Build cuSpatial Python docs"
pushd docs
sphinx-build -b dirhtml source _html -W
mkdir -p "${RAPIDS_DOCS_DIR}/cuspatial/html"
mv _html/* "${RAPIDS_DOCS_DIR}/cuspatial/html"
popd

rapids-logger "Build cuProj Python docs"
pushd docs/cuproj
sphinx-build -b dirhtml source _html -W
mkdir -p "${RAPIDS_DOCS_DIR}/cuproj/html"
mv _html/* "${RAPIDS_DOCS_DIR}/cuproj/html"
popd

rapids-upload-docs
40 changes: 40 additions & 0 deletions ci/build_python.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash
# Copyright (c) 2022-2024, NVIDIA CORPORATION.

set -euo pipefail

rapids-configure-conda-channels

source rapids-configure-sccache

source rapids-date-string

export CMAKE_GENERATOR=Ninja

rapids-print-env

package_dir="python"

rapids-generate-version > ./VERSION

CPP_CHANNEL=$(rapids-download-conda-from-s3 cpp)

rapids-logger "Begin py build cuSpatial"

# TODO: Remove `--no-test` flag once importing on a CPU
# node works correctly
RAPIDS_PACKAGE_VERSION=$(head -1 ./VERSION) rapids-conda-retry mambabuild \
--no-test \
--channel "${CPP_CHANNEL}" \
conda/recipes/cuspatial

rapids-logger "Begin py build cuProj"

# TODO: Remove `--no-test` flag once importing on a CPU
# node works correctly
RAPIDS_PACKAGE_VERSION=$(head -1 ./VERSION) rapids-conda-retry mambabuild \
--no-test \
--channel "${CPP_CHANNEL}" \
conda/recipes/cuproj

rapids-upload-conda-to-s3 python
23 changes: 23 additions & 0 deletions ci/build_wheel.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/bash
# Copyright (c) 2023-2024, NVIDIA CORPORATION.

set -euo pipefail

package_name=$1
package_dir=$2

source rapids-configure-sccache
source rapids-date-string

rapids-generate-version > ./VERSION

RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})"

cd "${package_dir}"

python -m pip wheel . -w dist -vvv --no-deps --disable-pip-version-check

mkdir -p final_dist
python -m auditwheel repair -w final_dist dist/*

RAPIDS_PY_WHEEL_NAME="${package_name}_${RAPIDS_PY_CUDA_SUFFIX}" rapids-upload-wheels-to-s3 final_dist
6 changes: 6 additions & 0 deletions ci/build_wheel_cuproj.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash
# Copyright (c) 2023, NVIDIA CORPORATION.

set -euo pipefail

ci/build_wheel.sh cuproj python/cuproj
8 changes: 8 additions & 0 deletions ci/build_wheel_cuspatial.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash
# Copyright (c) 2023, NVIDIA CORPORATION.

set -euo pipefail

export SKBUILD_CMAKE_ARGS="-DUSE_LIBARROW_FROM_PYARROW=ON"

ci/build_wheel.sh cuspatial python/cuspatial
23 changes: 23 additions & 0 deletions ci/check_style.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/bash
# Copyright (c) 2020-2024, NVIDIA CORPORATION.

set -euo pipefail

rapids-logger "Create checks conda environment"
. /opt/conda/etc/profile.d/conda.sh

rapids-dependency-file-generator \
--output conda \
--file-key checks \
--matrix "cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch);py=${RAPIDS_PY_VERSION}" | tee env.yaml

rapids-mamba-retry env create --yes -f env.yaml -n checks
conda activate checks

FORMAT_FILE_URL=https://raw.githubusercontent.com/rapidsai/rapids-cmake/branch-23.02/cmake-format-rapids-cmake.json
export RAPIDS_CMAKE_FORMAT_FILE=/tmp/rapids_cmake_ci/cmake-formats-rapids-cmake.json
mkdir -p $(dirname ${RAPIDS_CMAKE_FORMAT_FILE})
wget -O ${RAPIDS_CMAKE_FORMAT_FILE} ${FORMAT_FILE_URL}

# Run pre-commit checks
pre-commit run --hook-stage manual --all-files --show-diff-on-failure
40 changes: 0 additions & 40 deletions ci/checks/changelog.sh

This file was deleted.

81 changes: 0 additions & 81 deletions ci/checks/style.sh

This file was deleted.

65 changes: 0 additions & 65 deletions ci/cpu/build.sh

This file was deleted.

5 changes: 0 additions & 5 deletions ci/cpu/cuspatial/build_cuspatial.sh

This file was deleted.

5 changes: 0 additions & 5 deletions ci/cpu/libcuspatial/build_libcuspatial.sh

This file was deleted.

16 changes: 0 additions & 16 deletions ci/cpu/prebuild.sh

This file was deleted.

39 changes: 0 additions & 39 deletions ci/cpu/upload_anaconda.sh

This file was deleted.

56 changes: 0 additions & 56 deletions ci/docs/build.sh

This file was deleted.

106 changes: 0 additions & 106 deletions ci/gpu/build.sh

This file was deleted.

57 changes: 0 additions & 57 deletions ci/local/README.md

This file was deleted.

145 changes: 0 additions & 145 deletions ci/local/build.sh

This file was deleted.

115 changes: 72 additions & 43 deletions ci/release/update-version.sh
Original file line number Diff line number Diff line change
@@ -1,59 +1,88 @@
#!/bin/bash
# Copyright (c) 2019-2024, NVIDIA CORPORATION.
#############################
# cuSpatial Version Updater #
#############################

## Usage
# bash update-version.sh <type>
# where <type> is either `major`, `minor`, `patch`

set -e

# Grab argument for release type
RELEASE_TYPE=$1

# Get current version and calculate next versions
CURRENT_TAG=`git tag | grep -xE 'v[0-9\.]+' | sort --version-sort | tail -n 1 | tr -d 'v'`
CURRENT_MAJOR=`echo $CURRENT_TAG | awk '{split($0, a, "."); print a[1]}'`
CURRENT_MINOR=`echo $CURRENT_TAG | awk '{split($0, a, "."); print a[2]}'`
CURRENT_PATCH=`echo $CURRENT_TAG | awk '{split($0, a, "."); print a[3]}'`
NEXT_MAJOR=$((CURRENT_MAJOR + 1))
NEXT_MINOR=$((CURRENT_MINOR + 1))
NEXT_PATCH=$((CURRENT_PATCH + 1))
# bash update-version.sh <new_version>


# Format is YY.MM.PP - no leading 'v' or trailing 'a'
NEXT_FULL_TAG=$1

# Get current version
CURRENT_TAG=$(git tag --merged HEAD | grep -xE '^v.*' | sort --version-sort | tail -n 1 | tr -d 'v')
CURRENT_MAJOR=$(echo $CURRENT_TAG | awk '{split($0, a, "."); print a[1]}')
CURRENT_MINOR=$(echo $CURRENT_TAG | awk '{split($0, a, "."); print a[2]}')
CURRENT_PATCH=$(echo $CURRENT_TAG | awk '{split($0, a, "."); print a[3]}')
CURRENT_SHORT_TAG=${CURRENT_MAJOR}.${CURRENT_MINOR}
NEXT_FULL_TAG=""
NEXT_SHORT_TAG=""

# Determine release type
if [ "$RELEASE_TYPE" == "major" ]; then
NEXT_FULL_TAG="${NEXT_MAJOR}.0.0"
NEXT_SHORT_TAG="${NEXT_MAJOR}.0"
elif [ "$RELEASE_TYPE" == "minor" ]; then
NEXT_FULL_TAG="${CURRENT_MAJOR}.${NEXT_MINOR}.0"
NEXT_SHORT_TAG="${CURRENT_MAJOR}.${NEXT_MINOR}"
elif [ "$RELEASE_TYPE" == "patch" ]; then
NEXT_FULL_TAG="${CURRENT_MAJOR}.${CURRENT_MINOR}.${NEXT_PATCH}"
NEXT_SHORT_TAG="${CURRENT_MAJOR}.${CURRENT_MINOR}"
else
echo "Incorrect release type; use 'major', 'minor', or 'patch' as an argument"
exit 1
fi

echo "Preparing '$RELEASE_TYPE' release [$CURRENT_TAG -> $NEXT_FULL_TAG]"

#Get <major>.<minor> for next version
NEXT_MAJOR=$(echo $NEXT_FULL_TAG | awk '{split($0, a, "."); print a[1]}')
NEXT_MINOR=$(echo $NEXT_FULL_TAG | awk '{split($0, a, "."); print a[2]}')
NEXT_SHORT_TAG=${NEXT_MAJOR}.${NEXT_MINOR}

echo "Preparing release $CURRENT_TAG => $NEXT_FULL_TAG"

# Inplace sed replace; workaround for Linux and Mac
function sed_runner() {
sed -i.bak ''"$1"'' $2 && rm -f ${2}.bak
}

# cpp update
sed_runner 's/'"CUDA_SPATIAL VERSION .* LANGUAGES"'/'"CUDA_SPATIAL VERSION ${NEXT_FULL_TAG} LANGUAGES"'/g' cpp/CMakeLists.txt
# Centralized version file update
echo "${NEXT_FULL_TAG}" > VERSION

# CI files
for FILE in .github/workflows/*.yaml; do
sed_runner "/shared-workflows/ s/@.*/@branch-${NEXT_SHORT_TAG}/g" "${FILE}"
done
sed_runner "s/RAPIDS_VERSION_NUMBER=\".*/RAPIDS_VERSION_NUMBER=\"${NEXT_SHORT_TAG}\"/g" ci/build_docs.sh

# Need to distutils-normalize the original version
NEXT_SHORT_TAG_PEP440=$(python -c "from setuptools.extern import packaging; print(packaging.version.Version('${NEXT_SHORT_TAG}'))")

DEPENDENCIES=(
cudf
cuml
cuspatial
libcudf
libcuspatial
libcuspatial-tests
librmm
rmm
cuspatial
cuproj
)

for DEP in "${DEPENDENCIES[@]}"; do
for FILE in dependencies.yaml conda/environments/*.yaml; do
sed_runner "/-.* ${DEP}\(-cu[[:digit:]]\{2\}\)\{0,1\}==/ s/==.*/==${NEXT_SHORT_TAG_PEP440}.*,>=0.0.0a0/g" "${FILE}"
done
sed_runner "s/${DEP}\(-cu[[:digit:]]\{2\}\)\{0,1\}==.*\",/${DEP}==${NEXT_SHORT_TAG_PEP440}.*,>=0.0.0a0\",/g" python/cuspatial/pyproject.toml
sed_runner "s/${DEP}\(-cu[[:digit:]]\{2\}\)\{0,1\}==.*\",/${DEP}==${NEXT_SHORT_TAG_PEP440}.*,>=0.0.0a0\",/g" python/cuproj/pyproject.toml
done

# Dependency versions in dependencies.yaml
sed_runner "/-cu[0-9]\{2\}==/ s/==.*/==${NEXT_SHORT_TAG_PEP440}.*/g" dependencies.yaml

# Version in cuspatial_api_examples.ipynb
sed_runner "s/rapids-[0-9]*\.[0-9]*/rapids-${NEXT_SHORT_TAG}/g" docs/source/user_guide/cuspatial_api_examples.ipynb
sed_runner "s/cuproj=[0-9]*\.[0-9]*/cuproj=${NEXT_SHORT_TAG}/g" docs/source/user_guide/cuspatial_api_examples.ipynb
sed_runner "s/cuspatial=[0-9]*\.[0-9]*/cuspatial=${NEXT_SHORT_TAG}/g" docs/source/user_guide/cuspatial_api_examples.ipynb
# Version in cuproj_api_examples.ipynb
sed_runner "s/rapids-[0-9]*\.[0-9]*/rapids-${NEXT_SHORT_TAG}/g" docs/cuproj/source/user_guide/cuproj_api_examples.ipynb
sed_runner "s/cuproj=[0-9]*\.[0-9]*/cuproj-${NEXT_SHORT_TAG}/g" docs/cuproj/source/user_guide/cuproj_api_examples.ipynb
sed_runner "s/cuspatial=[0-9]*\.[0-9]*/cuspatial=${NEXT_SHORT_TAG}/g" docs/cuproj/source/user_guide/cuproj_api_examples.ipynb

# RTD update
sed_runner 's/version = .*/version = '"'${NEXT_SHORT_TAG}'"'/g' docs/source/conf.py
sed_runner 's/release = .*/release = '"'${NEXT_FULL_TAG}'"'/g' docs/source/conf.py
# Versions in README.md
sed_runner "s/cuspatial:[0-9]\+\.[0-9]\+/cuspatial:${NEXT_SHORT_TAG}/g" README.md
sed_runner "s/cuspatial=[0-9]\+\.[0-9]\+/cuspatial=${NEXT_SHORT_TAG}/g" README.md
sed_runner "s/notebooks:[0-9]\+\.[0-9]\+/notebooks:${NEXT_SHORT_TAG}/g" README.md

# bump cudf
for FILE in conda/environments/*.yml; do
sed_runner "s/cudf=${CURRENT_SHORT_TAG}/cudf=${NEXT_SHORT_TAG}/g" ${FILE};
# .devcontainer files
find .devcontainer/ -type f -name devcontainer.json -print0 | while IFS= read -r -d '' filename; do
sed_runner "s@rapidsai/devcontainers:[0-9.]*@rapidsai/devcontainers:${NEXT_SHORT_TAG}@g" "${filename}"
sed_runner "s@rapidsai/devcontainers/features/rapids-build-utils:[0-9.]*@rapidsai/devcontainers/features/rapids-build-utils:${NEXT_SHORT_TAG_PEP440}@" "${filename}"
sed_runner "s@rapids-\${localWorkspaceFolderBasename}-[0-9.]*@rapids-\${localWorkspaceFolderBasename}-${NEXT_SHORT_TAG}@g" "${filename}"
done
50 changes: 50 additions & 0 deletions ci/test_cpp.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/bin/bash
# Copyright (c) 2022-2024, NVIDIA CORPORATION.

set -euo pipefail

. /opt/conda/etc/profile.d/conda.sh


rapids-logger "Downloading artifacts from previous jobs"
CPP_CHANNEL=$(rapids-download-conda-from-s3 cpp)

rapids-logger "Generate C++ testing dependencies"
rapids-dependency-file-generator \
--output conda \
--file-key test_cpp \
--matrix "cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch)" \
--prepend-channel "${CPP_CHANNEL}" | tee env.yaml

rapids-mamba-retry env create --yes -f env.yaml -n test

# Temporarily allow unbound variables for conda activation.
set +u
conda activate test
set -u

RAPIDS_TESTS_DIR=${RAPIDS_TESTS_DIR:-"${PWD}/test-results"}/
mkdir -p "${RAPIDS_TESTS_DIR}"

# CUSPATIAL_HOME is used to find test files
export CUSPATIAL_HOME="${PWD}"

rapids-print-env

rapids-logger "Check GPU usage"
nvidia-smi

EXITCODE=0
trap "EXITCODE=1" ERR
set +e

# Run libcuspatial gtests from libcuspatial-tests package
rapids-logger "Run gtests"
for gt in "$CONDA_PREFIX"/bin/gtests/libcuspatial/* ; do
test_name=$(basename ${gt})
echo "Running gtest $test_name"
${gt} --gtest_output=xml:${RAPIDS_TESTS_DIR}
done

rapids-logger "Test script exiting with value: $EXITCODE"
exit ${EXITCODE}
64 changes: 64 additions & 0 deletions ci/test_notebooks.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/bin/bash
# Copyright (c) 2020-2024, NVIDIA CORPORATION.

set -euo pipefail

. /opt/conda/etc/profile.d/conda.sh

rapids-logger "Downloading artifacts from previous jobs"
CPP_CHANNEL=$(rapids-download-conda-from-s3 cpp)
PYTHON_CHANNEL=$(rapids-download-conda-from-s3 python)

rapids-logger "Generate notebook testing dependencies"
rapids-dependency-file-generator \
--output conda \
--file-key test_notebooks \
--matrix "cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch);py=${RAPIDS_PY_VERSION}" \
--prepend-channel "${CPP_CHANNEL}" --prepend-channel "${PYTHON_CHANNEL}" | tee env.yaml

rapids-mamba-retry env create --yes -f env.yaml -n test

# Temporarily allow unbound variables for conda activation.
set +u
conda activate test
set -u

rapids-print-env

NBTEST="$(realpath "$(dirname "$0")/utils/nbtest.sh")"

# Add notebooks that should be skipped here
# (space-separated list of filenames without paths)
SKIPNBS="binary_predicates.ipynb cuproj_benchmark.ipynb nyc_taxi_years_correlation.ipynb"

EXITCODE=0
trap "EXITCODE=1" ERR

set +e

test_notebooks() {
for nb in $(find . -name "*.ipynb"); do
nbBasename=$(basename ${nb})
if (echo " ${SKIPNBS} " | grep -q " ${nbBasename} "); then
echo "--------------------------------------------------------------------------------"
echo "SKIPPING: ${nb} (listed in skip list)"
echo "--------------------------------------------------------------------------------"
else
nvidia-smi
${NBTEST} "${nb}"
fi
done
}

# test notebooks in notebooks/
pushd notebooks
test_notebooks
popd

# test notebooks in docs/
pushd docs
test_notebooks
popd

rapids-logger "Notebook test script exiting with value: $EXITCODE"
exit ${EXITCODE}
73 changes: 73 additions & 0 deletions ci/test_python.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#!/bin/bash
# Copyright (c) 2022-2024, NVIDIA CORPORATION.

set -euo pipefail

. /opt/conda/etc/profile.d/conda.sh

rapids-logger "Downloading artifacts from previous jobs"
CPP_CHANNEL=$(rapids-download-conda-from-s3 cpp)
PYTHON_CHANNEL=$(rapids-download-conda-from-s3 python)

rapids-logger "Generate Python testing dependencies"
rapids-dependency-file-generator \
--output conda \
--file-key test_python \
--matrix "cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch);py=${RAPIDS_PY_VERSION}" \
--prepend-channel "${CPP_CHANNEL}" --prepend-channel "${PYTHON_CHANNEL}" | tee env.yaml

rapids-mamba-retry env create --yes -f env.yaml -n test

# Temporarily allow unbound variables for conda activation.
set +u
conda activate test
set -u

RAPIDS_TESTS_DIR=${RAPIDS_TESTS_DIR:-"${PWD}/test-results"}
RAPIDS_COVERAGE_DIR=${RAPIDS_COVERAGE_DIR:-"${PWD}/coverage-results"}
mkdir -p "${RAPIDS_TESTS_DIR}" "${RAPIDS_COVERAGE_DIR}"

# CUSPATIAL_HOME is used to find test files
export CUSPATIAL_HOME="${PWD}"

rapids-print-env

rapids-logger "Check GPU usage"
nvidia-smi

EXITCODE=0
trap "EXITCODE=1" ERR
set +e

rapids-logger "pytest cuspatial"
pushd python/cuspatial/cuspatial
# It is essential to cd into python/cuspatial/cuspatial as `pytest-xdist` + `coverage` seem to work only at this directory level.
pytest \
--cache-clear \
--junitxml="${RAPIDS_TESTS_DIR}/junit-cuspatial.xml" \
--numprocesses=8 \
--dist=worksteal \
--cov-config=../.coveragerc \
--cov=cuspatial \
--cov-report=xml:"${RAPIDS_COVERAGE_DIR}/cuspatial-coverage.xml" \
--cov-report=term \
tests
popd

rapids-logger "pytest cuproj"
pushd python/cuproj/cuproj
# It is essential to cd into python/cuproj/cuproj as `pytest-xdist` + `coverage` seem to work only at this directory level.
pytest \
--cache-clear \
--junitxml="${RAPIDS_TESTS_DIR}/junit-cuproj.xml" \
--numprocesses=8 \
--dist=worksteal \
--cov-config=../.coveragerc \
--cov=cuproj \
--cov-report=xml:"${RAPIDS_COVERAGE_DIR}/cuproj-coverage.xml" \
--cov-report=term \
tests
popd

rapids-logger "Test script exiting with value: $EXITCODE"
exit ${EXITCODE}
30 changes: 30 additions & 0 deletions ci/test_wheel_cuproj.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash
# Copyright (c) 2023-2024, NVIDIA CORPORATION.

set -eou pipefail

mkdir -p ./dist
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})"
RAPIDS_PY_WHEEL_NAME="cuproj_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 ./dist

# Install additional dependencies
apt update
DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends libgdal-dev
python -m pip install --no-binary fiona 'fiona>=1.8.19,<1.9'

# Download the cuspatial built in the previous step
RAPIDS_PY_WHEEL_NAME="cuspatial_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 ./local-cuspatial-dep
python -m pip install --no-deps ./local-cuspatial-dep/cuspatial*.whl

# echo to expand wildcard before adding `[extra]` requires for pip
python -m pip install $(echo ./dist/cuproj*.whl)[test]

rapids-logger "pytest cuproj"
pushd python/cuproj/cuproj
python -m pytest \
--cache-clear \
--junitxml="${RAPIDS_TESTS_DIR}/junit-cuproj.xml" \
--numprocesses=8 \
--dist=worksteal \
tests
popd
26 changes: 26 additions & 0 deletions ci/test_wheel_cuspatial.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/bash
# Copyright (c) 2023-2024, NVIDIA CORPORATION.

set -eou pipefail

mkdir -p ./dist
RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen ${RAPIDS_CUDA_VERSION})"
RAPIDS_PY_WHEEL_NAME="cuspatial_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-s3 ./dist

# Install additional dependencies
apt update
DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends libgdal-dev
python -m pip install --no-binary fiona 'fiona>=1.8.19,<1.9'

# echo to expand wildcard before adding `[extra]` requires for pip
python -m pip install $(echo ./dist/cuspatial*.whl)[test]

rapids-logger "pytest cuspatial"
pushd python/cuspatial/cuspatial
python -m pytest \
--cache-clear \
--junitxml="${RAPIDS_TESTS_DIR}/junit-cuspatial.xml" \
--numprocesses=8 \
--dist=worksteal \
tests
popd
52 changes: 52 additions & 0 deletions ci/utils/nbtest.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/bin/bash
# Copyright (c) 2023-2024, NVIDIA CORPORATION.

set -e -u -o pipefail

MAGIC_OVERRIDE_CODE="
def my_run_line_magic(*args, **kwargs):
g=globals()
l={}
for a in args:
try:
exec(str(a),g,l)
except Exception as e:
print('WARNING: %s\n While executing this magic function code:\n%s\n continuing...\n' % (e, a))
else:
g.update(l)
def my_run_cell_magic(*args, **kwargs):
my_run_line_magic(*args, **kwargs)
get_ipython().run_line_magic=my_run_line_magic
get_ipython().run_cell_magic=my_run_cell_magic
"

NO_COLORS=--colors=NoColor
NBTMPDIR="$(mktemp -d)"

EXITCODE=0
trap "EXITCODE=1" ERR

for nb in $*; do
NBFILENAME=$1
NBNAME=${NBFILENAME%.*}
NBNAME=${NBNAME##*/}
NBTESTSCRIPT=${NBTMPDIR}/${NBNAME}-test.py
shift

echo --------------------------------------------------------------------------------
echo STARTING: ${NBNAME}
echo --------------------------------------------------------------------------------
jupyter nbconvert --to script ${NBFILENAME} --output ${NBTMPDIR}/${NBNAME}-test
echo "${MAGIC_OVERRIDE_CODE}" > ${NBTMPDIR}/tmpfile
cat ${NBTESTSCRIPT} >> ${NBTMPDIR}/tmpfile
mv ${NBTMPDIR}/tmpfile ${NBTESTSCRIPT}

echo "Running \"ipython ${NO_COLORS} ${NBTESTSCRIPT}\" on $(date)"
echo
time bash -c "ipython ${NO_COLORS} ${NBTESTSCRIPT}; EC=\$?; echo -------------------------------------------------------------------------------- ; echo DONE: ${NBNAME}; exit \$EC"
done

exit ${EXITCODE}
54 changes: 54 additions & 0 deletions conda/environments/all_cuda-118_arch-x86_64.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# This file is generated by `rapids-dependency-file-generator`.
# To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`.
channels:
- rapidsai
- rapidsai-nightly
- conda-forge
- nvidia
dependencies:
- c-compiler
- clang-tools=16.0.6
- cmake>=3.26.4,!=3.30.0
- cuda-version=11.8
- cudatoolkit
- cudf==24.8.*,>=0.0.0a0
- cuml==24.8.*,>=0.0.0a0
- cupy>=12.0.0
- curl
- cxx-compiler
- cython>=3.0.0
- doxygen
- gcc_linux-64=11.*
- geopandas<1
- geopandas>=0.11.0
- ipython
- ipywidgets
- libcudf==24.8.*,>=0.0.0a0
- libcuspatial-tests==24.8.*
- libcuspatial==24.8.*
- librmm==24.8.*,>=0.0.0a0
- myst-parser
- nbsphinx
- ninja
- notebook
- numpy>=1.23,<2.0a0
- numpydoc
- nvcc_linux-64=11.8
- osmnx>=1.9.3
- pre-commit
- proj
- pydata-sphinx-theme!=0.14.2
- pydeck
- pytest
- pytest-cov
- pytest-xdist
- python>=3.9,<3.12
- rapids-build-backend>=0.3.0,<0.4.0.dev0
- rmm==24.8.*,>=0.0.0a0
- scikit-build-core>=0.7.0
- scikit-image
- shapely
- sphinx<6
- sqlite
- sysroot_linux-64==2.17
name: all_cuda-118_arch-x86_64
56 changes: 56 additions & 0 deletions conda/environments/all_cuda-125_arch-x86_64.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# This file is generated by `rapids-dependency-file-generator`.
# To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`.
channels:
- rapidsai
- rapidsai-nightly
- conda-forge
- nvidia
dependencies:
- c-compiler
- clang-tools=16.0.6
- cmake>=3.26.4,!=3.30.0
- cuda-cudart-dev
- cuda-cupti-dev
- cuda-nvcc
- cuda-nvrtc-dev
- cuda-version=12.5
- cudf==24.8.*,>=0.0.0a0
- cuml==24.8.*,>=0.0.0a0
- cupy>=12.0.0
- curl
- cxx-compiler
- cython>=3.0.0
- doxygen
- gcc_linux-64=11.*
- geopandas<1
- geopandas>=0.11.0
- ipython
- ipywidgets
- libcudf==24.8.*,>=0.0.0a0
- libcuspatial-tests==24.8.*
- libcuspatial==24.8.*
- librmm==24.8.*,>=0.0.0a0
- myst-parser
- nbsphinx
- ninja
- notebook
- numpy>=1.23,<2.0a0
- numpydoc
- osmnx>=1.9.3
- pre-commit
- proj
- pydata-sphinx-theme!=0.14.2
- pydeck
- pytest
- pytest-cov
- pytest-xdist
- python>=3.9,<3.12
- rapids-build-backend>=0.3.0,<0.4.0.dev0
- rmm==24.8.*,>=0.0.0a0
- scikit-build-core>=0.7.0
- scikit-image
- shapely
- sphinx<6
- sqlite
- sysroot_linux-64==2.17
name: all_cuda-125_arch-x86_64
14 changes: 0 additions & 14 deletions conda/environments/cuspatial_dev_cuda10.0.yml

This file was deleted.

14 changes: 0 additions & 14 deletions conda/environments/cuspatial_dev_cuda10.1.yml

This file was deleted.

14 changes: 0 additions & 14 deletions conda/environments/cuspatial_dev_cuda10.2.yml

This file was deleted.

14 changes: 0 additions & 14 deletions conda/environments/cuspatial_dev_cuda9.2.yml

This file was deleted.

4 changes: 4 additions & 0 deletions conda/recipes/cuproj/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright (c) 2023, NVIDIA CORPORATION.

# This assumes the script is executed from the root of the repo directory
./build.sh cuproj
24 changes: 24 additions & 0 deletions conda/recipes/cuproj/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
c_compiler_version:
- 11

cxx_compiler_version:
- 11

cuda_compiler:
- cuda-nvcc

cuda11_compiler:
- nvcc

c_stdlib:
- sysroot

c_stdlib_version:
- "2.17"

cmake_version:
- ">=3.26.4,!=3.30.0"

# Workaround until proj 9.3.1 migration completes
proj:
- "9.3.0"
94 changes: 94 additions & 0 deletions conda/recipes/cuproj/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Copyright (c) 2018-2024, NVIDIA CORPORATION.

{% set version = environ['RAPIDS_PACKAGE_VERSION'].lstrip('v') %}
{% set minor_version = version.split('.')[0] + '.' + version.split('.')[1] %}
{% set cuda_version = '.'.join(environ['RAPIDS_CUDA_VERSION'].split('.')[:2]) %}
{% set cuda_major = cuda_version.split('.')[0] %}
{% set py_version = environ['CONDA_PY'] %}
{% set date_string = environ['RAPIDS_DATE_STRING'] %}

package:
name: cuproj
version: {{ version }}

source:
path: ../../..

build:
number: {{ GIT_DESCRIBE_NUMBER }}
string: cuda{{ cuda_major }}_py{{ py_version }}_{{ date_string }}_{{ GIT_DESCRIBE_HASH }}_{{ GIT_DESCRIBE_NUMBER }}
script_env:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_SESSION_TOKEN
- CMAKE_C_COMPILER_LAUNCHER
- CMAKE_CUDA_COMPILER_LAUNCHER
- CMAKE_CXX_COMPILER_LAUNCHER
- CMAKE_GENERATOR
- PARALLEL_LEVEL
- SCCACHE_BUCKET
- SCCACHE_IDLE_TIMEOUT
- SCCACHE_REGION
- SCCACHE_S3_KEY_PREFIX=cuproj-aarch64 # [aarch64]
- SCCACHE_S3_KEY_PREFIX=cuproj-linux64 # [linux64]
- SCCACHE_S3_USE_SSL
- SCCACHE_S3_NO_CREDENTIALS
ignore_run_exports_from:
{% if cuda_major == "11" %}
- {{ compiler('cuda11') }}
{% else %}
- {{ compiler('cuda') }}
- cuda-cudart-dev
{% endif %}

requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
{% if cuda_major == "11" %}
- {{ compiler('cuda11') }} ={{ cuda_version }}
{% else %}
- {{ compiler('cuda') }}
{% endif %}
- cuda-version ={{ cuda_version }}
- cmake {{ cmake_version }}
- ninja
- {{ stdlib("c") }}
host:
{% if cuda_major != "11" %}
- cuda-cudart-dev
{% endif %}
- cuda-version ={{ cuda_version }}
- cython >=3.0.0
- python
- rapids-build-backend >=0.3.0,<0.4.0.dev0
- rmm ={{ minor_version }}
- scikit-build-core >=0.7.0
- proj
- sqlite
run:
{% if cuda_major == "11" %}
- cudatoolkit
{% else %}
- cuda-cudart
{% endif %}
- {{ pin_compatible('cuda-version', max_pin='x', min_pin='x') }}
- python
- rmm ={{ minor_version }}
- cupy>=12.0.0

test: # [linux64]
imports: # [linux64]
- cuproj # [linux64]
requires:
- cupy>=12.0.0
- cuspatial ={{ minor_version }}
- rmm ={{ minor_version }}


about:
home: https://rapids.ai/
license: Apache-2.0
license_family: Apache
license_file: LICENSE
summary: cuProj GPU Geographic Projection Library for Python
3 changes: 3 additions & 0 deletions conda/recipes/cuspatial/build.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@

# Copyright (c) 2018-2019, NVIDIA CORPORATION.

# Ignore conda-provided CMAKE_ARGS for the Python build.
unset CMAKE_ARGS

# This assumes the script is executed from the root of the repo directory
./build.sh cuspatial
20 changes: 20 additions & 0 deletions conda/recipes/cuspatial/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
c_compiler_version:
- 11

cxx_compiler_version:
- 11

cuda_compiler:
- cuda-nvcc

cuda11_compiler:
- nvcc

c_stdlib:
- sysroot

c_stdlib_version:
- "2.17"

cmake_version:
- ">=3.26.4,!=3.30.0"
Loading