1. A processor-implemented method for implementing a sparse deterministic direct solver on a symmetric matrix without using locks, comprising: analyzing a symmetric matrix by defining a plurality of dense blocks; identifying at least one task for each of the dense blocks; assigning a level to each of the tasks identified for each of the dense blocks, wherein a level represents a scheduled execution order for a task; assigning a level to each of a plurality of threads to indicate a progress of each thread through factorization; storing, in a first data structure, a dependency list for each of the dense blocks, wherein a dependency list includes levels of tasks that update a dense block; storing, in a second data structure, a status for each of the dense blocks, wherein a stored status includes a level of a next task to update for the dense block associated with the status, and wherein the stored status is changeable by one or more threads; assigning a plurality of the tasks to the plurality of threads, wherein each thread is assigned a unique task, and wherein each of the plurality of threads executes an assigned task when the status of the dense block that the assigned task updates matches the level of the thread executing the task; and executing the tasks assigned to the threads, wherein, when a task is completed, the status of the updated dense block is updated according to a type of the task completed.