anchor.diff:    s = LSHIFT(2_8, 30) / ((m * k + k * n) * T) ! 2 GByte
     ALLOCATE(a(s,m,k))
     ALLOCATE(b(s,k,n))
  +  ALLOCATE(c(m,n))
   
     ! Initialize matrices
     !$OMP PARALLEL DO PRIVATE(i) DEFAULT(NONE) SHARED(a, b)
  
positive.code:       (s * (m * k + k * n + m * n * 2) * T / (duration * LSHIFT(1_8, 30))), " GB/s"
    ENDIF
    WRITE(*, "(1A,A,F10.1,A)") CHAR(9), "duration:   ", 1D3 * duration, " ms"
  
    ! Deallocate global arrays
    DEALLOCATE(a)
    DEALLOCATE(b)
  
  CONTAINS
    PURE SUBROUTINE init(seed, matrix, n, ld)
  
negative.code:       ELSE
          WRITE(*, "(A)") "Streamed... (optimized)"
        ENDIF
        !$OMP PARALLEL PRIVATE(i) DEFAULT(NONE) SHARED(duration, a, b, c, m, n, k)
        ALLOCATE(tmp(libxsmm_align_value(libxsmm_ld(m,n),T,LIBXSMM_ALIGNED_STORES),libxsmm_ld(n,m)))
        tmp(:,:) = 0
        !$OMP MASTER
        !$ duration = -omp_get_wtime()
        !$OMP END MASTER
        !$OMP DO
        DO i = LBOUND(a, 1), UBOUND(a, 1)
          CALL libxsmm_imm(m, n, k, a(i,:,:), b(i,:,:), tmp)
        END DO
        !$OMP MASTER
        !$ duration = duration + omp_get_wtime()
        !$OMP END MASTER
        !$OMP CRITICAL
        c(:,:) = c(:,:) + tmp(:UBOUND(c,1),:)
        !$OMP END CRITICAL
        ! Deallocate thread-local arrays
        DEALLOCATE(tmp)
        !$OMP END PARALLEL
      ENDIF
    END IF
  