Подготовительные шаги для развертывания BOINC сервера. Подготовительные шаги для развертывания BOINC сервера Установка boinc

💖 Нравится? Поделись с друзьями ссылкой

Работая в ИТ-подразделении, я постоянно наблюдаю простаивающие по разным организационным причинам компьютеры, которые очень скучают. Золотые времена майнинга биткойнов на CPU прошли, и в поисках нового полезного дела я пришёл к добровольным распределённым вычислениям, в частности, к World Community Grid . Первым делом поиском лекарства от рака были озадачены сервер из холодного резерва и виртуальная машина с низким приоритетом на кластере виртуализации. Сложнее с рабочими станциями, они постоянно приходят и уходят, на каждой устанавливать, настраивать, а потом удалять BOINC долго и нетехнологично.

Решено было собрать live-дистрибутив с вшитым BOINC"ом и раздавать его по сети. Включил компьютер, нажал F12, выбрал нужный пункт - и уже приносишь пользу человечеству!

Платформой был выбран Debian, который а) давно знаком и б) обладает замечательным мануалом на нужную тему. Тем не менее, без граблей не обошлось, а в данном случае почти каждые новые грабли обозначают достаточно длительную пересборку образа. Надеюсь, этот пост сэкономит некоторое количество админского времени, а заодно напомнит о существовании такого замечательного проекта, как WCG.

Заметьте, делалось всё в весьма закрытой среде, и безопасности понадобилось уделить совсем немного внимания. Возможно, в вашем случае над безопасностью нужно будет дополнительно поработать.

Подготовка

Система состоит вот из чего:
  1. Сервер сетевой загрузки.
  2. NFS-сервер
  3. Сборочная станция
У меня 2 и 3 - одна машина.

1. Сервер сетевой загрузки. У меня всё уже было готово, настроенные TFTP и DHCP у меня остались от проекта по тонким клиентам. Если у вас нет, то поднять новый несложно. В двух словах, устанавливаем и запускаем tftpd-hpa, а в DHCP указываем параметры 66 и 67. Только не давайте загружаться по сети кому попало (в моём случае это курсанты), это может быть опасно. Кроме BIOS, запаролить можно часть загрузочного меню TFTP-сервера.

2. NFS-сервер. Во-первых, BOINC должен иметь возможность в процессе работы сохранять свои данные. Предполагается, что локальный жёсткий диск трогать нельзя, поэтому по NFS разрешим писать в директорию, например, /srv/boinc-nfs . Здесь каждый компьютер будет создавать поддиректорию с именем, совпадающим с его MAC-адресом. Во-вторых, в директории /srv/debian-live будет лежать корневая ФС для сетевой загрузки. Итак:
mkdir /srv/debian-live mkdir /srv/boinc-nfs chown nobody:nogroup /srv/boinc-nfs chmod 755 /srv/boinc-nfs
В /etc/exports дописываем:
/srv/boinc-nfs *(rw,sync,no_root_squash,no_subtree_check) /srv/debian-live *(ro,async,no_root_squash,no_subtree_check)
после чего перезапускаем сервис (почему-то рекомендуемый exportfs -rv мне результата не дал):
/etc/init.d/nfs-kernel-server restart
3. Сборочная станция. Это просто виртуальная машина с обычным Debian Wheezy. Установлен пакет live-build , который и будет делать основную работу. Здесь должен быть интернет.

Процесс сборки

Отправляемся на сборочную станцию.
mkdir /srv/live-default && cd /srv/live-default
Создаём базовый конфиг для нашего дистрибутива, указав адрес NFS-сервера:
lb config -b netboot --net-root-path "/srv/debian-live" --net-root-server "192.168.15.20"
Формируется некоторое дерево директорий, располагая в них разный контент можно кастомизировать свою сборку. Мы добавим следующее:
1. config/package-lists/boinc.list - список пакетов, которые понадобятся в нашей сборке. Пишем в него:
boinc-client nfs-common
2. config/includes.chroot/etc/init.d/boinc-preps - init-скрипт, который будет монтировать NFS, настраивать BOINC и менять hostname (возможно , одинаковые хостнеймы мешают WCG идентифицировать компьютер, с ними у меня многие задания переходили в состояние detached). В этот скрипт нужно вставить адрес своего NFS и адреса хостов, с которых будет разрешено беспарольное управление. Содержимое скрипта:
#!/bin/bash ### BEGIN INIT INFO # Provides: boinc-preps # Required-Start: nfs-common # Required-Stop: # Should-Start: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Various stuff for BOINC # Description: Various stuff for BOINC ### END INIT INFO PATH=/sbin:/usr/sbin:/bin:/usr/bin . /lib/init/vars.sh do_start () { MYMAC=`ifconfig eth0 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}" | sed s/://g` ancien=`hostname` nouveau=DYNWCG-$MYMAC mkdir -p /mnt/boinc-nfs mount 192.168.15.20:/srv/boinc-nfs /mnt/boinc-nfs && mkdir -p /mnt/boinc-nfs/$MYMAC service boinc stop sed -i "s/^BOINC_DIR=.*/BOINC_DIR=\/mnt\/boinc-nfs\/$MYMAC/;s/^BOINC_USER=.*/BOINC_USER=\"root\"/" /etc/default/boinc-client echo "192.168.10.60" > /mnt/boinc-nfs/$MYMAC/remote_hosts.cfg echo "192.168.10.61" >> /mnt/boinc-nfs/$MYMAC/remote_hosts.cfg echo "" >> /mnt/boinc-nfs/$MYMAC/gui_rpc_auth.cfg for file in \ /etc/hostname \ /etc/hosts # сюда можно добавить #/etc/ssh/ssh_host_rsa_key.pub \ #/etc/ssh/ssh_host_dsa_key.pub \ # если нужен SSH do [ -f $file ] && sed -i.old -e "s:$ancien:$nouveau:g" $file done invoke-rc.d hostname.sh start invoke-rc.d networking force-reload service boinc start } case "$1" in start|"") do_start ;; restart|reload|force-reload|status) echo "Error: argument "$1" not supported" >&2 exit 3 ;; stop) # NOP exit 3 ;; *) echo "Usage: ... " >&2 exit 3 ;; esac:
3. config/hooks/boinc-preps-init.chroot - скрипт из одной команды, который выполнится при сборке и добавит boinc-preps из предыдущего пункта в автозагрузку:
#!/bin/sh update-rc.d boinc-preps defaults
После добавления нужных настроек запускаем собственно сборку:
lb build
Ценность для нас представляет получившийся файл binary.netboot.tar . Распакуем его в /srv:
cd /srv && tar -xvf live-default/binary.netboot.tar
Он распакуется в /srv/debian-live (корневая ФС для сетевой загрузки) и /srv/tftpboot (файлы для TFTP-сервера). В моём случае сборочная станция и NFS-сервер - это один компьютер, поэтому /srv/debian-live уже находится на своём месте.
Содержимое tftpboot - готовое загрузочное меню, его нужно разместить на TFTP-сервере. Его работу я не проверял, так как у меня есть работающий TFTP-сервер со своим меню, и отсюда мне понадобилась лишь часть данных. Во-первых, я скопировал все файлы из tftpboot/live/ на TFTP-сервер в images/debian-live/ (относительно корневой директории TFTP-сервера). Во-вторых, из tftpboot/live.cfg я позаимствовал текст, добавляющий новый пункт меню, при этом изменив его до такого состояния (здесь тоже нужно указать адрес своего NFS-сервера):
label live-686-pae menu label BOINC-live (686-pae) linux images/debian-live/vmlinuz1 initrd images/debian-live/initrd1.img append boot=live config nosplash root=/dev/nfs nfsroot=192.168.15.20:/srv/debian-live
Теперь всё лежит на своих местах.

Если после сборки хочется проверить содержимое корневой ФС, то не обязательно загружаться с нею, её можно просто смонтировать как loop-устройство:
mount -o loop,ro /srv/debian-live/live/filesystem.squashfs /mnt/squash/
Если нужно пересобрать дистрибутив с новыми параметрами, то перед этим можно сделать либо lb clean --binary , либо lb clean .

Использование

  1. Включаем компьютер и выбираем загрузку по сети (обычно для этого достаточно нажать F12).
  2. В зависимости от загрузочного меню либо выбираем пункт «BOINC-live», либо просто ждём, пока загрузится по таймауту.
  3. В появившуюся (если всё пошло как надо) командную строку пишем sudo ifconfig (пароль вводить не потребуется) и записываем IP-адрес.
  4. На компьютере управления (одном из тех, что мы указали в config/includes.chroot/etc/init.d/boinc-preps) запускаем boinc-manager, нажимаем «Дополнительно - Сменить компьютер» (эта кнопка есть только в «Полном виде»). При этом BOINC не должен запрашивать никаких паролей у пользователя.
  5. После подключения появится мастер, в котором нужно будет выбрать проект (в моём случае это World Community Grid) и ввести логин/пароль.
Всё, через несколько минут появятся новые задачи в состоянии «Готово к запуску» и «Работает».
Эту процедуру нужно выполнить только один раз для каждого компьютера (точнее, для каждого MAC-адреса). Даже вернувшись к вам после длительной эксплуатации в другом месте, компьютер по MAC-адресу найдёт свои данные на NFS-сервере и продолжит работу сразу после включения (только некоторые задания будут уже просрочены, но это мелочь, получит новые).

Итоги

Что осталось нерешённым:
  • Автологин в WCG. Наверное, можно вшить в образ конфиг проекта, чтобы вообще ничего не вводить руками, но за приемлемое время решение не нагуглилось.
  • Почтовые уведомления. Чтобы не вводить «sudo ifconfig», можно автоматом отсылать админу адрес запустившегося компьютера. Однако, я этого не сделал, потому что костыли, и лучше вместо этого реализовать предыдущий пункт.
  • Два раза указан IP NFS-сервера, возможно, один из них можно убрать.
  • Для создания директории компьютера всегда используется MAC-адрес интерфейса eth0. Хорошо это или нет - я не могу с уверенностью сказать.

  • Не давайте компьютерам скучать! И пишите комментарии, с радостью отвечу или дополню статью.
|

Сохраните и закройте файл, а затем запустите boinc-client, чтобы сервер подключился к SETI@home.

sudo service boinc-client start

4: Проверка нового хоста

5: Проверка состояния сервера

Для просмотра состояния сервера или задач используйте команду:

Эта команда предоставляет общую информацию SETI@home, а также сообщает о текущих задачах, выполняемых на этом конкретном хосте.

Вывод этой команды выглядит примерно так:

boinccmd --get_simple_gui_info
======== Projects ========
1) -----------
name: SETI@home
master URL: http://setiathome.berkeley.edu/
user_name: stmiller
team_name: SETI.USA
resource share: 100.000000
user_total_credit: 33159.675770
user_expavg_credit: 1409.252845
host_total_credit: 0.000000
host_expavg_credit: 0.000000
nrpc_failures: 0
master_fetch_failures: 0
master fetch pending: no
scheduler RPC pending: no
trickle upload pending: no
attached via Account Manager: no
ended: no
suspended via GUI: no
don"t request more work: no
disk usage: 0.000000
last RPC: 1423684749.199424
project files downloaded: 0.000000
GUI URL:
name: Message boards
description: Correspond with other users on the SETI@home message boards
URL: http://setiathome.berkeley.edu/forum_index.php
GUI URL:
name: Help
description: Ask questions and report problems
URL: http://setiathome.berkeley.edu/forum_help_desk.php
GUI URL:
name: Your account
description: View your account information
URL: http://setiathome.berkeley.edu/home.php
GUI URL:
name: Your preferences
description: View and modify your computing preferences
URL: http://setiathome.berkeley.edu/prefs.php?subset=global
GUI URL:
name: Your results
description: View your last week (or more) of computational results and work
URL: http://setiathome.berkeley.edu/results.php?userid=9351194
GUI URL:
name: Your computers
description: View a listing of all the computers on which you are running SETI@Home
URL: http://setiathome.berkeley.edu/hosts_user.php?userid=9351194
GUI URL:
name: Your team
description: View information about your team: SETI.USA
URL: http://setiathome.berkeley.edu/team_display.php?teamid=115396
GUI URL:
name: Donate
description: Donate to SETI@home
URL: http://setiathome.berkeley.edu/sah_donate.php
======== Tasks ========
1) -----------
name: 25fe12ab.24545.17667.438086664204.12.226_0
WU name: 25fe12ab.24545.17667.438086664204.12.226
project URL: http://setiathome.berkeley.edu/
report deadline: Wed Mar 4 02:06:18 2015
ready to report: no
got server ack: no
final CPU time: 0.000000
state: downloaded
scheduler state: scheduled
exit_status: 0
signal: 0
suspended via GUI: no
active_task_state: EXECUTING
app version num: 701
checkpoint CPU time: 352.733700
current CPU time: 378.866400
fraction done: 0.088431
swap size: 110309376.000000
working set size: 40030207.999996
estimated CPU time remaining: 2505.901220

The installer, then double-click the installer icon.

Install options

You can set install options by clicking the "Advanced" button on the configuration screen. The options are:

  • Program directory - where BOINC"s program files will be stored.
  • Data directory - where BOINC"s data files will be stored. This will be a hidden directory; its location is shown in the BOINC start up messages.
  • Use BOINC screensaver - Use the BOINC screensaver for the current user.
  • Service install - Run project applications under an unprivileged account. This provides increased protection against faulty applications, but it prevents BOINC from using your GPU, and it may cause graphics to not work with older applications.
  • Allow all users on this computer to control BOINC - If selected (public mode ), all users can control BOINC (attach/detach projects, etc.). If not selected (private mode ), the only users who can control BOINC are: the installing user, members of the Administrator group, and members of the "boinc_users" group. When other users run the BOINC Manager, they"ll be shown a dialog saying to contact the administrator to add them to the "boinc_users" group.

Running BOINC invisibly

To run BOINC invisibly, choose the "Service install" option, then delete the BOINC shortcut from the Start/Programs/BOINC and Start/Programs/Startup menus (locate BOINC in each menu, right-click, select Delete). You can still run the BOINC Manager by going to C:\Program Files\BOINC and double-clicking on boincmgr.exe

Error recovery

If you get an error error 1714 - the old installation can"t be removed when installing a new version of BOINC:

  • Reinstall the previous version.
  • Uninstall the previous version.
  • Install the new version again.

Mac OS X

  • the installer.
  • If your browser has not already done so, expand the zip archive by double-clicking on it in the Finder.
  • Double-click on the BOINC Installer application to run the installer, then follow the prompts.
  • Close the installer when it is finished. This will automatically launch the BOINC Manager.
  • If you want BOINC to be your screen saver, open System Preferences from the Apple menu. Select Desktop & Screen Saver and select BOINCSaver .
  • The default location for data directory of BOINC is /Library/Application Support/BOINC Data . You may want to exclude this folder from Time Machine backup system to prevent increase of backup data size.

It can the be built with the following commands

Unzip master.zip cd boinc-master ./_autosetup ./configure \ --disable-silent-rules \ --enable-dynamic-client-linkage \ --disable-server \ --disable-fcgi \ --enable-unicode \ --with-wx-config=/usr/bin/wx-config-3.0 \ --with-ssl \ --with-x \ STRIP=: \ DOCBOOK2X_MAN=/usr/bin/db2x_docbook2man \ "CXXFLAGS=$(pkg-config gtk+-x11-3.0 --cflags --libs) -DNDEBUG" make make install

Alternatively a specific version (gitbranch and gittag) can be downloaded with the following command:

Running BOINC using Docker

You can run this image using Docker on any 64-bit Intel computer (Linux, FreeBSD, Mac, or Windows).

The image contains only the client. You can control it using a BOINC GUI running locally or remotely.

Using a bootable image

You can download a bootable image containing Linux and the BOINC client, write it to a USB stick, and boot from it. Currently one such image is available: PADOLF@home is based on Debian. It includes the 7.8.3 BOINC client and GUI, and has recent video drivers for AMD and Nvidia GPU support. Note: this is provided by volunteers, not by BOINC.

The Berkeley Installer

The Berkeley installer is available . It is a self-extracting archive. This type of installation requires that you be familiar with the UNIX command-line interface. The download files have names like boinc_7.2.23_i686-pc-linux-gnu.sh .

Here is an example. The archive is downloaded to the desktop. It is then moved to the home directory (~). Finally BOINC is unpacked and installed. All of this can be done within a regular user account; root privileges are not needed.

$ mv ~/Desktop/boinc_7.2.23_i686-pc-linux-gnu.sh ~ $ cd ~ $ sh boinc_7.2.23_i686-pc-linux-gnu.sh

This creates a directory called BOINC/ under the home directory containing the following files:

Boinc The BOINC core client. boincmgr The BOINC Manager . boinccmd A command line tool for controlling a running core client. run_client A script that cd"s into the BOINC directory and runs the core client. run_manager A script that cd"s into the BOINC directory and runs the manager.

To start the client manually enter the following terminal commands:

$ cd ~/BOINC $ ./run_client --daemon $ ./run_manager

The BOINC working directory can be moved elsewhere as you like, and can even be renamed. One common choice is ~/.boinc , since files and directories with names that begin with "dot" do not show up by default in Unix directory listings. Whatever the name, everything related to the BOINC client is contained within that directory, and you should always run the client and the manager from that working directory.

Build BOINC from source

You can build the BOINC client from source. Keep in mind that BOINC consists of both client and server software. To run BOINC on your computer you only need to build the client software.

Instructions for building BOINC from source are in a separate developer"s wiki. Start with these pages:

There is additional documentation on other web sites:

  • Installing and Running the BOINC client on Unix (from Spy Hill) - how to install and configure the client once you have built it

64 Bit Considerations

If you are running 64 bit Linux, you might have a problem with projects that issue 32 bit applications rather than 64 bit applications. To allow 32 bit applications to run on 64 bit Linux you must install 32 bit versions of certain shared libraries. The names of the packages containing the 32 bit libraries is different for each distro.

N.B. The commands given below are executed in a terminal window. To open, hit the key combination Ctrl+Alt+T. The sudo commands could ask for a password to temporarily give admin installation rights for the needed libraries. , closing the terminal or leave the terminal idle for 15 minutes will revoke these rights again.

Fedora

Three packages are required for 64 bit compatibility.

Name Description
compat-libstdc++-296.i686 Compatibility 2.96-RH standard C++ libraries
compat-libstdc++-33.i686
compat-libstdc++-33.x86_64 Compatibility standard C++ libraries

Install all 3 packages at once, by opening a terminal and typing:

Su -c "yum install compat-libstdc++-296.i686 compat-libstdc++-33.i686 compat-libstdc++-33.x86_64"

Ubuntu

Four packages are required for 64 bit compatibility (Read whole section before applying).

Name Description
ia32-libs description is unavailable
libstdc++6 description is unavailable
libstdc++5 description is unavailable
freeglut3 description is unavailable

Install all 4 packages at once with the following steps:

  1. Open a terminal.
  2. Enter (with a space between every library name, or copy the line as-is , and right-click in terminal to paste)
sudo apt-get install ia32-libs libstdc++6 libstdc++5 freeglut3

If the above fails to get 32 bit work on e.g. World Community Grid or to at all install, these sets work on newer Linuxes

Sudo apt-get install gcc-4.7-multilib libstdc++6 libstdc++5 freeglut3 lib32z1 lib32ncurses5 lib32bz2-1.0

or alternate for Test4Theory:

Sudo apt-get install gcc-4.7-multilib freeglut3 libwxgtk2.8-dev libcurl4-openssl-dev libxss-dev

The changes will not take effect until the client/daemon has been restarted. This too can be done in terminal, e.g. on Ubuntu with

Sudo service boinc-client restart

FreeBSD

  1. go to /usr/ports/net/boinc-client/, open the Makefile in a text editor
  2. change the CONFIGURE_ARGS=--disable-server as follows:
    1. on 32 bit FreeBSD change it to
      CONFIGURE_ARGS=--disable-server --with-boinc-platform=i686-pc-freebsd --with-boinc-alt-platform=i686-pc-linux-gnu
    2. on 64 bit FreeBSD change it to
      CONFIGURE_ARGS=--disable-server --with-boinc-platform=x86_64-pc-freebsd --with-boinc-alt-platform=i686-pc-linux-gnu
  3. do make install clean
  4. if you receive an error like "ELF 0 ....", make sure you have installed
    1. /usr/ports/emulators/linux_base-fc4 or higher
    2. sysctl kern.elf32.fallback_brand=3

There is additional information on installing, configuring and running BOINC on FreeBSD.

Use the idle time on your computer to cure diseases, study global warming, discover pulsars, and do many other types of scientific research. As a "quasi-supercomputing" platform, BOINC has about 570,000 active computers (hosts) worldwide processing on average 2 petaFLOPS as of July 2009, which tops the processing power of the current fastest supercomputer system (IBM Roadrunner, with a sustained processing rate of 1.026 PFLOPS). It"s safe, secure, and easy:

Installing BOINC

You can install BOINC from the Terminal by issuing the following commands.

The instructions below have been tried successfully with Ubuntu 9.04 (Jaunty Jackelope), 8.10 (Intrepid Ibex), and 8.04 (Hardy Heron). They should work also work with Ubuntu 7.10 (Gutsy Gibbon).

sudo apt-get install boinc-client boinc-manager

Note: On my machine, running 9.04, this command also installed libwxbase2.8-0 and libwxgtk2.8-0

After the installation is finished, the daemon is started automatically. You can then start the BOINC Manager from the pull-down menu Applications -> System Tools -> BOINC Manager. The first time you do this you will be prompted to attach to one or more BOINC projects (see Attach to a BOINC Manager).

After the installation is finished the daemon is configured to start up automatically every time the computer is turned on. You can temporarily disable or re-enable this by modifying a setting in the file /etc/default/boinc-client:

# Set this to 1 to enable and to 0 to disable the init script. ENABLED="1"

Attach To A Boinc Project

When you run BOINC Manager for the first time you will be greeted by the Attach to Project dialogue.

Click NEXT button

Note: On some Ubuntu 10.10 systems, notably 64-bit ones, clicking NEXT causes the BOINC Manager script to crash ---it shuts down without even an error message.

The Choose a Project dialog will come up. This has a list of some of the projects you can participate in as well as a Project URL field where you will put the address of the project you want to participate in.

To join a project in the list, click on the project name and the projects URL will appear in the Project URL Field. To join a project not on the list you will need the projects URL. is a more comprehensive list of projects.

After entering the URL click ENTER

Next is the User Information dialog. Before connecting to a project you must register with that project. If you have already registered with the project you selected in the previous dialog select "Yes, existing user". If you have not registered a Username and Password with the project select "No, new user".

If you selected "Yes, existing user", you will be prompted for the Username and Password you have attached to that project. If you selected "No, new user" you will need to enter your Email and a password.

Click the NEXT button.

If everything is successful, you will be presented with the successful project attach screen. Click the FINISH button.

Installing boinc-client on ubuntu server (no GUI)

This procedure has been tested on ubuntu 10.10 server 64 bit, after a long series of failed attempts.

If you are running 64 bit Linux and 64 bit BOINC then you might have a problem with projects that issue 32 bit applications rather than 64 bit applications. To allow 32 bit applications to run on 64 bit Linux you must install 32 bit versions of certain shared libraries (as explained )

sudo apt-get install ia32-libs libstdc++6 freeglut3

Then install main client:

sudo apt-get install boinc-client

Preferably reboot, otherwise restart boinc-client

sudo /etc/init.d/boinc-client restart

Then add your project(s) using

boinccmd --project_attach URL auth

Test if boinc is running with

boinccmd --get_state

More info on boinccmd

Editing BOINC-Client Config File - BOINC 6.2.12 in Ubuntu 8.10

You can make some changes to the BOINC-Client config file. The file that needs to be changed is cc_config.xml which is at /etc/boinc-client/cc_config.xml

First, back up the original cc_config.xml

$ sudo cp /etc/boinc-client/cc_config.xml /etc/boinc-client/cc_config.xml.orig

Then edit the /etc/boinc-client/cc_config.xml file

sudo nano /etc/boinc-client/cc_config.xml

The default BOINC 6.2.12 /etc/boinc-client/cc_config.xml file is below

1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Changing the CPU sched and debug settings will provide more information as work is done. The options within the file only have two settings: 0 for "off" and 1 for "on". The whole list of options is now at http://boinc.berkeley.edu/wiki/Client_configuration

1 1

Todo Items (move to talk page, or delete when done)

* update configuration info to Jaunty/6.2.18 and beyond.

  • keep several older versions?

* wanted: discussion of wisdom / possible problems with upgrading direct from Boinc site.

  • ? should we uninstall first ? are there technical/setup issues unique to Ubuntu
    • (other than risk of not-yet-tested-here versions)

Используют платформу BOINC, которую разработали около десяти лет назад в Калифорнийском университете в Беркли. Первый шаг к участию в одном из них – установка программы BOINC Manager.

Установка и настройка клиента BOINC

После скачивания и установки клиентской программы можно указать один или несколько проектов, к которым есть желание присоединиться. Начиная с шестой версии клиент BOINC поддерживает гибкие настройки вычислений, позволяющие точно указать, какой частью аппаратных ресурсов человек готов пожертвовать для нужд науки. Кроме того, можно задать в BOINC Manager автоматическую пазу при запуске некоторых программ или вести вычисления лишь в определённые часы. Расчёты можно в любой момент полностью или выборочно приостановить вручную и так же легко возобновить.

Настройки вычислений на центральном и графическом процессоре в клиенте BOINC

Помимо опций самого клиентского приложения, для каждого проекта предусмотрены настройки через веб-интерфейс на личной странице участника.

Настройки проекта BOINC через веб-интерфейс

Оценить вычислительную мощность компьютера можно встроенным бенчмарком BOINC. Он же иногда используется для сравнения реальной производительности различных конфигураций.

Встроенный тест производительности клиента BOINC

Выбор проектов с учётом доступных ресурсов

При выполнении научных расчётов важную роль играет производительность блоков FPU, осуществляющих вычисления с плавающей запятой. Точность вычислений может быть разная. Обычно говорят о трёх реализованных на практике типах:

  • FP16 (Half Precision) - половинная точность вычислений с плавающей запятой;
  • FP32 (Single Precision) - одинарная точность вычислений с плавающей запятой;
  • FP64 (Double Precision) - двойная точность вычислений с плавающей запятой.

Именно последний тип вычислений (FP64, или binary64 по стандарту IEEE 754) наиболее востребован в расчётах BOINC и других научных программах, поскольку он позволяет оперировать значениями в диапазоне от ≈ 10 -308 до 10 308 с точностью до 15 знака (в десятичном выражении) после запятой. Однако доля вычислений с одинарной точностью тоже весьма велика и даже достаточна для отдельных проектов.

Современные видеокарты поддерживают технологии вычислений общего назначения. Любой видеочип, выпущенный после 2007 года, справится с научными расчётами лучше, чем сопоставимый по цене центральный процессор близкого поколения.

Архитектура и скорость вычислений типа FP32 и FP64 некоторых видеокарт

Если раньше в этом сегменте доминировала nVidia (в том числе за счёт выпуска ускорителей Tesla той же архитектуры), то сейчас всё больше проектов смотрят в сторону AMD (ATI).

Пример выполнения проектов BOINC на видеокарте AMD

Появились и такие проекты, которые поддерживают ускорение на видеокартах AMD, но не работают с продуктами nVidia.

Проекты BOINC с эксклюзивной поддержкой видеокарт AMD

Предположительно это связано с тем, что при высокой скорости вычислений FP32 видеокарты nVidia на чипе GK104 демонстрируют сильное падение производительности в расчётах типа FP64. К примеру, если Radeon HD 6930 выполняет вычисления с двойной точностью в четыре раза медленнее, чем с одинарной (480 и 1920 гигафлопс соответственно), то GeForce GTX 680 – в двадцать четыре (128 и 3090 гигафлопс).

Когда “последний” не означает “лучший”

Само по себе использование более современных чипов далеко не всегда означает прирост в скорости. Например, HD 6850 не способен считать с двойной точностью, а HD 5850 выполняет вычисления FP64 со скоростью до 418 гигафлопс.

Топовые видеокарты часто обладают производительностью многопроцессорного сервера. Например, видеокарта с чипом HD 7970 содержит 2048 вычислительных ядер, объединённых в 32 блока. Её теоретическая производительность составляет 3789 гигафлопс при операциях с одинарной и 947 гигафлопс – с двойной точностью.

Для сравнения: арифметическая часть процессора Core-i5 3570K обеспечивает 122 гигафлопса (FP32) и 61 гигафлопс (FP64) в турборежиме, а Intel HD Graphics 4000 даёт прирост ещё на 147 гигафлопс (FP32). У AMD A10-5800K расчётная производительность арифметической части также находится на уровне 122 гигафлопса (FP32) и 61 гигафлопс (FP64), но видеоядро Radeon HD 7660D обеспечивает четырёхкратный прирост – на 614 гигафлопс (FP32).

Сейчас определённо есть смысл выбирать те проекты, которые могут быть обсчитаны с использованием видеокарт или хотя бы встроенных графических ядер. Однако между теоретическим пределом производительности и практически достигаемым результатом часто наблюдается разница не на проценты, а в разы. Она обусловлена квалификацией программистов и оптимизационными пределами для каждой конкретной задачи.

Например, задания проекта Einstein@home на компьютере с Core-i3 2100 и видеокартой Radeon HD 6850 обсчитываются со скоростью 49,5 гигафлопса, а POEM@home – 71,4 гигафлопса с теми же настройками. Оба проекта декларируют поддержку ускорения вычислений видеокартами AMD.

Затраты электроэнергии

Важным моментом является энергоэффективность разных систем. Сейчас она составляет от 1 до 20 гигафлопс на ватт, и этот параметр напрямую влияет на то, как увеличится ваш счёт за электроэнергию. С точки зрения экономичности привлекательны не только специализированные ускорители и серверные решения, но также APU и отдельные массовые видеочипы. У AMD наиболее интересные чипы расположены ближе к началу ценового диапазона, а у nVidia – преимущественно в его верхней трети.

К примеру, эффективность недорогой видеокарты Radeon HD 7770 составляет 16 гигафлопс на ватт в расчётах FP32, однако её использование для выполнения FP64 расчётов неоправданно – здесь она продемонстрирует результат всего в 1,0 гигафлопс на ватт. Даже у выпущенного в 2009 году чипа HD 4750 данный показатель был гораздо лучше – 2,5 гигафлопса на ватт.

GeForce GTX 660Ti принадлежит к верхней границе среднего ценового диапазона, но тратит энергию эффективнее: 16,4 гигафлопса на ватт в расчётах FP32 и 2,1 гигафлопса на ватт при вычислениях с двойной точностью.

Если (теоретически) держать BOINC в режиме постоянной обработки и не выключать компьютер, то при потребляемой мощности ≈ 200 Вт он добавит за месяц менее 150 кВт*ч к показаниям счётчика. В типичном сценарии использования (когда BOINC активен только в простое, а компьютер работает по несколько часов в день и выключается на ночь) – менее десяти киловатт-час.

Возможно, эти незначительные затраты в поддержку исследовательских команд ведущих университетов мира многим покажутся более оправданными, чем перечисление пожертвований сомнительным благотворительным организациям.

Рассказать друзьям