Help Request: GPU Detection and GFLOPs

Message boards : GPUs : Help Request: GPU Detection and GFLOPs
Message board moderation

To post messages, you must log in.

AuthorMessage
Rom Walton
Project developer
Avatar

Send message
Joined: 26 Aug 05
Posts: 164
Message 66654 - Posted: 8 Jan 2016, 4:44:50 UTC
Last modified: 8 Jan 2016, 4:45:06 UTC

Howdy Folks,

Recently I set about trying to improve how we determine the GFLOP rating of the various GPUS that BOINC can detect.

For those of you who are comfortable running experimental builds, would you run this private drop and post the GPU detection results:
Win x86: http://boinc.berkeley.edu/dl/boinc.07012016.x86.zip
Win x64: http://boinc.berkeley.edu/dl/boinc.07012016.x64.zip

My goal is to make the GFLOP rating similar to those listed here (Single Precision):
Nvidia: https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units
AMD: https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units
----- Rom
BOINC Development Team, U.C. Berkeley
My Blog
ID: 66654 · Report as offensive
Claggy

Send message
Joined: 23 Apr 07
Posts: 1112
United Kingdom
Message 66655 - Posted: 8 Jan 2016, 5:01:35 UTC - in response to Message 66654.  

Before:

08-Jan-2016 04:55:48 [---] Starting BOINC client version 7.6.22 for windows_x86_64
08-Jan-2016 04:55:48 [---] log flags: file_xfer, sched_ops, task, benchmark_debug, coproc_debug, cpu_sched
08-Jan-2016 04:55:48 [---] log flags: dcf_debug, sched_op_debug
08-Jan-2016 04:55:48 [---] Libraries: libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8
08-Jan-2016 04:55:48 [---] Data directory: C:\ProgramData\BOINC
08-Jan-2016 04:55:48 [---] Running under account Stephen Maclagan
08-Jan-2016 04:55:48 [---] [coproc] launching child process at C:\Program Files\BOINC\boinc.exe
08-Jan-2016 04:55:48 [---] [coproc] relative to directory C:\ProgramData\BOINC
08-Jan-2016 04:55:48 [---] [coproc] with data directory "C:\ProgramData\BOINC"
08-Jan-2016 04:55:48 [---] CUDA: NVIDIA GPU 0: GeForce GTX 760 (driver version 347.52, CUDA version 7.0, compute capability 3.0, 4096MB, 3150MB available, 2379 GFLOPS peak)
08-Jan-2016 04:55:48 [---] CAL: ATI GPU 0: AMD Radeon HD 7700/R7 250X/R9 255 series (Capeverde) (CAL version 1.4.1848, 1024MB, 984MB available, 3584 GFLOPS peak)
08-Jan-2016 04:55:48 [---] OpenCL: NVIDIA GPU 0: GeForce GTX 760 (driver version 347.52, device version OpenCL 1.1 CUDA, 4096MB, 3150MB available, 2379 GFLOPS peak)
08-Jan-2016 04:55:48 [---] OpenCL: AMD/ATI GPU 0: AMD Radeon HD 7700/R7 250X/R9 255 series (Capeverde) (driver version 1573.4 (VM), device version OpenCL 1.2 AMD-APP (1573.4), 1024MB, 984MB available, 3584 GFLOPS peak)
08-Jan-2016 04:55:48 [---] OpenCL CPU: Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz (OpenCL driver vendor: Advanced Micro Devices, Inc., driver version 1573.4 (sse2,avx), device version OpenCL 1.2 AMD-APP (1573.4))
08-Jan-2016 04:55:48 [---] [coproc] NVIDIA library reports 1 GPU
08-Jan-2016 04:55:48 [SETI@home] Found app_info.xml; using anonymous platform
08-Jan-2016 04:55:48 [SETI@home Beta Test] Found app_info.xml; using anonymous platform
08-Jan-2016 04:55:49 [---] Host name: P8Z68-V-Pro
08-Jan-2016 04:55:49 [---] Processor: 8 GenuineIntel Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz [Family 6 Model 42 Stepping 7]
08-Jan-2016 04:55:49 [---] 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 htt tm pni ssse3 cx16 sse4_1 sse4_2 popcnt aes syscall nx lm avx vmx tm2 pbe
08-Jan-2016 04:55:49 [---] OS: Microsoft Windows 7: Home Premium x64 Edition, Service Pack 1, (06.01.7601.00)
08-Jan-2016 04:55:49 [---] Memory: 7.98 GB physical, 15.95 GB virtual
08-Jan-2016 04:55:49 [---] Disk: 1.82 TB total, 1.39 TB free
08-Jan-2016 04:55:49 [---] Local time is UTC +0 hours


Afterwards:

08/01/2016 04:59:57 | | Starting BOINC client version 7.7.0 for windows_x86_64
08/01/2016 04:59:57 | | This a development version of BOINC and may not function properly
08/01/2016 04:59:57 | | log flags: file_xfer, sched_ops, task, benchmark_debug, coproc_debug, cpu_sched
08/01/2016 04:59:57 | | log flags: dcf_debug, sched_op_debug
08/01/2016 04:59:57 | | Libraries: libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8
08/01/2016 04:59:57 | | Data directory: C:\ProgramData\BOINC
08/01/2016 04:59:57 | | Running under account Stephen Maclagan
08/01/2016 04:59:58 | | [coproc] launching child process at C:\Program Files\BOINC\boinc.exe
08/01/2016 04:59:58 | | [coproc] relative to directory C:\ProgramData\BOINC
08/01/2016 04:59:58 | | [coproc] with data directory "C:\ProgramData\BOINC"
08/01/2016 04:59:58 | | CUDA: NVIDIA GPU 0: GeForce GTX 760 (driver version 347.52, CUDA version 7.0, compute capability 3.0, 4096MB, 3118MB available, 2379 GFLOPS peak)
08/01/2016 04:59:58 | | CAL: ATI GPU 0: AMD Radeon HD 7700/R7 250X/R9 255 series (Capeverde) (CAL version 1.4.1848, 1024MB, 984MB available, 3584 GFLOPS peak)
08/01/2016 04:59:58 | | OpenCL: NVIDIA GPU 0: GeForce GTX 760 (driver version 347.52, device version OpenCL 1.1 CUDA, 4096MB, 3118MB available, 2379 GFLOPS peak)
08/01/2016 04:59:58 | | OpenCL: AMD/ATI GPU 0: AMD Radeon HD 7700/R7 250X/R9 255 series (Capeverde) (driver version 1573.4 (VM), device version OpenCL 1.2 AMD-APP (1573.4), 1024MB, 984MB available, 3584 GFLOPS peak)
08/01/2016 04:59:58 | | [coproc] NVIDIA library reports 1 GPU
08/01/2016 04:59:58 | | [coproc] clGetDeviceInfo failed to get CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD for device 0
08/01/2016 04:59:58 | SETI@home | Found app_info.xml; using anonymous platform
08/01/2016 04:59:58 | SETI@home Beta Test | Found app_info.xml; using anonymous platform
08/01/2016 04:59:58 | | Version change (7.6.22 -> 7.7.0)
08/01/2016 04:59:58 | | Host name: P8Z68-V-Pro
08/01/2016 04:59:58 | | Processor: 8 GenuineIntel Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz [Family 6 Model 42 Stepping 7]
08/01/2016 04:59:58 | | 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 htt tm pni ssse3 cx16 sse4_1 sse4_2 popcnt aes syscall nx lm avx vmx tm2 pbe
08/01/2016 04:59:58 | | OS: Microsoft Windows 7: Home Premium x64 Edition, Service Pack 1, (06.01.7601.00)
08/01/2016 04:59:58 | | Memory: 7.98 GB physical, 15.95 GB virtual
08/01/2016 04:59:58 | | Disk: 1.82 TB total, 1.39 TB free
08/01/2016 04:59:58 | | Local time is UTC +0 hours


Claggy
ID: 66655 · Report as offensive
Profile Richie

Send message
Joined: 2 Jul 14
Posts: 186
Finland
Message 66659 - Posted: 8 Jan 2016, 7:02:44 UTC

HOST 1

before:

8.1.2016 7:25:03 | | Starting BOINC client version 7.6.22 for windows_x86_64
8.1.2016 7:25:03 | | log flags: sched_ops, task, coproc_debug
8.1.2016 7:25:03 | | Libraries: libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8
8.1.2016 7:25:03 | | Data directory: E:\BOINC_datafolder
8.1.2016 7:25:03 | | Running under account ***
8.1.2016 7:25:03 | | [coproc] launching child process at F:\BOINC_76220_x64\boinc.exe
8.1.2016 7:25:03 | | [coproc] relative to directory E:\BOINC_datafolder
8.1.2016 7:25:03 | | [coproc] with data directory "E:\BOINC_datafolder"
8.1.2016 7:25:04 | | CUDA: NVIDIA GPU 0: GeForce GTX 780 (driver version 347.88, CUDA version 7.0, compute capability 3.5, 3072MB, 2819MB available, 4636 GFLOPS peak)
8.1.2016 7:25:04 | | OpenCL: NVIDIA GPU 0: GeForce GTX 780 (driver version 347.88, device version OpenCL 1.1 CUDA, 3072MB, 2819MB available, 4636 GFLOPS peak)
8.1.2016 7:25:04 | | [coproc] NVIDIA library reports 1 GPU
8.1.2016 7:25:04 | | [coproc] No ATI library found.
...
8.1.2016 7:25:05 | | OS: Microsoft Windows 7: Professional x64 Edition, Service Pack 1, (06.01.7601.00)


afterwards:

8.1.2016 7:36:32 | | Starting BOINC client version 7.7.0 for windows_x86_64
8.1.2016 7:36:32 | | This a development version of BOINC and may not function properly
8.1.2016 7:36:32 | | log flags: sched_ops, task, coproc_debug
8.1.2016 7:36:32 | | Libraries: libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8
8.1.2016 7:36:32 | | Data directory: E:\BOINC_datafolder
8.1.2016 7:36:32 | | Running under account ***
8.1.2016 7:36:32 | | [coproc] launching child process at F:\BOINC_76220_x64\boinc.exe
8.1.2016 7:36:32 | | [coproc] relative to directory E:\BOINC_datafolder
8.1.2016 7:36:32 | | [coproc] with data directory "E:\BOINC_datafolder"
8.1.2016 7:36:32 | | CUDA: NVIDIA GPU 0: GeForce GTX 780 (driver version 347.88, CUDA version 7.0, compute capability 3.5, 3072MB, 2818MB available, 4636 GFLOPS peak)
8.1.2016 7:36:32 | | OpenCL: NVIDIA GPU 0: GeForce GTX 780 (driver version 347.88, device version OpenCL 1.1 CUDA, 3072MB, 2818MB available, 4636 GFLOPS peak)
8.1.2016 7:36:32 | | [coproc] NVIDIA library reports 1 GPU
8.1.2016 7:36:32 | | [coproc] No ATI library found.
...
8.1.2016 7:36:33 | | OS: Microsoft Windows 7: Professional x64 Edition, Service Pack 1, (06.01.7601.00)



HOST 2

before:

8.1.2016 8.08.06 | | Starting BOINC client version 7.6.22 for windows_x86_64
8.1.2016 8.08.06 | | log flags: file_xfer, sched_ops, task, coproc_debug
8.1.2016 8.08.06 | | Libraries: libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8
8.1.2016 8.08.06 | | Data directory: D:\BOINC_datafolder
8.1.2016 8.08.06 | | Running under account ***
8.1.2016 8.08.06 | | [coproc] launching child process at D:\BOINC_76220_x64\boinc.exe
8.1.2016 8.08.06 | | [coproc] relative to directory D:\BOINC_datafolder
8.1.2016 8.08.06 | | [coproc] with data directory "D:\BOINC_datafolder"
8.1.2016 8.08.08 | | CUDA: NVIDIA GPU 0: GeForce GTX 960 (driver version 361.43, CUDA version 8.0, compute capability 5.2, 2048MB, 1636MB available, 2644 GFLOPS peak)
8.1.2016 8.08.08 | | OpenCL: NVIDIA GPU 0: GeForce GTX 960 (driver version 361.43, device version OpenCL 1.2 CUDA, 2048MB, 1636MB available, 2644 GFLOPS peak)
8.1.2016 8.08.08 | | [coproc] NVIDIA library reports 1 GPU
8.1.2016 8.08.08 | | [coproc] No ATI library found.
...
8.1.2016 8.08.10 | | OS: Microsoft Windows 10: Professional x64 Edition, (10.00.11082.00)


afterwards:

8.1.2016 8.18.59 | | Starting BOINC client version 7.7.0 for windows_x86_64
8.1.2016 8.18.59 | | This a development version of BOINC and may not function properly
8.1.2016 8.18.59 | | log flags: file_xfer, sched_ops, task, coproc_debug
8.1.2016 8.18.59 | | Libraries: libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8
8.1.2016 8.18.59 | | Data directory: D:\BOINC_datafolder
8.1.2016 8.18.59 | | Running under account ***
8.1.2016 8.18.59 | | [coproc] launching child process at D:\BOINC_76220_x64\boinc.exe
8.1.2016 8.18.59 | | [coproc] relative to directory D:\BOINC_datafolder
8.1.2016 8.18.59 | | [coproc] with data directory "D:\BOINC_datafolder"
8.1.2016 8.19.01 | | CUDA: NVIDIA GPU 0: GeForce GTX 960 (driver version 361.43, CUDA version 8.0, compute capability 5.2, 2048MB, 1636MB available, 2644 GFLOPS peak)
8.1.2016 8.19.01 | | OpenCL: NVIDIA GPU 0: GeForce GTX 960 (driver version 361.43, device version OpenCL 1.2 CUDA, 2048MB, 1636MB available, 2644 GFLOPS peak)
8.1.2016 8.19.01 | | [coproc] NVIDIA library reports 1 GPU
8.1.2016 8.19.01 | | [coproc] No ATI library found.
...
8.1.2016 8.19.03 | | OS: Microsoft Windows 10: Professional x64 Edition, (10.00.11082.00)
ID: 66659 · Report as offensive
Rom Walton
Project developer
Avatar

Send message
Joined: 26 Aug 05
Posts: 164
Message 66673 - Posted: 8 Jan 2016, 16:28:22 UTC

Thanks Claggy, Thanks Richie.

It appears the client software gives preference to CAL/CUDA benchmark values. That seems like a good idea to me, so I'm going to leave that as it is.

I guess my changes will only come into play for those devices that are OpenCL only.

My new GPU is such a device.

Old:
08-Jan-2016 11:25:32 [---] OpenCL: AMD/ATI GPU 0: Tonga (driver version 1912.5 (VM), device version OpenCL 2.0 AMD-APP (1912.5), 4096MB, 4096MB available, 2262 GFLOPS peak)
08-Jan-2016 11:25:32 [---] OpenCL: Intel GPU 0: Intel(R) HD Graphics 4600 (driver version 10.18.15.4256, device version OpenCL 1.2, 1922MB, 1922MB available, 192 GFLOPS peak)
08-Jan-2016 11:25:33 [---] OpenCL CPU: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz (OpenCL driver vendor: Intel(R) Corporation, driver version 5.2.0.10049, device version OpenCL 1.2 (Build 10049))


New:
08-Jan-2016 11:26:30 [---] OpenCL: AMD/ATI GPU 0: AMD Radeon (TM) R9 380 Series (driver version 1912.5 (VM), device version OpenCL 2.0 AMD-APP (1912.5), 4096MB, 4096MB available, 3620 GFLOPS peak)
08-Jan-2016 11:26:30 [---] OpenCL: Intel GPU 0: Intel(R) HD Graphics 4600 (driver version 10.18.15.4256, device version OpenCL 1.2, 1922MB, 1922MB available, 192 GFLOPS peak)
08-Jan-2016 11:26:30 [---] OpenCL CPU: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz (OpenCL driver vendor: Intel(R) Corporation, driver version 5.2.0.10049, device version OpenCL 1.2 (Build 10049))

----- Rom
BOINC Development Team, U.C. Berkeley
My Blog
ID: 66673 · Report as offensive
Jacob Klein
Volunteer tester
Help desk expert

Send message
Joined: 9 Nov 10
Posts: 63
United States
Message 66728 - Posted: 9 Jan 2016, 15:04:05 UTC
Last modified: 9 Jan 2016, 15:07:51 UTC

Here are my results:

Host 1: 2 ASIC mingers, 3 NVIDIA GPUs: No noticeable differences.
Host 2: 1 mobile NVIDIA GPU: Will test soon.

Host 1, before:
1/9/2016 10:01:06 AM |  | Starting BOINC client version 7.6.22 for windows_x86_64
...
1/9/2016 10:01:07 AM |  | Coprocessor specified in cc_config.xml. Type miner_asic (non-GPU); count 2
1/9/2016 10:01:07 AM |  | [coproc] launching child process at C:\Program Files\BOINC\boinc.exe
1/9/2016 10:01:07 AM |  | [coproc] relative to directory E:\BOINC Data
1/9/2016 10:01:07 AM |  | [coproc] with data directory "E:\BOINC Data"
1/9/2016 10:01:08 AM |  | CUDA: NVIDIA GPU 0: GeForce GTX 970 (driver version 361.43, CUDA version 8.0, compute capability 5.2, 4096MB, 3347MB available, 4549 GFLOPS peak)
1/9/2016 10:01:08 AM |  | CUDA: NVIDIA GPU 1: GeForce GTX 660 Ti (driver version 361.43, CUDA version 8.0, compute capability 3.0, 3072MB, 2525MB available, 3021 GFLOPS peak)
1/9/2016 10:01:08 AM |  | CUDA: NVIDIA GPU 2: GeForce GTX 660 Ti (driver version 361.43, CUDA version 8.0, compute capability 3.0, 3072MB, 2525MB available, 2810 GFLOPS peak)
1/9/2016 10:01:08 AM |  | OpenCL: NVIDIA GPU 0: GeForce GTX 970 (driver version 361.43, device version OpenCL 1.2 CUDA, 4096MB, 3347MB available, 4549 GFLOPS peak)
1/9/2016 10:01:08 AM |  | OpenCL: NVIDIA GPU 1: GeForce GTX 660 Ti (driver version 361.43, device version OpenCL 1.2 CUDA, 3072MB, 2525MB available, 3021 GFLOPS peak)
1/9/2016 10:01:08 AM |  | OpenCL: NVIDIA GPU 2: GeForce GTX 660 Ti (driver version 361.43, device version OpenCL 1.2 CUDA, 3072MB, 2525MB available, 2810 GFLOPS peak)
1/9/2016 10:01:08 AM |  | [coproc] NVIDIA library reports 3 GPUs
1/9/2016 10:01:08 AM |  | [coproc] No ATI library found.


Host 1, after:
1/9/2016 10:02:59 AM |  | Starting BOINC client version 7.7.0 for windows_x86_64
1/9/2016 10:02:59 AM |  | This a development version of BOINC and may not function properly
...
1/9/2016 10:02:59 AM |  | Coprocessor specified in cc_config.xml. Type miner_asic (non-GPU); count 2
1/9/2016 10:02:59 AM |  | [coproc] launching child process at C:\Program Files\BOINC\boinc.exe
1/9/2016 10:02:59 AM |  | [coproc] relative to directory E:\BOINC Data
1/9/2016 10:02:59 AM |  | [coproc] with data directory "E:\BOINC Data"
1/9/2016 10:03:00 AM |  | CUDA: NVIDIA GPU 0: GeForce GTX 970 (driver version 361.43, CUDA version 8.0, compute capability 5.2, 4096MB, 3347MB available, 4549 GFLOPS peak)
1/9/2016 10:03:00 AM |  | CUDA: NVIDIA GPU 1: GeForce GTX 660 Ti (driver version 361.43, CUDA version 8.0, compute capability 3.0, 3072MB, 2525MB available, 3021 GFLOPS peak)
1/9/2016 10:03:00 AM |  | CUDA: NVIDIA GPU 2: GeForce GTX 660 Ti (driver version 361.43, CUDA version 8.0, compute capability 3.0, 3072MB, 2525MB available, 2810 GFLOPS peak)
1/9/2016 10:03:00 AM |  | OpenCL: NVIDIA GPU 0: GeForce GTX 970 (driver version 361.43, device version OpenCL 1.2 CUDA, 4096MB, 3347MB available, 4549 GFLOPS peak)
1/9/2016 10:03:00 AM |  | OpenCL: NVIDIA GPU 1: GeForce GTX 660 Ti (driver version 361.43, device version OpenCL 1.2 CUDA, 3072MB, 2525MB available, 3021 GFLOPS peak)
1/9/2016 10:03:00 AM |  | OpenCL: NVIDIA GPU 2: GeForce GTX 660 Ti (driver version 361.43, device version OpenCL 1.2 CUDA, 3072MB, 2525MB available, 2810 GFLOPS peak)
1/9/2016 10:03:00 AM |  | [coproc] NVIDIA library reports 3 GPUs
1/9/2016 10:03:00 AM |  | [coproc] No ATI library found.
ID: 66728 · Report as offensive
Jacob Klein
Volunteer tester
Help desk expert

Send message
Joined: 9 Nov 10
Posts: 63
United States
Message 66730 - Posted: 9 Jan 2016, 16:35:37 UTC

Host 2: 1 mobile NVIDIA GPU: No noticeable differences.

Host 2, before:
1/9/2016 11:01:13 AM |  | Starting BOINC client version 7.6.22 for windows_x86_64
...
1/9/2016 11:01:13 AM |  | [coproc] launching child process at C:\Program Files\BOINC\boinc.exe
1/9/2016 11:01:13 AM |  | [coproc] relative to directory D:\BOINC Data
1/9/2016 11:01:13 AM |  | [coproc] with data directory "D:\BOINC Data"
1/9/2016 11:01:13 AM |  | CUDA: NVIDIA GPU 0: Quadro FX 3800M (driver version 341.92, CUDA version 6.5, compute capability 1.1, 1024MB, 804MB available, 634 GFLOPS peak)
1/9/2016 11:01:13 AM |  | OpenCL: NVIDIA GPU 0: Quadro FX 3800M (driver version 341.92, device version OpenCL 1.0 CUDA, 1024MB, 804MB available, 634 GFLOPS peak)
1/9/2016 11:01:13 AM |  | [coproc] NVIDIA library reports 1 GPU
1/9/2016 11:01:13 AM |  | [coproc] No ATI library found.


Host 2, after:
1/9/2016 11:03:00 AM |  | Starting BOINC client version 7.7.0 for windows_x86_64
1/9/2016 11:03:00 AM |  | This a development version of BOINC and may not function properly
...
1/9/2016 11:03:00 AM |  | [coproc] launching child process at C:\Program Files\BOINC\boinc.exe
1/9/2016 11:03:00 AM |  | [coproc] relative to directory D:\BOINC Data
1/9/2016 11:03:00 AM |  | [coproc] with data directory "D:\BOINC Data"
1/9/2016 11:03:00 AM |  | CUDA: NVIDIA GPU 0: Quadro FX 3800M (driver version 341.92, CUDA version 6.5, compute capability 1.1, 1024MB, 809MB available, 634 GFLOPS peak)
1/9/2016 11:03:00 AM |  | OpenCL: NVIDIA GPU 0: Quadro FX 3800M (driver version 341.92, device version OpenCL 1.0 CUDA, 1024MB, 809MB available, 634 GFLOPS peak)
1/9/2016 11:03:00 AM |  | [coproc] NVIDIA library reports 1 GPU
1/9/2016 11:03:00 AM |  | [coproc] No ATI library found.
ID: 66730 · Report as offensive

Message boards : GPUs : Help Request: GPU Detection and GFLOPs

Copyright © 2021 University of California. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.