Skip to content

Commit fca54bf

Browse files
authored
Merge branch 'main' into logging-cleanup
2 parents 81d81f8 + 34539d0 commit fca54bf

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

activitysim/core/chunk.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1234,11 +1234,16 @@ def adaptive_chunked_choosers(
12341234

12351235
num_choosers = len(choosers.index)
12361236

1237+
if state.settings.multiprocess:
1238+
num_processes = state.get_injectable("num_processes", 1)
1239+
else:
1240+
num_processes = 1
1241+
12371242
if state.settings.chunk_training_mode == MODE_EXPLICIT:
12381243
if explicit_chunk_size < 1:
12391244
chunk_size = math.ceil(num_choosers * explicit_chunk_size)
12401245
else:
1241-
chunk_size = int(explicit_chunk_size)
1246+
chunk_size = math.ceil(explicit_chunk_size / num_processes)
12421247
elif chunk_size is None:
12431248
chunk_size = state.settings.chunk_size
12441249

@@ -1372,11 +1377,16 @@ def adaptive_chunked_choosers_and_alts(
13721377
f"with {num_choosers} choosers and {num_alternatives} alternatives"
13731378
)
13741379

1380+
if state.settings.multiprocess:
1381+
num_processes = state.get_injectable("num_processes", 1)
1382+
else:
1383+
num_processes = 1
1384+
13751385
if state.settings.chunk_training_mode == MODE_EXPLICIT:
13761386
if explicit_chunk_size < 1:
13771387
chunk_size = math.ceil(num_choosers * explicit_chunk_size)
13781388
else:
1379-
chunk_size = int(explicit_chunk_size)
1389+
chunk_size = int(explicit_chunk_size / num_processes)
13801390
elif chunk_size is None:
13811391
chunk_size = state.settings.chunk_size
13821392

@@ -1389,7 +1399,14 @@ def adaptive_chunked_choosers_and_alts(
13891399
chunk_training_mode=state.settings.chunk_training_mode,
13901400
)
13911401
rows_per_chunk, estimated_number_of_chunks = chunk_sizer.initial_rows_per_chunk()
1392-
assert (rows_per_chunk > 0) and (rows_per_chunk <= num_choosers)
1402+
assert (rows_per_chunk > 0) and (
1403+
(rows_per_chunk <= num_choosers)
1404+
or (
1405+
(rows_per_chunk >= num_choosers)
1406+
and (estimated_number_of_chunks == 1)
1407+
and (state.settings.chunk_training_mode == MODE_EXPLICIT)
1408+
)
1409+
)
13931410

13941411
# alt chunks boundaries are where index changes
13951412
alt_ids = alternatives.index.values

0 commit comments

Comments
 (0)