Why are my results different depending on whether or not I run with multiple processors?
While we may think that we are running multiple applications simultaneously on our computers, the operating system is actually switching between them so quickly that we cannot tell the difference (called "context switching"). The decision of which process to run at what time (called "scheduling") is a relatively-advanced topic, but it is important to note that the amount of time each process spends with the processor is decided by the operating system and may change depending on system load and other factors (e.g., waiting for I/O).
When there is more than one processor available, the operating system can schedule jobs to run simultaneously, so programmers can split up a computationally-expensive operation into smaller parts that can run in parallel (called "threads"). Modern operating systems even distribute the task of job scheduling across each processor (called "symmetric multiprocessing"). Since the operating system may adjust the schedule on each processor independently, the order in which threads are executed is unpredictable.
Floating-point numbers, such as those used in finite-element analysis, are represented with finite accuracy (24 bits or ~7 digits for single precision, 53 bits or ~15 digits for double-precision). Splitting up a large job into several parts, then rejoining the results from the threads in different orders, may result in slight numerical round-off error.
In addition, the algorithms used by software developers may allow for flexible task scheduling; for example, since solid elements take longer to form than point elements, assigning an equal number of elements to each element-formation thread may not be efficient in terms of load balancing, so a dynamic approach to balancing can maximize performance while sacrificing different run behavior.
In linear analyses, this numerical error is typically negligible. In nonlinear analyses that are path dependent, these small differences have been known to cause a solution to followdifferent paths, eventually causing noticeably-different results.