ChristianVirtual
[H]ard DCOTM x3
- Joined
- Feb 23, 2013
- Messages
- 2,561
I try to outline the way working for me on CentOS to utilize a multi-client setup for project including GPU.
When I used the classical way of just cloning standard installations and copy project folder it didn't worked out to detect the GPUs (NVIDIA in my case).
So I went the route of creating multiple user account (e.g. boinc1, boinc2, boinc3, ...) and install in each of them based on source code a boinc setup. This way you waste a bit storage on the disk; but not really a big issue (maybe could be reduced with some symlinks; but didn't tried).
Prerequisite: all required tools like compiler, graphic driver etc are installed (see the standard CentOS guide from EXT64 for that)
In a loop you do
1) Create a new user ID; with a running number at the end to differentiate
useradd boinc10
2) login to the user
sudo su - boinc10
3) copy the latest and greatest source code from BOINC into a new folder boinc_source
git clone https://github.com/BOINC/boinc boinc_source
Option: you might have already the same copy from a cloned user before or a symlink here might help; or have a copy already elsewhere
mkdir boinc_source; cd boinc_source; cp -rP /opt/boinc_source/boinc_source .
4) configure the source
cd boinc_source
./_autosetup -f
./configure --disable-manager --disable-server --enable-client --prefix=$HOME
make
Important here is the --prefix as it will guide to install in your home-directory. That was needed to ensure the GPU hardware detection with work on the additional clients (which was not the case; I might need to try with the latest version if that got fixed.
5) "creative" install (not as sudo/admin/root); normally one would use "make install" with sudo etc but that is needed to get the standard start/stop script etc in place (we don't want that); so just as the same user
make install
6) go back home and check the folder
cd
ls -lrt
[boinc10@linuxpowered ~]$ ls
bin boinc_source etc include lib
7) good job until here; take a break
enter elevator music here
8) Welcome back; now lets finalize our installation
echo '<cc_config>' > cc_config.xml
echo '<options>' >> cc_config.xml
echo '<allow_remote_gui_rpc>1</allow_remote_gui_rpc>' >> cc_config.xml
echo '<use_all_gpus>1</use_all_gpus>' >> cc_config.xml
echo '</options>' >> cc_config.xml
echo '</cc_config>' >> cc_config.xml
echo 'your GUI RPC code' > gui_rpc_auth.cfg
9) and test our installation
/home/boinc10/bin/boinc
expected output like this
14-Jul-2018 10:41:55 [---] Starting BOINC client version 7.11.0 for x86_64-pc-linux-gnu
14-Jul-2018 10:41:55 [---] This a development version of BOINC and may not function properly
14-Jul-2018 10:41:55 [---] log flags: file_xfer, sched_ops, task
14-Jul-2018 10:41:55 [---] Libraries: libcurl/7.29.0 NSS/3.21 Basic ECC zlib/1.2.7 libidn/1.28 libssh2/1.4.3
14-Jul-2018 10:41:55 [---] Data directory: /home/boinc10
14-Jul-2018 10:41:56 [---] CUDA: NVIDIA GPU 0: GeForce GTX 1080 Ti (driver version 384.47, CUDA version 9.0, compute capability 6.1, 4096MB, 3976MB available, 11340 GFLOPS peak)
14-Jul-2018 10:41:56 [---] CUDA: NVIDIA GPU 1: GeForce GTX 980 Ti (driver version 384.47, CUDA version 9.0, compute capability 5.2, 4096MB, 4006MB available, 7271 GFLOPS peak)
14-Jul-2018 10:41:56 [---] OpenCL: NVIDIA GPU 0: GeForce GTX 1080 Ti (driver version 384.47, device version OpenCL 1.2 CUDA, 11172MB, 3976MB available, 11340 GFLOPS peak)
14-Jul-2018 10:41:56 [---] OpenCL: NVIDIA GPU 1: GeForce GTX 980 Ti (driver version 384.47, device version OpenCL 1.2 CUDA, 6078MB, 4006MB available, 7271 GFLOPS peak)
14-Jul-2018 10:41:56 [---] [libc detection] gathered: 2.17, GNU libc
14-Jul-2018 10:41:56 [---] Host name: linuxpowered
14-Jul-2018 10:41:56 [---] Processor: 8 GenuineIntel Intel(R) Core(TM) i7-2600S CPU @ 2.80GHz [Family 6 Model 42 Stepping 7]
14-Jul-2018 10:41:56 [---] Processor features: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid xsaveopt
14-Jul-2018 10:41:56 [---] OS: Linux CentOS Linux: CentOS Linux 7 (Core) [3.10.0-514.6.1.el7.x86_64|libc 2.17 (GNU libc)]
14-Jul-2018 10:41:56 [---] Memory: 31.21 GB physical, 11.18 GB virtual
14-Jul-2018 10:41:56 [---] Disk: 50.03 GB total, 35.05 GB free
14-Jul-2018 10:41:56 [---] Local time is UTC +9 hours
14-Jul-2018 10:41:56 [---] Config: GUI RPC allowed from any host
14-Jul-2018 10:41:56 [---] Config: use all coprocessors
14-Jul-2018 10:41:56 [---] Last benchmark was 17726 days 01:41:55 ago
14-Jul-2018 10:41:56 [---] No general preferences found - using defaults
14-Jul-2018 10:41:56 [---] Preferences:
14-Jul-2018 10:41:56 [---] max memory usage when active: 15978.45 MB
14-Jul-2018 10:41:56 [---] max memory usage when idle: 28761.21 MB
14-Jul-2018 10:41:56 [---] max disk usage: 34.95 GB
14-Jul-2018 10:41:56 [---] don't use GPU while active
14-Jul-2018 10:41:56 [---] suspend work if non-BOINC CPU load exceeds 25%
14-Jul-2018 10:41:56 [---] (to change preferences, visit a project web site or select Preferences in the Manager)
14-Jul-2018 10:41:56 [---] Setting up project and slot directories
14-Jul-2018 10:41:56 [---] Checking active tasks
14-Jul-2018 10:41:56 [---] Setting up GUI RPC socket
Control-C to stop it
Great; both GPUs detected
10) Start the client with a different port (like 30010 in this case)
/home/boinc10/bin/boinc --allow_multiple_clients --allow_remote_gui_rpc --daemon --suppress_net_info --gui_rpc_port 30010
11) Attach to ... SETI in our case
boinccmd --host linuxpowered:30010 --passwd <GUI-RPC-Password> --project_attach http://setiathome.berkeley.edu/ <weak_accountkey>
12) Start a BOINCManager from a different laptop or PC (or the local one if you like)
This is important and part of the pain in the neck consequence. When you connect with a BOINCManger to the client you also need to give the port under which the client will be connected
like on my Mac
/Applications/BOINCManager.app/Contents/MacOS/BOINCManager -n linuxpowered -m -p <GUI-RPC-Password> -g 30010
Then repeat for the number of desired clients
User: boinc[nn]
Port: 300[nn]
When I used the classical way of just cloning standard installations and copy project folder it didn't worked out to detect the GPUs (NVIDIA in my case).
So I went the route of creating multiple user account (e.g. boinc1, boinc2, boinc3, ...) and install in each of them based on source code a boinc setup. This way you waste a bit storage on the disk; but not really a big issue (maybe could be reduced with some symlinks; but didn't tried).
Prerequisite: all required tools like compiler, graphic driver etc are installed (see the standard CentOS guide from EXT64 for that)
In a loop you do
1) Create a new user ID; with a running number at the end to differentiate
useradd boinc10
2) login to the user
sudo su - boinc10
3) copy the latest and greatest source code from BOINC into a new folder boinc_source
git clone https://github.com/BOINC/boinc boinc_source
Option: you might have already the same copy from a cloned user before or a symlink here might help; or have a copy already elsewhere
mkdir boinc_source; cd boinc_source; cp -rP /opt/boinc_source/boinc_source .
4) configure the source
cd boinc_source
./_autosetup -f
./configure --disable-manager --disable-server --enable-client --prefix=$HOME
make
Important here is the --prefix as it will guide to install in your home-directory. That was needed to ensure the GPU hardware detection with work on the additional clients (which was not the case; I might need to try with the latest version if that got fixed.
5) "creative" install (not as sudo/admin/root); normally one would use "make install" with sudo etc but that is needed to get the standard start/stop script etc in place (we don't want that); so just as the same user
make install
6) go back home and check the folder
cd
ls -lrt
[boinc10@linuxpowered ~]$ ls
bin boinc_source etc include lib
7) good job until here; take a break
enter elevator music here
8) Welcome back; now lets finalize our installation
echo '<cc_config>' > cc_config.xml
echo '<options>' >> cc_config.xml
echo '<allow_remote_gui_rpc>1</allow_remote_gui_rpc>' >> cc_config.xml
echo '<use_all_gpus>1</use_all_gpus>' >> cc_config.xml
echo '</options>' >> cc_config.xml
echo '</cc_config>' >> cc_config.xml
echo 'your GUI RPC code' > gui_rpc_auth.cfg
9) and test our installation
/home/boinc10/bin/boinc
expected output like this
14-Jul-2018 10:41:55 [---] Starting BOINC client version 7.11.0 for x86_64-pc-linux-gnu
14-Jul-2018 10:41:55 [---] This a development version of BOINC and may not function properly
14-Jul-2018 10:41:55 [---] log flags: file_xfer, sched_ops, task
14-Jul-2018 10:41:55 [---] Libraries: libcurl/7.29.0 NSS/3.21 Basic ECC zlib/1.2.7 libidn/1.28 libssh2/1.4.3
14-Jul-2018 10:41:55 [---] Data directory: /home/boinc10
14-Jul-2018 10:41:56 [---] CUDA: NVIDIA GPU 0: GeForce GTX 1080 Ti (driver version 384.47, CUDA version 9.0, compute capability 6.1, 4096MB, 3976MB available, 11340 GFLOPS peak)
14-Jul-2018 10:41:56 [---] CUDA: NVIDIA GPU 1: GeForce GTX 980 Ti (driver version 384.47, CUDA version 9.0, compute capability 5.2, 4096MB, 4006MB available, 7271 GFLOPS peak)
14-Jul-2018 10:41:56 [---] OpenCL: NVIDIA GPU 0: GeForce GTX 1080 Ti (driver version 384.47, device version OpenCL 1.2 CUDA, 11172MB, 3976MB available, 11340 GFLOPS peak)
14-Jul-2018 10:41:56 [---] OpenCL: NVIDIA GPU 1: GeForce GTX 980 Ti (driver version 384.47, device version OpenCL 1.2 CUDA, 6078MB, 4006MB available, 7271 GFLOPS peak)
14-Jul-2018 10:41:56 [---] [libc detection] gathered: 2.17, GNU libc
14-Jul-2018 10:41:56 [---] Host name: linuxpowered
14-Jul-2018 10:41:56 [---] Processor: 8 GenuineIntel Intel(R) Core(TM) i7-2600S CPU @ 2.80GHz [Family 6 Model 42 Stepping 7]
14-Jul-2018 10:41:56 [---] Processor features: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept vpid xsaveopt
14-Jul-2018 10:41:56 [---] OS: Linux CentOS Linux: CentOS Linux 7 (Core) [3.10.0-514.6.1.el7.x86_64|libc 2.17 (GNU libc)]
14-Jul-2018 10:41:56 [---] Memory: 31.21 GB physical, 11.18 GB virtual
14-Jul-2018 10:41:56 [---] Disk: 50.03 GB total, 35.05 GB free
14-Jul-2018 10:41:56 [---] Local time is UTC +9 hours
14-Jul-2018 10:41:56 [---] Config: GUI RPC allowed from any host
14-Jul-2018 10:41:56 [---] Config: use all coprocessors
14-Jul-2018 10:41:56 [---] Last benchmark was 17726 days 01:41:55 ago
14-Jul-2018 10:41:56 [---] No general preferences found - using defaults
14-Jul-2018 10:41:56 [---] Preferences:
14-Jul-2018 10:41:56 [---] max memory usage when active: 15978.45 MB
14-Jul-2018 10:41:56 [---] max memory usage when idle: 28761.21 MB
14-Jul-2018 10:41:56 [---] max disk usage: 34.95 GB
14-Jul-2018 10:41:56 [---] don't use GPU while active
14-Jul-2018 10:41:56 [---] suspend work if non-BOINC CPU load exceeds 25%
14-Jul-2018 10:41:56 [---] (to change preferences, visit a project web site or select Preferences in the Manager)
14-Jul-2018 10:41:56 [---] Setting up project and slot directories
14-Jul-2018 10:41:56 [---] Checking active tasks
14-Jul-2018 10:41:56 [---] Setting up GUI RPC socket
Control-C to stop it
Great; both GPUs detected
10) Start the client with a different port (like 30010 in this case)
/home/boinc10/bin/boinc --allow_multiple_clients --allow_remote_gui_rpc --daemon --suppress_net_info --gui_rpc_port 30010
11) Attach to ... SETI in our case
boinccmd --host linuxpowered:30010 --passwd <GUI-RPC-Password> --project_attach http://setiathome.berkeley.edu/ <weak_accountkey>
12) Start a BOINCManager from a different laptop or PC (or the local one if you like)
This is important and part of the pain in the neck consequence. When you connect with a BOINCManger to the client you also need to give the port under which the client will be connected
like on my Mac
/Applications/BOINCManager.app/Contents/MacOS/BOINCManager -n linuxpowered -m -p <GUI-RPC-Password> -g 30010
Then repeat for the number of desired clients
User: boinc[nn]
Port: 300[nn]
Last edited: