Problem Genefer GPU na Linuxie

Zaczęty przez stiven, 07 Czerwiec 2017, 00:17

stiven

Koledzy, potrzebuję pomocy.

Liczę na Linux Mint 18.1 Serena próbki z podprojektu genefer17low. Ogarnąłem, że aplikacja zjada cały jeden rdzeń w trakcie obliczeń. Ja bardzo mu tego rdzenia oddać nie chcę więc stworzyłem ładny app_info.xml o treści:
Cytat<app_config>
   <app>
     <name>genefer17low</name>
     <gpu_versions>
         <gpu_usage>1</gpu_usage>
         <cpu_usage>0.05</cpu_usage>
     </gpu_versions>
   </app>
</app_config>

Przetestowałem na windowsie.
Na linuxie wrzuciłem do /var/lib/boinc-client/projects/www.primegrid.com Upewniłem się boinc ma uprawnienia do odczytu.

BM rozpoznał app_config.xml:

Cytatwto, 6 cze 2017, 23:43:49 |  | Starting BOINC client version 7.6.31 for x86_64-pc-linux-gnu
wto, 6 cze 2017, 23:43:49 |  | log flags: file_xfer, sched_ops, task
wto, 6 cze 2017, 23:43:49 |  | Libraries: libcurl/7.47.0 OpenSSL/1.0.2g zlib/1.2.8 libidn/1.32 librtmp/2.3
wto, 6 cze 2017, 23:43:49 |  | Data directory: /var/lib/boinc-client
wto, 6 cze 2017, 23:43:54 |  | CUDA: NVIDIA GPU 0: GeForce GTX 645 (driver version 375.39, CUDA version 8.0, compute capability 3.0, 972MB, 956MB available, 949 GFLOPS peak)
wto, 6 cze 2017, 23:43:54 |  | OpenCL: NVIDIA GPU 0: GeForce GTX 645 (driver version 375.39, device version OpenCL 1.2 CUDA, 972MB, 956MB available, 949 GFLOPS peak)
wto, 6 cze 2017, 23:43:54 |  | [error] bad value 1496790426.719677 of time stats last update; ignoring
wto, 6 cze 2017, 23:43:54 |  | Host name: stiveny
wto, 6 cze 2017, 23:43:54 |  | Processor: 4 GenuineIntel Intel(R) Xeon(R) CPU E3-1220 v3 @ 3.10GHz [Family 6 Model 60 Stepping 3]
wto, 6 cze 2017, 23:43:54 |  | 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 pdpe1gb 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 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts
wto, 6 cze 2017, 23:43:54 |  | OS: Linux: 4.4.0-53-generic
wto, 6 cze 2017, 23:43:54 |  | Memory: 3.80 GB physical, 3.94 GB virtual
wto, 6 cze 2017, 23:43:54 |  | Disk: 82.50 GB total, 65.24 GB free
wto, 6 cze 2017, 23:43:54 |  | Local time is UTC +2 hours
wto, 6 cze 2017, 23:43:54 | PrimeGrid | Found app_config.xml

niby przyjął ustawienia bo obok próbki wyświetla 0.05 CPU ale dalej zżera cały rdzeń. Próbowałem różnych wartości - bezskutecznie.

Przechodząc do meritum:
1. Co robię źle?
2. Czy linuxowa aplikacja przypadkiem nie ma tak, że zawsze zużywa cały jeden rdzeń?
3. Czy ktoś może sprawdzić to u siebie?

Próbka liczona na windowsie:http://www.primegrid.com/result.php?resultid=820904602
Próbka liczona na linuxie: http://www.primegrid.com/result.php?resultid=820401592

W przypadku liczenia PPS (Sieve) CPU nie jest obciążane.
Co ciekawe  <gpu_usage>0.5</gpu_usage> jest przyjmowane i wykonywane tj liczą się dwie próbki naraz.




sirzooro

Wpisy w app_config.xml informują jedynie BOINCa o tym ile CPU/GPU aplikacja będzie zużywać. W ten sposób nie da się niestety ograniczyć tego ile aplikacja rzeczywiście zużywa. W przypadku CPU jak wstawisz tam np. 0.5 to uruchomią się dwie kopie równolegle i będą one współdzieliły jeden rdzeń procesora, i liczyły się w sumie 2 razy dłużej niż jedna. Przy GPU jest podobnie, przy czym tutaj nieraz aplikacja nie wykorzystuje 100% mocy, więc jest sens puszczenia 2 kopii żeby wykorzystać wszystko co fabryka dała.

Może to jest kwestia aktualizacji sterowników, tak jak tutaj sugeruję? https://www.primegrid.com/forum_thread.php?id=7364#106379

stiven

#2
Forum PG przekopałem i zużywanie całego rdzenia przez aplikację linuxową się często pojawia. Bez wyraźniej odpowiedzi adminów, że apka tak ma i już.

Ze sterownikami już kombinowałem.
Dokładniej z wersją 340.10.
Kartę rozpoznaje, CUDA tym razem to 6.5 i OCL w wersji 1.1:
Cytatczw, 8 cze 2017, 01:00:41 |  | CUDA: NVIDIA GPU 0: GeForce GTX 645 (driver version 340.10, CUDA version 6.5, compute capability 3.0, 1023MB, 998MB available, 949 GFLOPS peak)
czw, 8 cze 2017, 01:00:41 |  | OpenCL: NVIDIA GPU 0: GeForce GTX 645 (driver version 340.102, device version OpenCL 1.1 CUDA, 1023MB, 998MB available, 949 GFLOPS peak)
ale wali błędami po kilku sekundach.