Automatic parallelization/ multithreading

Does Julia do automatic multithreading or parallelization if it is possible? For example, I have code in Fortran and in Julia. For a smaller problem, I get faster performance in Fortran. But as I increase the problem size, Julia gives me much better performance than Fortran. Both codes are same and a lot of “for loops” can be parallelized. As of now, I am just having a serial version in both Julia and Fortran.

Thank you.

No - all multithreading in pure Julia is single threaded by default. Called libraries may be using multithreading themselves though (like LAPACK and BLAS/MKL, as far as I know).

You may be experiencing good performance because of vectorization though. We can’t tell you why exactly without the source code though.

Below is the portion of the code where calculation is done.
‘’’
for iteration_count = 1:maximum_iterations

    # calculate ∇^2(residual)
    for j = 2:ny for i = 2:nx
        del_residual[i,j] = (residual[i+1,j] - 2*residual[i,j] +
                        residual[i-1,j])/dx^2 +
                        (residual[i,j+1] - 2*residual[i,j] +
                        residual[i,j-1])/dy^2
    end end

    aa = 0.0
    bb = 0.0
    # calculate aa, bb, cc. cc is the distance parameter(α_n)
    for j = 2:ny for i = 2:nx
        aa = aa + residual[i,j]*residual[i,j]
        bb = bb + del_residual[i,j]*residual[i,j]
    end end
    cc = aa/(bb + tiny)

    # update the numerical solution by adding some component of residual
    for j = 1:ny for i = 1:nx
        u_numerical[i,j] = u_numerical[i,j] + cc * residual[i,j]
    end end

    # update the residual by removiing some component of previous residual
    for j = 1:ny for i = 1:nx
        residual[i,j] = residual[i,j] - cc * del_residual[i,j]
    end end

    # compute the l2norm of residual
    rms = compute_l2norm(nx, ny, residual)

    println(iteration_count, " ", rms/initial_rms)

    if (rms/initial_rms) <= tolerance
        break
    end
end

Does the Julia compiler do vectorization automatically? Are there any tutorials for parallelization in Julia? Thank you.