Skip to content

Commit 4254a9d

Browse files
committed
get range of modes for iterators with a common last array
1 parent 866d810 commit 4254a9d

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

src/ParallelUtilities.jl

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,29 @@ function extrema_from_split_array(iterable)
186186
collect(zip(min_vals,max_vals))
187187
end
188188

189+
function moderanges_common_lastarray(iterable)
190+
m = extrema_from_split_array(iterable)
191+
lastvar_min = last(m)[1]
192+
lastvar_max = last(m)[2]
193+
194+
val_first = first(iterable)
195+
min_vals = collect(val_first[1:end-1])
196+
max_vals = copy(min_vals)
197+
198+
for val in iterable
199+
for (ind,vi) in enumerate(val[1:end-1])
200+
if val[end]==lastvar_min
201+
min_vals[ind] = min(min_vals[ind],vi)
202+
end
203+
if val[end]==lastvar_max
204+
max_vals[ind] = max(max_vals[ind],vi)
205+
end
206+
end
207+
end
208+
209+
[(m,lastvar_min) for m in min_vals],[(m,lastvar_max) for m in max_vals]
210+
end
211+
189212
function get_hostnames(procs_used=workers())
190213
hostnames = Vector{String}(undef,length(procs_used))
191214
@sync for (ind,p) in enumerate(procs_used)
@@ -258,7 +281,7 @@ get_processor_id_from_split_array,
258281
procid_allmodes,mode_index_in_file,
259282
get_processor_range_from_split_array,workers_active,worker_rank,
260283
get_index_in_split_array,procid_and_mode_index,extrema_from_split_array,
261-
pmapsum,sum_at_node,pmap_onebatch_per_worker,
284+
pmapsum,sum_at_node,pmap_onebatch_per_worker,moderanges_common_lastarray,
262285
get_nodes,get_hostnames,get_nprocs_node
263286

264287
end # module

0 commit comments

Comments
 (0)