Giter VIP home page Giter VIP logo

fahbench's Introduction

FAHBench

FAHBench is the official Folding@Home benchmark. Like the Folding@Home "cores" being executed by hundreds of thousands of donors across the world to solve hard problems in protein dynamics, FAHBench is built on the molecular dynamics engine [OpenMM]. FAHBench works on any OpenCL device, as well as CUDA-capable Nvidia GPUs. FAHBench is available as a GUI or command-line based application for Windows and Linux. It is licensed under GPLv2.

Documentation

  1. Building and Compiling FAHBench
  2. Technical Details
  3. Workunits

fahbench's People

Contributors

mpharrigan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fahbench's Issues

build instructions unclear

Hi, current build instructions are not very helpful. After I managed to put proper boost I'm stuck on openmm setup. I can't find any patches to be applied. So I just cloned 7.4.1 tag into openmm dir. It builds fine on its own. But as part of fahbench build it fails

fahbench]$ cmake3 .
-- Fetching Boost
-- Fetching Boost - done
-- Boost found: 1.71.0 /home/user/fahbench/_deps/boost-src
-- Found the following ICU libraries:
--   uc (required)
--   dt (required)
--   i18n (required)
CMake Deprecation Warning at openmm/CMakeLists.txt:25 (CMAKE_POLICY):
  The OLD behavior for policy CMP0042 will be removed from a future version
  of CMake.

  The cmake-policies(7) manual explains that the OLD behaviors of all
  policies are deprecated and that a policy should be set to OLD only under
  specific short-term circumstances.  Projects should be ported to the NEW
  behavior and not rely on setting a policy to OLD.


CMake Error at openmm/CMakeLists.txt:37 (INCLUDE):
  INCLUDE could not find load file:

    TargetArch


CMake Error at openmm/CMakeLists.txt:38 (target_architecture):
  Unknown CMake command "target_architecture".


-- Configuring incomplete, errors occurred!
See also "/home/user/fahbench/CMakeFiles/CMakeOutput.log".
See also "/home/user/fahbench/CMakeFiles/CMakeError.log".

I copied cmake files to cmake dir ti have them found, then build failed:

fahbench]$ make
Scanning dependencies of target ApiWrappers
[  0%] Parsing OpenMM header files with Doxygen...
Warning: Tag `SYMBOL_CACHE_SIZE' at line 289 of file Doxyfile has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
Warning: Tag `SHOW_DIRECTORIES' at line 473 of file Doxyfile has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
Warning: Tag `HTML_ALIGN_MEMBERS' at line 809 of file Doxyfile has become obsolete.
To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
Warning: doxygen no longer ships with the FreeSans font.
You may want to clear or change DOT_FONTNAME.
Otherwise you run the risk that the wrong font is being used for dot generated graphs.
Warning: tag INPUT: input source `/home/user/fahbench/openmmapi' does not exist
Warning: tag INPUT: input source `/home/user/fahbench/olla/include/openmm/Platform.h' does not exist
Searching for include files...
Searching for example files...
Searching for images...
Searching for dot files...
Searching for msc files...
Searching for files to exclude
Searching for files to process...
warning: source /home/user/fahbench/openmmapi is not a readable file or directory... skipping.
warning: source /home/user/fahbench/olla/include/openmm/Platform.h is not a readable file or directory... skipping.
Reading and parsing tag files
Parsing files
Building group list...
Building directory list...
Building namespace list...
Building file list...
Building class list...
Associating documentation with classes...
Computing nesting relations for classes...
Building example list...
Searching for enumerations...
Searching for documented typedefs...
Searching for members imported via using declarations...
Searching for included using directives...
Searching for documented variables...
Building interface member list...
Building member list...
Searching for friends...
Searching for documented defines...
Computing class inheritance relations...
Computing class usage relations...
Flushing cached template relations that have become invalid...
Creating members for template instances...
Computing class relations...
Add enum values to enums...
Searching for member function documentation...
Building page list...
Search for main page...
Computing page relations...
Determining the scope of groups...
Sorting lists...
Freeing entry tree
Determining which enums are documented
Computing member relations...
Building full member lists recursively...
Adding members to member groups.
Computing member references...
Inheriting documentation...
Generating disk names...
Adding source references...
Adding xrefitems...
Sorting member lists...
Computing dependencies between directories...
Generating citations page...
Counting data structures...
Resolving user defined references...
Finding anchors and sections in the documentation...
Transferring function references...
Combining using relations...
Adding members to index pages...
Generating style sheet...
Generating example documentation...
Generating file sources...
Generating file documentation...
Generating page documentation...
Generating group documentation...
Generating class documentation...
Generating namespace index...
Generating graph info page...
Generating directory documentation...
finalizing index lists...
Generating XML output...
lookup cache used 0/65536 hits=0 misses=0
finished...
[  0%] Generating OpenMMCWrapper.h, OpenMMCWrapper.cpp, OpenMMFortranModule.f90, OpenMMFortranWrapper.cpp
Traceback (most recent call last):
  File "/home/user/fahbench/openmm/wrappers/generateWrappers.py", line 2073, in <module>
    builder.writeOutput()
  File "/home/user/fahbench/openmm/wrappers/generateWrappers.py", line 322, in writeOutput
    self.writeGlobalConstants()
  File "/home/user/fahbench/openmm/wrappers/generateWrappers.py", line 176, in writeGlobalConstants
    node = next((x for x in findNodes(self.doc.getroot(), "compounddef", kind="namespace") if x.findtext("compoundname") == "OpenMM"))
StopIteration
make[2]: *** [openmm/wrappers/CMakeFiles/ApiWrappers.dir/build.make:65: openmm/wrappers/OpenMMCWrapper.h] Error 1
make[2]: *** Deleting file 'openmm/wrappers/OpenMMCWrapper.h'
make[1]: *** [CMakeFiles/Makefile2:1967: openmm/wrappers/CMakeFiles/ApiWrappers.dir/all] Error 2
make: *** [Makefile:152: all] Error 2

Apparently some paths are confused. So I guess I'm missing some patches. Existing documentation does not help me much though. Thanks.

Bad state detection?

Does fahbench have bad state detection like FAH? This could be used for stability testing.

Test for NaNs.

I don't think testing for NaNs would drag down performance noticeably ... and it would avoid #42 and at least give the user something that he can investigate. It's not a critical enhancement, though.

I did have fahbench hang and I never tried to figure out why.

Add example work units for different atom count

Add example work units for different atom count. e.g. Low atom count WU 25000 atoms, middle atom count WU 75000 atoms, high atom count WU 200000 atoms. So you can benchmark GPUs if they need high atom count to perform well. Just use samples from existing FAH projects with different atom counts.

Windows build describtion for 32 or 64bit?

The Windows build describtion does not state if build for 32 or 64bit?
https://github.com/pandegroup/fahbench

In Windows i could build it in 32bit more easily.
But then describtion must be changed:

  1. remove address-model=64 from
    bootstrap
    .\b2 address-model=64

  2. change CMAKE_PREFIX_PATH to .../Qt/5.4/msvc2013_64/
    to CMAKE_PREFIX_PATH to .../Qt/5.4/msvc2013/

Uninitialized fields in Simulation constructor

The constructor of Simulator class doesn't initialize:

1 deviceId
2 platformId
3 verifyAccuracy
4 nan_check_freq
5 numSteps

Well, 4 and 5 at least set by options in cmd, the rest are completly uninitialized before benchmarking.

FahBench build x64 problem in Windows

When i try to build FahBench x64 in Windows it fails
because the project files habe an additional option set /machine:X86
so also solution is configured for x64
the obj are still forced to x86.

After driver reset due to overclocking it cannot start again

When testing overclocking for FAH using FAHbench and I get a driver reset because OC too high then I cannot start work unit anymore. I must close FAHbench and start it again. Expected behavior: I can start work unit again without having to close FAHbench. Error message shown: "Error initializing context: clCreateContext"

Include more test systems

  • refactor share directory so that each system is a directory
  • add a way to pick system by name on command line (in addition to specifying xml paths)
  • parse number of steps from a file
  • include a scaled score? divide by n log n

Fix windows packaging

Add:

  • platforms/qwindows.dll

Remove:

  • libEGL.dll
  • libEGLd.dll
  • msvcp120.dll
  • msvcr120.dll

Disable building of separate boost

It would be nice to be able to build against an existing copy of boost, and only download and build a new boost if the existing one was either not found or too old.

Hangs while throwing error for NaNs

Running on linux-64 (Ubuntu 15.04) using AMD OpenCL and OpenMM master, FAHBench detects NaNs in the positions, but hangs while throwing an exception.

I built in debug mode with the some modifications to print "NaNs detected!" right before the throw, and run gdb --args ~/opt/fahbench-dev/bin/FAHBench-cmd --nan-check 1.

Code diff: https://gist.github.com/rmcgibbo/a8e7095e4cae21bf3adb

$ gdb --args ~/opt/fahbench-dev/bin/FAHBench-cmd --nan-check 1                             
GNU gdb (Ubuntu 7.9-1ubuntu1) 7.9
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/rmcgibbo/opt/fahbench-dev/bin/FAHBench-cmd...done.
(gdb) run
Starting program: /home/rmcgibbo/opt/fahbench-dev/bin/FAHBench-cmd --nan-check 1
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
FAHBench Simulation
-----------------
Plugin directory: "/home/rmcgibbo/opt/fahbench-dev/lib/plugins"
Work unit: dhfr
WU Name: Dihydrofolate reductase
WU Description: A common system for benchmarking molecular dynamics
System XML: /home/rmcgibbo/opt/fahbench-dev/share/fahbench/workunits/dhfr/system.xml
Integrator XML: /home/rmcgibbo/opt/fahbench-dev/share/fahbench/workunits/dhfr/integrator.xml
State XML: /home/rmcgibbo/opt/fahbench-dev/share/fahbench/workunits/dhfr/state.xml
Steps: 9000
Device ID 0; Platform OpenCL; Platform ID 0

Loading plugins from plugin directory
Number of registered plugins: 3
Deserializing system...
Deserializing state...
Deserializing integrator...
Creating context...
Checking for accuracy...
Creating reference context...
Comparing forces and energy...
Starting Benchmark
NaNs detected!
[5 seconds later, hit Ctrl-C]
^C[New Thread 0x7fffebe7f700 (LWP 13210)]
[New Thread 0x7ffff0e9a700 (LWP 13209)]

Program received signal SIGINT, Interrupt.
0x00007ffff7debc08 in tls_get_addr_tail (ti=0x7ffff74d0398, dtv=0x7ffff7fce050, the_map=0x7ffff7ff5a60) at dl-tls.c:767
767 dl-tls.c: No such file or directory.
(gdb) where
#0  0x00007ffff7debc08 in tls_get_addr_tail (ti=0x7ffff74d0398, dtv=0x7ffff7fce050, the_map=0x7ffff7ff5a60) at dl-tls.c:767
#1  0x00007ffff72370dc in __cxa_get_globals () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#2  0x00007ffff72380f3 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007ffff7b57edc in StateTests::checkForNans (state=...) at /home/rmcgibbo/projects/fahbench/fahbench/StateTests.cpp:36
#4  0x00007ffff7b66e74 in Simulation::benchmark (this=0x7fffffffc400, context=..., update=...) at /home/rmcgibbo/projects/fahbench/fahbench/Simulation.cpp:141
#5  0x00007ffff7b667ff in Simulation::run (this=0x7fffffffc400, update=...) at /home/rmcgibbo/projects/fahbench/fahbench/Simulation.cpp:112
#6  0x000000000044dbc0 in main (argc=3, argv=0x7fffffffc8c8) at /home/rmcgibbo/projects/fahbench/fahbench/cmd/cmd-main.cpp:193

Update to Core22?

It would be very helpful if you could please update this to Core22.

I'm trying to benchmark many systems in the cloud to determine which options are most cost-effective for at-scale deployment, and need a means of benchmarking them.

If you're aware of a way I could do this directly with FahCore_22, I'd love to hear your ideas. Thanks

Build 32bit failed cause of typo

Build 32bit failed cause of typo
fahbench-master\fahbench\GPUInfo-CUDA.cpp:24
loadLibraryA
must begin with capital L
LoadLibraryA

Build failure 'isnan' was not declared in this scope on Ubuntu16_04

:/home/erisuser/.vulcan/install/opencl/_tests/fahbench_tests/fahbench/fahbench/StateTests.cpp: In function ‘void StateTests::checkForNans(const OpenMM::State&)’:
/home/erisuser/.vulcan/install/opencl/_tests/fahbench_tests/fahbench/fahbench/StateTests.cpp:33:38: error: ‘isnan’ was not declared in this scope
             if (isnan(positions[i][j]))
                                      ^
/home/erisuser/.vulcan/install/opencl/_tests/fahbench_tests/fahbench/fahbench/StateTests.cpp:33:38: note: suggested alternative:
In file included from /usr/local/openmm/include/openmm/Units.h:35:0,
                 from /usr/local/openmm/include/OpenMM.h:69,
                 from /home/erisuser/.vulcan/install/opencl/_tests/fahbench_tests/fahbench/fahbench/StateTests.cpp:11:
/usr/include/c++/5/cmath:641:5: note:   ‘std::isnan’
     isnan(_Tp __x)
     ^
/home/erisuser/.vulcan/install/opencl/_tests/fahbench_tests/fahbench/fahbench/StateTests.cpp:38:39: error: ‘isnan’ was not declared in this scope
             if (isnan(velocities[i][j]))
                                       ^
/home/erisuser/.vulcan/install/opencl/_tests/fahbench_tests/fahbench/fahbench/StateTests.cpp:38:39: note: suggested alternative:
In file included from /usr/local/openmm/include/openmm/Units.h:35:0,
                 from /usr/local/openmm/include/OpenMM.h:69,
                 from /home/erisuser/.vulcan/install/opencl/_tests/fahbench_tests/fahbench/fahbench/StateTests.cpp:11:
/usr/include/c++/5/cmath:641:5: note:   ‘std::isnan’
     isnan(_Tp __x)
     ^
/home/erisuser/.vulcan/install/opencl/_tests/fahbench_tests/fahbench/fahbench/StateTests.cpp:43:35: error: ‘isnan’ was not declared in this scope
             if (isnan(forces[i][j]))
                                   ^
/home/erisuser/.vulcan/install/opencl/_tests/fahbench_tests/fahbench/fahbench/StateTests.cpp:43:35: note: suggested alternative:
In file included from /usr/local/openmm/include/openmm/Units.h:35:0,
                 from /usr/local/openmm/include/OpenMM.h:69,
                 from /home/erisuser/.vulcan/install/opencl/_tests/fahbench_tests/fahbench/fahbench/StateTests.cpp:11:
/usr/include/c++/5/cmath:641:5: note:   ‘std::isnan’
     isnan(_Tp __x)
     ^
make[2]: *** [fahbench/CMakeFiles/fahbench.dir/StateTests.cpp.o] Error 1
make[1]: *** [fahbench/CMakeFiles/fahbench.dir/all] Error 2

In StateTests.cpp
Replace "isnan" with "std::isnan", then build, got success!

Windows path backslashes

I had a problem that FahBench_cmd.exe did not find its subpaths share and lib in Windows.
My solution was to change the path slashes to escaped backslashed

Simulation::Simulation() {
openmm_data_dir = getExecutableDir() + "..\share\openmm_data";
openmm_plugin_dir = getExecutableDir() + "..\lib\plugins";
}

FAHBench says it needs msvcp140.dll

The precompiled Windows help file suggests I need the Universal CRT, but it's not applicable to Windows 10.

I did receive a message about msvcp140.dll being missing, which was solved by installing the VC++ Redistributable. I'd think this should be mentioned in the help file, too.

Support running inside build directory

When I build fahbench, and then run the binary from inside the build directory, it hangs resolving the path Simulation.cpp:36. If I make install and then run the binary from the install directory, everything is fine. The paths seem a little brittle.

AMD GPU Windows performance problem

Something seems wrong with the windows binaries performance on my GPU AMD R9 280.

When i use your compiled windows binaries 2.0.2 then i get a benchmark final score of 26.5 ns/day.
When i use my compiled windows binaries 2.0.1 then i get a benchmark final score of 37.0 ns/day.

Why is your build performance 40% slower on my GPU AMD R9 280?
I build it using AMD APP SDK 2.9 on Windows 7 64bit.

www.fahbench.com site does not exits

This repository for fahbench has a url in the description that does not direct the user to a site for fahbench.

Possibly update the repository's url to something that will point to fahbench at another location or simply removing it.

Thank you all who are involved for the hard work. You all are doing awesome things.

Number of atoms

Show the number of atoms in a wu before running it.

The problem here is that you essentially need to deserialize the whole system to get this value. You could include it in the wu.json metadata file, but it won't necessarily be correct/current

Enable CUDA

Locally I could enable CUDA in the source code when build with OpenMM 7.1

This could be interesting to compare to OpenCL performance.

The GPUInfo-CUDA.cpp uses CUDA runtime but why it does not use the CUDA driver? Looks more easy to me as you need not deploy the cuda sdk runtime but rely on the GPU cuda driver.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.