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

DRAFT: Optimize Grid.isel() #1175

Draft
wants to merge 6 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
use numba to create the dict
philipc2 committed Mar 5, 2025
commit a57b53d39d2a56a7c3b4e9d8392c0d1fccc794d2
22 changes: 16 additions & 6 deletions uxarray/grid/slice.py
Original file line number Diff line number Diff line change
@@ -31,6 +31,14 @@ def update_connectivity(conn, indices_dict, fill_value):
return result.reshape(dim_a, dim_b)


@njit(cache=True)
def create_indices_dict(indices):
indices_dict = Dict.empty(key_type=types.int64, value_type=types.int64)
for new_idx, old_idx in enumerate(indices):
indices_dict[old_idx] = new_idx
return indices_dict


def _slice_node_indices(
grid,
indices,
@@ -151,19 +159,21 @@ def _slice_face_indices(grid, indices):
]

if node_conn_names:
node_indices_dict = Dict.empty(key_type=types.int64, value_type=types.int64)
for new_idx, old_idx in enumerate(node_indices):
node_indices_dict[old_idx] = new_idx
# node_indices_dict = Dict.empty(key_type=types.int64, value_type=types.int64)
# for new_idx, old_idx in enumerate(node_indices):
# node_indices_dict[old_idx] = new_idx
node_indices_dict = create_indices_dict(node_indices)

for conn_name in node_conn_names:
ds[conn_name].data = update_connectivity(
ds[conn_name].values, node_indices_dict, INT_FILL_VALUE
)

if edge_conn_names:
edge_indices_dict = Dict.empty(key_type=types.int64, value_type=types.int64)
for new_idx, old_idx in enumerate(edge_indices):
edge_indices_dict[old_idx] = new_idx
# edge_indices_dict = Dict.empty(key_type=types.int64, value_type=types.int64)
# for new_idx, old_idx in enumerate(edge_indices):
# edge_indices_dict[old_idx] = new_idx
edge_indices_dict = create_indices_dict(edge_indices)

for conn_name in edge_conn_names:
ds[conn_name].data = update_connectivity(