I have two questions about the following code (in which I’m looking to get the largest eigenvalue of a matrix by permuting its rows).

```
using LinearAlgebra, Combinatorics, Distributed
function maxeig(A::Matrix)
return maximum(real.(eigvals(A)))
end
function maxmaxeig(A::Matrix)
n, c = size(A)
f(p) = maxeig(A[p,:])
return maximum(f(p) for p in permutations(1:n))
end
function maxmaxeig_dist(A::Matrix)
n, c = size(A)
f(p) = maxeig(A[p,:])
@distributed (max) for p in permutations(1:n)
f(p)
end
end
```

**Question 1**

The first function works fine, but this seems to be a good candidate for distributed computing. So I start with `julia -p 8`

and include this code with an `@everywhere include("filename.jl")`

. The distributed version fails with this error message:

```
julia> maxmaxeig_dist(A)
ERROR: MethodError: no method matching firstindex(::Combinatorics.Permutations{Int64})
Closest candidates are:
firstindex(::Any, ::Any) at abstractarray.jl:366
firstindex(::Polynomials.LaurentPolynomial) at /Users/ers/.julia/packages/Polynomials/1aa8e/src/polynomials/LaurentPolynomial.jl:225
firstindex(::Polynomials.SparsePolynomial) at /Users/ers/.julia/packages/Polynomials/1aa8e/src/polynomials/SparsePolynomial.jl:143
...
Stacktrace:
[1] preduce(reducer::Function, f::Function, R::Combinatorics.Permutations{Int64})
@ Distributed /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.6/Distributed/src/macros.jl:269
[2] maxmaxeig_dist(A::Matrix{Int64})
@ Main ~/tmp/maxmaxeig.jl:16
[3] top-level scope
@ REPL[37]:1
```

I can make the parallel version work properly by replacing `for p in permutations(1:n) `

with `for p in collect(permutations(1:n))`

which expands the iterator `permutations(1:n)`

into a very long list.

**Question 2**

The distributed version is a good deal slower than the first, even if I “level the playing field” by wrapping `for p in permutations(1:n)`

with `collect`

. I’m guessing that I’ve got a lot of data movement involving the passing the matrix `A`

(say, 10-by-10) around.

Finally: I’m not an expert, so beginner friendly advice would be most welcome. Thanks!