Foldit Wiki
Advertisement

A processor, also called a "logical processor" or "CPU", is the part of the computer that actually does the computing. Most recent computers contain multiple processors, and determining the number of processors is a key to playing with multiple Foldit clients on a single machine.

The term "CPU" or "Central Processing Unit" is also used to refer to the microprocessor chip that contains all the processors. Most laptop and desktop computers have only one microprocessor chip, but usually that chip contains two or more processors.

Processors are sometimes referred to as "cores", but this is no longer 100% accurate. At one point, an Intel microprocessor with two cores had two processors. Newer Intel chips refer to "cores" and "threads". A chip might have four cores, each supporting two threads, giving eight (logical) processors.

The term "thread" is also used in connection with programs, but program threads aren't related to the threads on a microprocessor chip. Understanding program threads in Foldit is another component of multi-client strategy.

A single program, such as the Foldit client, may start multiple program threads. Each one of these threads is like a separate program. Each thread can run on a separate processor, so in a computer with multiple processors, multiple threads can be executing at the same time. A thread can only run one processor at a time.

While running a recipe or a simple tool such as wiggle or shake, a Foldit client normally has one busy thread that can be using up to 100% of one processor. (This is assuming the client window is minimized, and that the client is running a simple tool or a Lua recipe.) If the client window is "up" (available for viewing, not minimized), the client will have a second busy thread.

In theory, it would be possible to have a single Foldit client with multiple threads busy folding one protein on multiple processors. In practice, as soon as one thread made some change, however small, to the protein, all the other threads would need to know about it. Current programming technology makes it difficult to keep the threads "synchronized", which is necessary to maintain a "consistent" view of the data (that is, the protein) they're sharing.

Advertisement