@@ -6,38 +6,59 @@ reduce(f::Function)::Function = Base.Fix1(Base.reduce, f)
66
77struct CrayPE
88 libmpi:: String
9- libgtl:: String
9+ libgtl:: Union{ String, Nothing}
1010 cclibs:: Vector{String}
1111 gtl_env_switch:: String
12-
13- CrayPE (mpi_dl:: T , gtl_dl:: T , cclibs:: Vector{T} ) where T <: AbstractString = new (
12+
13+ CrayPE (
14+ mpi_dl:: T ,
15+ gtl_dl:: T ,
16+ cclibs:: Vector{T}
17+ ) where T <: AbstractString = new (
1418 " lib" * mpi_dl * " .so" , # Assuming Linux -- CrayPE is only avaialbe for linux anyway
1519 " lib" * gtl_dl * " .so" ,
1620 cclibs,
1721 " MPICH_GPU_SUPPORT_ENABLED"
1822 )
23+ CrayPE (
24+ mpi_dl:: T ,
25+ gtl_dl:: Nothing ,
26+ cclibs:: Vector{T}
27+ ) where T <: AbstractString = new (
28+ " lib" * mpi_dl * " .so" , # Assuming Linux -- CrayPE is only avaialbe for linux anyway
29+ nothing ,
30+ cclibs,
31+ " MPICH_GPU_SUPPORT_ENABLED"
32+ )
1933end
2034
2135const libmpi_prefix = " mpi_"
2236const libgtl_prefix = " mpi_gtl_"
2337
38+ function only_or_nothing (iter)
39+ if length (iter) == 0
40+ return nothing
41+ end
42+ only (iter)
43+ end
44+
2445function cray_mpi (libs)
2546 x = libs |>
26- filter (x-> startswith (x, libmpi_prefix)) |>
47+ filter (x-> startswith (x, libmpi_prefix)) |>
2748 filter (x-> ! startswith (x, libgtl_prefix))
2849 return only (x)
2950end
3051
3152function cray_gtl (libs)
3253 x = libs |>
33- filter (x-> startswith (x, libmpi_prefix)) |>
54+ filter (x-> startswith (x, libmpi_prefix)) |>
3455 filter (x-> startswith (x, libgtl_prefix))
35- return only (x)
56+ return only_or_nothing (x)
3657end
3758
3859function other_libs (libs)
3960 x = libs |>
40- filter (x-> ! startswith (x, libmpi_prefix)) |>
61+ filter (x-> ! startswith (x, libmpi_prefix)) |>
4162 filter (x-> ! startswith (x, libgtl_prefix))
4263 return x
4364end
0 commit comments