Multi-Client / Multi-User with GPUs

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]
 
Last edited:
and you find that client also in SETI ( but without a name; no idea why ...)

Screen Shot 2018-07-14 at 11.00.44.png


Here even now with two BOINC versions; the current running 7.7.0 with GPU Grid etc; plus the one 7.11.0 I just installed
 
Last edited:
for bunkering now its is simple

load the instance you just created with all WUs you can get and once loaded prevent further network transfers via the menu "Suspend network activity".

Screen Shot 2018-07-14 at 11.42.58.png


You need to check from time to time the client progress and what I do is once all WU are done also suspend CPU and GPU and wait to release the bunker in time
 
Last edited:
Special source apps

2017 approach; not check if still valid for 2018

cp -rP Linux_zi3v-CUDA80_Special/* /home/boinc10/projects/setiathome.berkeley.edu/
cp -rP libcu* /home/boinc10/projects/setiathome.berkeley.edu/


Got the latest special version
curl http://www.arkayn.us/lunatics/Linux_zi3v-CUDA90_Special.7z > cuda90.7z

and try once the current batch is done ;-)
 
Last edited:
Thanks CV. I think it should work with the optimized apps. The guide is self explanatory. It seems SETI GPU tasks run faster in linux optimized apps than windows.
 
I can run multiple boinc instances in linux for SETI per CV's guide, CPU and GPU projects using boinccmd command line interface within Win7 and VB/VM within Win7 and Linux (CPU only).

I'm having problem running GPU within Bonic manager. Only CPU using the suggestion here.

So, I have one 2670v1 rig with Win7. In my main/primary client, I can run both CPU and GPU projects. See event log from BM 7.10.2 for my primary client. It detects AMD GPU card.
upload_2018-8-18_15-34-41.png


On the same machine, I created another boinc instance (under C:\ProgramData\BOINC2) but in the event log file, no GPU is detected when I launched the BM. I can run CPU projects only. That sucks. I notice that the coproc_info.xml file is missing so I copied it from ProgramData\BOINC to the BOINC2 data directory and when I run the *.bat script file, it automatically deleted the coproc_info.xml file which is needed for running GPU task, if I'm not mistaken.

The *.bat script file that I used is:
"C:\Program Files\BOINC\boinc.exe" --allow_multiple_clients --redirectio --detach_console --gui_rpc_port 31418 --dir C:\ProgramData\BOINC2
exit


upload_2018-8-18_15-36-47.png


Below is the cc_config.xml file for BOINC2:
<cc_config>
-<options>
<use_all_gpus>1</use_all_gpus>
<allow_multiple_clients>1</allow_multiple_clients>
<allow_remote_gui_rpc>1</allow_remote_gui_rpc>
<report_results_immediately>1</report_results_immediately>
</options>
</cc_config>

Does anyone manage to get GPU to show up in multiple boinc instances within BOINC Manager or this is the same issue with virtual box?
 
I had issues on one computer when i was using a batch file like yours above. worked fine for me when i used the goofy grid guide and ran it command line after copying the project file directly into the folder i was running it from
 
the command line is different and doesn't include the "detach" part. here is an example:

C:\multiboinc>start "BOINC_119" /MIN "c:\Program Files\BOINC\boinc.exe" -allow_multiple_clients -dir c:\Multiboinc\BOINC_119 -gui_rpc_port 50119
 
So looks like the guide in overclock.net is not correct. I modified the *.bat batch file per your previous post to the one below.

"C:\Program Files\BOINC\boinc.exe" --allow_multiple_clients --redirectio --gui_rpc_port 31418 --dir C:\ProgramData\BOINC2
exit


It seems to work as now the coproc_info.xml file is no longer deleted which is needed for running GPU tasks. Let me run some tasks to be sure it works.
 
So looks like the guide in overclock.net is not correct. I modified the *.bat batch file per your previous post to the one below.

"C:\Program Files\BOINC\boinc.exe" --allow_multiple_clients --redirectio --gui_rpc_port 31418 --dir C:\ProgramData\BOINC2
exit


It seems to work as now the coproc_info.xml file is no longer deleted which is needed for running GPU tasks. Let me run some tasks to be sure it works.

Holy fuck! I could have bunkered twice as much with this command fixed. My alternate BOINC instances would never pick up a gpu. AWESOME!
 
Back
Top