Folding@home Protomol FAQ

Table of Contents

Introduction

We have been working on another approach to speeding dynamics greatly, based on a new technique called Normal Mode Langevin (NML) dynamics. This method uses the same style models as normal MD (same force fields, etc) and thus should have the same accuracy, but with a pretty significant speedup due to algorithmic advances. NML is complementary to our other methods, so we're hoping to add it to everything else (in particular to the GPU core). To start, we will be testing it in a new core, based on the Protomol software. Protomol is designed to allow for rapid prototyping of molecular simulations, which is perfect for NML.

Initial release

Why don't things show up correctly in my Third-party monitoring tool (like FahMon)?

Third-party monitoring tools are not officially supported. Some rely on undocumented features of the older cores which are not the same in newer cores.

That said, we are working towards an officially supported method of displaying/acquiring core information.

When I run two or more cores on the same machine why do I get this error Exception in thread 0: @ fah\net\Socket.cpp:137:<unknown> 0: Could not bind socket to 127.0.0.1:52753: No error?

This is a non-fatal error that can be safely ignored. The core tries to bind the port 52753 and only one core can do so at one time. The core provides a server that is used by some visualization tools. This may be removed in the future.

Why do some ProtoMol work units end early and report as faulty?

The Normal Mode Langevin code that is part of ProtoMol can sometimes diverge and grow exponentially. This is a known problem with the algorithm which is solved by restarting the work unit with a different random seed.

If this happens the work unit will stop and report that it is faulty. Donors will get partial credit for the work unit. Credit is calculated based on how much of the unit was finished before it failed. The work server will automatically restart that generation of the unit with a new random seed.

What special instructions, such as SSE2, does the ProtoMol core support?

The ProtoMol core does not have any hand coded assembly with SSE instructions. However, we are using the Intel compiler with options which cause it to create several optimized code paths using these instructions. The code then chooses the best path at run-time based on the CPU it detects.

Unfortunately, at the time of this writing, the Intel compiler does not treat non-Intel chips fairly. For example, it will always dispatch AMD chips which do support SSE2 to the slowest code path. To work around this issue we have created a 64-bit version of the core which always uses at least the SSE2 instructions since all or nearly all 64-bit CPUs support these.

Many people have asked about the specific instructions used. It is not easy to tell which instructions the compiler chooses and the final result depends on which instructions your CPU supports. However, the compiler can generate optimized code paths for SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2.

Apparently Intel and AMD have come to an agreement and the unfair dispatching issue will be resolved in the future.

For More Information, Please See:


Last Updated on November 25, 2009, at 03:25 PM