Replies: 3 comments
-
Gut feeling, I prefer option 2. Grouping together feels more intuitive to me if I come at it from an outsider's perspective. However, I also lean towards option 1 being a better option for dev usage, it's straightforward, clear and IMO this impacts dev more than users, so we should use option 1. |
Beta Was this translation helpful? Give feedback.
-
I'm also in favor of option 1. Fewer headers means lower maintenance cost. Frankly speaking I'm not sure if I like how distance is organized now, it seems too fragmented. In terms of longer complication time, if this is what cuDF team has received complaints about, then we should also look into solutions, otherwise there's a long way until we hit that performance drop point. For those who are using the header only API, the template API are the main portion of the compilation time anyway. |
Beta Was this translation helpful? Give feedback.
-
Thanks for all the feedback @jarmak-nv and @isVoid . PR ready for review: #1097 |
Beta Was this translation helpful? Give feedback.
-
Now that the header-only API refactoring is complete, I'm working on code organization after merging the previously "experimental" headers and source into the main
include
andsrc
directories.Here is a view of the
include/cuspatial
directory, excludinginclude/cuspatial/detail
I have an in-progress PR #1084 to consolidate and improve this. So far, that PR
bounding_boxes.cuh/.hpp
forpoint_bounding_boxes
,linestring_bounding_boxes
, andpolygon_bounding_boxes
. (Note, I noticed we don't have a column-API function forpoint_bounding_boxes
-- I will file an issue for this)distance
directory, as started by @isVoid.Here is the current state of the tree in that PR:
I want to discuss options for further organization. @isVoid began moving all the disparate distance headers under a
distance
directory. That is one approach. A second approach would be to consolidate headers, but leave the hierarchy of algorithm headers fairly flat.We already have directories for data structure headers, e.g.
column
,geometry
,geometry_collection
, andrange
. I think that it makes sense to keep these grouped in directories. Thrust takes a similar approach with its various iterator headers.So let me explicitly lay out two options.
Option 1: Flat hierarchy with related functions grouped in common headers:
Advantages:
Disadvantages:
Option 2: related functions grouped in directories
Advantages:
Disadvantages
Beta Was this translation helpful? Give feedback.
All reactions