Here is a parallel algorithm running in $O((\log n))$. As @sonneXo pointed out, each iteration of the two outer-loops is independent of all other iterations assuming a concurrent read model. So the only problem is in summing up the elements in the inner loop. Here is a divide and conquer technique that solves the problem in $O(log(n))$ using $O(n)$ threads.
So given $i, j, s, t$, we want to compute $\sum\limits_{k=s}^t a_{ik} b_{kj}$ recursively. As input we give $i, j, 1, n$ and the algorithm outputs $c_{ij}$. You can then call the algorithm in parallel on each pair $i,j$ completing the matrix.
Now we describe the recursive algorithm. Given $i, j, s, t$. if $t-s < c$ for some constant $c$, say $c = 3$, then we compute the sum by hand in constant time. Else, let $m = s + \left\lfloor \frac{t-s}{2} \right\rfloor$. We build two instances of the problem in two new threads one of them solves $i, j, s, m$ and the other solves $i, j, m+1, t$. When the recursion returns, the algorithm only sums up two numbers returned by the recursion and returns the answer.
It is easy to see, why the running time is $O(\log n)$, since in each step we divide the size of the array by two and hence after $\left \lceil \log n \right \rceil$ steps we reach a constant size.
Note that this algorithm is not very efficient in practice due to the over head of creating threads. One algorithm that is efficient in practice, is to divide the array into $\sqrt n$ many pieces, sum up each of them in parallel in $O(\sqrt n)$ time and then sum up the answers again in $O(\sqrt n)$ time resulting in a running time of $O(\sqrt n)$ assuming you can affoard $\Omega(\sqrt n)$ threads running in parallel.
Note The number of used threads can be improved into $O(n / \log n)$ by dividing the column/row into chunks of length $\Theta(\log n)$ and each thread computes the answer sequentially in each chunk in time $O(\log n)$ with at most $O(n/\log n)$ threads and then we sum up the answer in the same divide and conquer scheme as above. Since we are summing at most $O(n / \log n)$ elements we need at most so many threads.