  In this work, we present a new scalable incomplete LU factorization framework
called Javelin to be used as a preconditioner for solving sparse linear systems
with iterative methods. Javelin allows for improved parallel factorization on
shared-memory many-core systems by packaging the coefficient matrix into a
format that allows for high performance sparse matrix-vector multiplication and
sparse triangular solves with minimal overheads. The framework achieves these
goals by using a collection of traditional permutations, point-to-point thread
synchronizations, tasking, and segmented prefix scans in a conventional
compressed sparse row format. Moreover, this framework stresses the importance
of co-designing dependent tasks, such as sparse factorization and triangular
solves, on highly-threaded architectures. Using these changes, traditional
fill-in and drop tolerance methods can be used, while still being able to have
observed speedups of up to ~42x on 68 Intel Knights Landing cores and ~12x on
14 Intel Haswell cores.
