An unofficial guide to FAH ocores

Nicolas_orleans

[H]ard DCOTM May 2016
Joined
Oct 7, 2012
Messages
352
Running ocores on Ubuntu 12.04 and higher

1. Go to http://stanford.edu/~yutongz/ocores/
2. Download latest version of ocores (currently v20), for GPU - Open CL version and/or CPU
3. Open a terminal and go to directory where you saved the binary
4. Make the binary executable
For GPU
Code:
chmod +x ocore_601_OpenCL_v20
For CPU
Code:
chmod +x ocore_601_CPU_v20

5. Launch ocore, YOUR_TOKEN is the token you get following Q4.1 in below post
For CPU
Code:
./ocore_601_CPU_v20 --token YOUR_TOKEN
For GPU
Code:
./ocore_601_OpenCL_v20 --token YOUR_TOKEN

Special case of multiple GPUs on same computer: you can control each of them in a different terminal window. First run:
Code:
./ocore_601_OpenCL_v20 --devices

For dual GTX770, it should return something like:
Code:
Open CL compatible devices
name: GeForce GTX 770 | platformId: 0 deviceId: 0
name: GeForce GTX 770 | platformId: 0 deviceId: 1

Then, to run gpu 0 in the first terminal:
Code:
./ocore_601_OpenCL_v20 --platformId 0 --deviceId 0 --token YOUR_TOKEN

And to run gpu 1 on the second terminal (make sure to go to right directory):
Code:
./ocore_601_OpenCL_v20 --platformId 0 --deviceId 1 --token YOUR_TOKEN
 
Last edited:
Running OpenCL ocore on Windows

Disclaimer : Believe it or nor, I do not have any computer using Windows at home. This section is consequently based on my understanding of ocores and reports done on irc by testers using Windows. Feel free to report by PM any issue in this windows section, I will update accordingly !

1. Go to http://stanford.edu/~yutongz/ocores/
2. Download latest version of ocores OpenCL for Windows (.exe), currently v20
3. Open a terminal (in Windows 7 : Click the "Start" button to open the Start menu. Open the "All Programs" menu, followed by the "Accessories" option. Select the "Command Prompt" option from the "Accessories" menu to open a command-line interface session in a new window on the computer.)
4. In the terminal, go to directory where you saved the binary
5. Launch ocore, YOUR_TOKEN is the token you get following Q4.1 in below post
Code:
ocore_601_OpenCL_v20.exe --token YOUR_TOKEN

Special case of multiple GPUs on same computer: you can control each of them in a different terminal window. First run:
Code:
ocore_601_OpenCL_v20.exe --devices

For dual GTX770, it should return something like:
Code:
Open CL compatible devices
name: GeForce GTX 770 | platformId: 0 deviceId: 0
name: GeForce GTX 770 | platformId: 0 deviceId: 1

Then, to run gpu 0 in the first terminal:
Code:
ocore_601_OpenCL_v20.exe --platformId 0 --deviceId 0 --token YOUR_TOKEN

And to run gpu 1 on the second terminal (make sure to go to right directory):
Code:
ocore_601_OpenCL_v20.exe --platformId 0 --deviceId 1 --token YOUR_TOKEN
 
Last edited:
Q&A about ocores

1. Design of ocores

Q1.1: what are ocores?

Prior to ocores development, folding cores were relying on:
- servers that would generate work units based on previously returned work units
- clients that would download a work unit, process it, upload the result, then download a new work unit etc.

One of the drawbacks of this previous design was that, if a work unit was not folded and uploaded (compute failure, WU dumped, donor stopped folding, power outage etc.), the server would not re-issue the work unit until a pre-defined period of time (deadline) has happened.

Ocores are new because they are streaming cores: they need to be connected 24/7 to the internet in order to synchronize regularly with the servers and, if for some reason, a client stops folding, another client will pick up the work where it was left and continue it.

Basically, this means ocores can run the same science with less downtimes, thus allowing the researcher to get the results faster.

Since ocores is designed for both CPUs and GPUs, folding can start on a CPU client, then continue on another GPU client, it's more flexible than previous design.


Q1.2: what are targets, streams, frames?

The previous design was based on:
- Projects: what molecules are folding
- Runs: starting structure of the molecule of a given project
- Clones: within a run, each clone has different starting conditions
- Gens: for a given (project, run, clone), each gen returned to server will generate a new gen to be folded. It's where the previous design can generate downtime if a gen is not returned.

More information on the previous design can be found here: http://fahwiki.net/index.php/Runs,_Clones_and_Gens

The new design of ocores is based on:
- Targets: equivalent to Projects
- Streams: set of initial conditions of a given target, it's like a combination of Runs and Clones
- Frames: for a given stream, quantifies how much calculations have been done, it's basically a multiple of a given number of calculation steps


Q1.3: I have already experienced server downtime with FAH, is there anything new with ocores?

Yes. In the past a project was hosted by one work server, if the server was down, project was down. With ocores, a single target can be processed by multiple servers, allowing for more redundancy and better load balancing.


2. Development status?

Q2.1: I heard ocores are in alpha testing, what does it mean?

It means they are under development and early testing, and there is no official support for these cores.

Current support is provided either on the beta section of the folding forum (you can only post if you are a FAH beta tester, but you can read if you are a registered user of the forum), either on the irc channel #fah hosted by freenode (public and open to anyone to join).

If you are not comfortable with that, please consider keeping folding with released clients only.


On June 12th, 2014, the first production target was introduced into the testing process (earlier, only "proof of concept" targets were folded)



Q2.2: are ocores CPU and GPU at the same level of development?

Both CPU and GPU cores are being developped in parallel, however, ocore CPU does not scale well at this stage of development and has very poor 2P and 4P performance.

At this stage of development, ocore GPU uses better the hardware, it's not recommended to use ocore CPU on powerful CPUs (more than 4c/8t) / 2P / 4P.


3. System requirements?

Q3.1: what are the system requirements?

Ocore CPU: CPU with AVX support. If no AVX support, the CPU shall support SSE 4.1
Ocore GPU: nVidia or AMD GPU with OpenCL 1.1 support
24/7 internet connection

Linux
Officially: 64-bits Ubuntu 14.04 or later
Unofficially: 64-bits Ubuntu 12.04 or later, this means you can run ocores on a computer running the [H] Ubuntu DC Appliance

Windows


Q3.2: there are always driver issues with OpenCL cores, is it the same for ocore GPU?

Linux
Nvidia: Ubuntu 14.04 ships with Nvidia driver 304.117 that works with ocore GPU. If you have a GK110 card, you can enable in Ubuntu's «additional drivers» either nvidia-331 or nvidia-331-updates. For all other chips, stick with nvidia-304 or nvidia-304-updates, since any driver higher than 327 will reduce your folding speed due to an issue in the drivers, and some 331 drivers versions do not fold at all with ocores for non GK110 chips.

AMD: linux gpu folding is new for AMD cards, to my knowledge catalyst 14.4 is recommended and catalyst 14.6 beta is reported to work.


Q3.3: I have an Nvidia card, and am tired of OpenCL driver issues, is there any CUDA build?

A Linux CUDA build was released with v16, though it's experimental, especially in the way to install the CUDA framework. I will update the how to section once installation is more straightforward. The developper said there is no plan of releasing a CUDA build for Windows. Regarding Linux, it's likely CUDA builds will be available unofficially (better performance but no official support, that can probably suit folding enthusiasts).


Q3.4: I have a slow internet connection, or my service provider will charge me if I use more than a given data cap, are ocores good for me?

Ocores will need internet connection to connect to the server after every frame is finished. Regularly, a higher amount of information will be sent, it's called a «checkpoint», and streams can be resumed from them.

The impact of slow connections has been greatly reduced with the release of v18, when a connection times out, an extra checkpoint happens that saves all frames and steps folded on the last frame.

The developper stated that actually, a streaming core could result in less data being uploaded than the previous work unit design. In my experience, some streams send around 6,6 Mo of data when checkpointing, for a slow card it may mean more data uploaded than with traditionnal work unit management.


4. Points system and stats

Q4.1: do ocores point add up to my existing FAH User name?

No. Right now the two point systems are separated.

If you want to contribute non anonymously to ocores, you will need to get a token at https://www.proteneer.com, where you can choose the user name (I would recommend to use the same as FAH) that will be associated to your token.

At this point, there are no teams.

Q4.2: where can I look at stats?

Go to https://www.proteneer.com/stats where you can find the number of frames achieved for your username.

These stats are updated once a stream dies, either because there is no more work to do for this stream, either because something happened (connection lost, exiting of client etc.)

There are also real time stats for active streams on each server, as of today https://vspg11.stanford.edu/active_streams and https://proline.stanford.edu/active_streams

active_frames are the frames that have been checkpointed, they will be credited on the stat page once the stream dies
buffer_frames are the frames your computer sent since last checkpoint, that have not been checkpointed yet.
 
Last edited:
Back
Top