Fahwiki.net defines a core as "the program that performs the calculations [on the Work Unit]. The same core is used by various versions of the client and is automatically updated whenever necessary. This provides an easy way for the scientific calculations to be improved without requiring you to install a new version of the client." This is confirmed by Paper #62. This definition is fine for most people, but I'd like to know more. I've yet to run across a real definition of them. I was reading paper #82 ("OpenMM: A Hardware Abstraction Layer for Molecular Simulations" by Peter Eastman and Vijay Pande) and it basically described three layers of API and how they all work together. As I understand it, the "OpenMM Public API (Public Interface)" provides functions for general biochemical calculations but without forcing them to think about designing their algorithms for the hardware. Then the "OpenMM low-level API (Platform abstraction layer)" serves as a plug-in architecture. "Each implementation (or platform) is distributed as a dynamic library and installed simply by placing it in a particular directory. At runtime, all libraries in that directory are loaded and made available to the program." This sounds like a core to me. This is then followed by "OpenMM implements the public API through calls to a lower-level API that serve as an interface between the platform-independent problem description and the platform-dependent computational kernels." That last part most likely refers to the lowest API, OpenCL, CUDA, MPI, .... Also, it turns out that the Public API can query a class about the particular kernel it wants to use, or the library can choose one automatically. Again, indicating cores. But it doesn't seem that the paper explicitly label them as a "core".
The main problem that I see with cores being OpenMM's low-level API is that F@h cores come from a variety of sources. They've used GROMACS, AMBER, TINKER, CPMD, SHARPEN, ProtoMol, BrookGPU and Desmond. As an example, Desmond was developed by D. E. Shaw Research, the group that runs the Anton molecular dynamics supercomputer, the 2nd fastest protein folding computing system. Why would they adopt OpenMM instead of doing their own thing? What reason do I have to believe that all of these different groups would use F@h's OpenMM architecture? From the paper, it seems like OpenMM is really amazing, but that doesn't necessarily imply that everyone jumps on it. (as an analogy, we're still using the Qwerty keyboard)
So, what exactly is a core, and is it the low-level API that the paper talks about?
What exactly is a core? Are they OpenMM's low-level API?
Moderators: Site Moderators, FAHC Science Team
-
- Site Moderator
- Posts: 2850
- Joined: Mon Jul 18, 2011 4:44 am
- Hardware configuration: OS: Windows 10, Kubuntu 19.04
CPU: i7-6700k
GPU: GTX 970, GTX 1080 TI
RAM: 24 GB DDR4 - Location: Western Washington
What exactly is a core? Are they OpenMM's low-level API?
F@h is now the top computing platform on the planet and nothing unites people like a dedicated fight against a common enemy. This virus affects all of us. Lets end it together.
-
- Posts: 1579
- Joined: Fri Jun 27, 2008 2:20 pm
- Hardware configuration: Q6600 - 8gb - p5q deluxe - gtx275 - hd4350 ( not folding ) win7 x64 - smp:4 - gpu slot
E6600 - 4gb - p5wdh deluxe - 9600gt - 9600gso - win7 x64 - smp:2 - 2 gpu slots
E2160 - 2gb - ?? - onboard gpu - win7 x32 - 2 uniprocessor slots
T5450 - 4gb - ?? - 8600M GT 512 ( DDR2 ) - win7 x64 - smp:2 - gpu slot - Location: The Netherlands
- Contact:
Re: What exactly is a core? Are they OpenMM's low-level API?
Is the definition of what a core is, in this case openMM."OpenMM low-level API (Platform abstraction layer)" serves as a plug-in architecture. "Each implementation (or platform) is distributed as a dynamic library and installed simply by placing it in a particular directory. At runtime, all libraries in that directory are loaded and made available to the program."
I should add that with pre V7 clients, the dll's for that client were included in the client data files. Meaning cuda/cal dll's. The fahcore's also resided in the same location so the above applies. With V7, the dll's are located in the FAHClient location, and the core's in the data location /cores/xxx/xxx/ so the above statement about needing to be placed in the same directory is made invalid. This is overcome by allowing the fahcore's to load assemblies (dll's) from locations others then their startup path ( check the environment variables after installing FAHClient, if adds the fahclient's location to the %PATH% variable ). Since I don't run openCL core's and also don't find any openCL dll's with FAHClient itself I have to assume it either uses the system default dll's or dll's are downloaded at the same time of an openCL core."OpenMM implements the public API through calls to a lower-level API that serve as an interface between the platform-independent problem description and the platform-dependent computational kernels."
As for openMM, it uses CUDA ( openMMGPU ) and openCL ( openMM_OpenCL ), and no libraries which target the cpu. So, not all projects can use openMM. Desmond appears to be cpu oriented -> http://www.deshawresearch.com/downloads ... -0.5.3.pdf
MPI is an API but not a compute API, it's a library designed for management of threads which in multiple formats has been used in actual compute libraries such as GRO-SMP and as I just read also with Desmond ( but not on windows ). Amber, Tinker, ProtoMol and SHARPEN are all designed to run on one core and each do different sort of simulations. BrookGPU was used for the DX9 ATI Core(s) and is discontinued.
Short answer: the core is not the low level api, the computation kernels are the low level API's. GRO_A4 for instance is a low level api, and FahCore_A4 is the core which sends "the platform-independent problem description" to FahCore_A4 which is the "platform-dependent computational kernel". GRO_A4 refers to a specific version of Gromacs, and Gromacs as used by Stanford can include enhancements specific to the Folding@Home project ( as can be the case with other cores ).