Fosphor » History » Version 50
horiz0n, 02/19/2016 10:50 PM
1 | 1 | sylvain | = gr-fosphor |
---|---|---|---|
2 | 1 | sylvain | |
3 | 1 | sylvain | GNU Radio block for RTSA-like spectrum visualization using GPU |
4 | 1 | sylvain | |
5 | 1 | sylvain | http://git.osmocom.org/gr-fosphor/ |
6 | 2 | sylvain | |
7 | 21 | horiz0n | == Building |
8 | 21 | horiz0n | |
9 | 40 | sylvain | Warning: Mixed prefix install is not supported. You need to install gr-fosphor in the same prefix as your GNU Radio install. If you used build-gnuradio this will be /usr/local and this is what's used in the instructions below. If you use a packaged version of GNU Radio, it's most likely /usr and the best way is then to make a package for gr-fosphor for your distribution. |
10 | 40 | sylvain | |
11 | 21 | horiz0n | === GLFW3 |
12 | 21 | horiz0n | |
13 | 21 | horiz0n | Install dependencies |
14 | 21 | horiz0n | |
15 | 21 | horiz0n | {{{ |
16 | 24 | horiz0n | sudo apt-get install cmake xorg-dev libglu1-mesa-dev |
17 | 24 | horiz0n | }}} |
18 | 24 | horiz0n | |
19 | 21 | horiz0n | Build GLFW |
20 | 21 | horiz0n | |
21 | 21 | horiz0n | {{{ |
22 | 21 | horiz0n | git clone https://github.com/glfw/glfw |
23 | 21 | horiz0n | cd glfw |
24 | 21 | horiz0n | mkdir build |
25 | 21 | horiz0n | cd build |
26 | 21 | horiz0n | cmake ../ -DBUILD_SHARED_LIBS=true |
27 | 21 | horiz0n | make |
28 | 1 | sylvain | sudo make install |
29 | 1 | sylvain | sudo ldconfig |
30 | 21 | horiz0n | }}} |
31 | 1 | sylvain | |
32 | 1 | sylvain | === gr-fosphor |
33 | 1 | sylvain | |
34 | 25 | horiz0n | Install dependencies |
35 | 25 | horiz0n | |
36 | 26 | horiz0n | ==== For NVidia |
37 | 25 | horiz0n | |
38 | 25 | horiz0n | * install [http://www.nvidia.com/object/unix.html NVidia drivers] |
39 | 1 | sylvain | |
40 | 25 | horiz0n | {{{ |
41 | 25 | horiz0n | sudo apt-get install nvidia-opencl-dev opencl-headers |
42 | 25 | horiz0n | }}} |
43 | 25 | horiz0n | |
44 | 26 | horiz0n | ==== For AMD |
45 | 25 | horiz0n | |
46 | 50 | horiz0n | * install [http://support.amd.com/en-us/download AMD drivers] (13.4, 13.11 beta6, 13.12 and 14.10 drivers are known to work on linux) |
47 | 25 | horiz0n | * install [http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-app-sdk/ AMD APP SDK] |
48 | 25 | horiz0n | |
49 | 33 | horiz0n | ==== For Intel |
50 | 33 | horiz0n | |
51 | 47 | horiz0n | * No OpenCL support on Linux for HD and Iris Graphics (Wake up, Intel!). |
52 | 47 | horiz0n | * Fosphor has been confirmed to work with Iris graphics on OSX. |
53 | 33 | horiz0n | |
54 | 25 | horiz0n | Build gr-fosphor |
55 | 25 | horiz0n | |
56 | 25 | horiz0n | {{{ |
57 | 21 | horiz0n | git clone git://git.osmocom.org/gr-fosphor |
58 | 21 | horiz0n | cd gr-fosphor |
59 | 21 | horiz0n | mkdir build |
60 | 21 | horiz0n | cd build |
61 | 37 | sylvain | cmake .. |
62 | 21 | horiz0n | make |
63 | 21 | horiz0n | sudo make install |
64 | 21 | horiz0n | sudo ldconfig |
65 | 21 | horiz0n | }}} |
66 | 21 | horiz0n | |
67 | 1 | sylvain | Build benchmark tool |
68 | 1 | sylvain | |
69 | 21 | horiz0n | {{{ |
70 | 21 | horiz0n | cd gr-fosphor/lib/fosphor |
71 | 21 | horiz0n | make |
72 | 21 | horiz0n | }}} |
73 | 25 | horiz0n | |
74 | 25 | horiz0n | Fosphor is known to build successfully on Linux, OSX and Windows. |
75 | 21 | horiz0n | |
76 | 46 | sylvain | ==== Known issues |
77 | 46 | sylvain | |
78 | 1 | sylvain | * Some version of ubuntu (like 13.10) have screwed up OpenCL dev files setup and it might be required to manually specify a path to the actual OpenCL library during the cmake step ( like {{{-DOPENCL_LIBRARY=/usr/lib/nvidia-304/libOpenCL.so}}} ) |
79 | 47 | horiz0n | * When running python flowgraphs on machines with AMD graphics (fglrx driver) and UHD enabled in gr-osmosdr you may experience the following error {{{[!] CL Error (-1001, fosphor/cl.c:268): Unable to fetch platform IDs}}}. This is due to TLS sections in both, AMD OpenCL library and UHD library interfering with each other. A workaround is available through preloading the AMD OpenCL library {{{LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libamdocl64.so osmocom_fft -F}}} (path may vary). C++ flowgraphs are not affected. |
80 | 46 | sylvain | |
81 | 2 | sylvain | == Screenshots |
82 | 2 | sylvain | |
83 | 15 | sylvain | === Short video examples |
84 | 15 | sylvain | |
85 | 15 | sylvain | http://www.youtube.com/watch?v=mjD-l3GAghU |
86 | 15 | sylvain | |
87 | 15 | sylvain | {{{ |
88 | 15 | sylvain | #!html |
89 | 15 | sylvain | <iframe width="960" height="720" src="http://www.youtube.com/embed/mjD-l3GAghU" frameborder="0" allowfullscreen></iframe> |
90 | 15 | sylvain | }}} |
91 | 15 | sylvain | |
92 | 15 | sylvain | |
93 | 2 | sylvain | === osmocom_fft in fosphor mode |
94 | 2 | sylvain | [[Image(GrOsmoSDR:fosphor.png)]] |
95 | 2 | sylvain | |
96 | 2 | sylvain | [[Image(GrOsmoSDR:fosphor2.png)]] |
97 | 3 | horiz0n | |
98 | 3 | horiz0n | == Bandwidth figures |
99 | 3 | horiz0n | |
100 | 3 | horiz0n | There's a benchmark program available which allows to estimate the maximal bandwidth that can be processed with a specific GPU. |
101 | 3 | horiz0n | |
102 | 3 | horiz0n | To build it: |
103 | 3 | horiz0n | |
104 | 3 | horiz0n | {{{ |
105 | 3 | horiz0n | cd gr-fosphor/lib/fosphor |
106 | 3 | horiz0n | make |
107 | 3 | horiz0n | }}} |
108 | 3 | horiz0n | |
109 | 3 | horiz0n | Then execute it by providing a prerecorded complex float file (a couple of 100MB should be fine) in gnuradio format. |
110 | 3 | horiz0n | |
111 | 3 | horiz0n | {{{ |
112 | 3 | horiz0n | ./main some.cfile |
113 | 3 | horiz0n | }}} |
114 | 3 | horiz0n | |
115 | 14 | horiz0n | Try to leave the window to its default size if possible and watch out for the Msps numbers printed out to the console. |
116 | 14 | horiz0n | |
117 | 14 | horiz0n | Submit your numbers & help us to create a GPU survey. We are especially interested in the top end and mobile graphics figures. |
118 | 3 | horiz0n | |
119 | 8 | sylvain | ||'''CPU'''||'''GPU'''||'''Msps'''|| |
120 | 31 | horiz0n | ||?||AMD R290(X)||WANTED|| |
121 | 8 | sylvain | ||?||NVidia Titan||WANTED|| |
122 | 42 | horiz0n | ||i7-4770K 3.5 GHz||NVidia !GeForce GTX 760||~228|| |
123 | 1 | sylvain | ||?||AMD Radeon HD 7970 (Tahiti)||~220|| |
124 | 41 | horiz0n | ||i5-3570K 3.4 GHz||AMD Radeon HD 7870 (Tahiti)||~220|| |
125 | 40 | sylvain | ||i7-3770K 3.4 GHz||Nvidia GTX 660||~202|| |
126 | 40 | sylvain | ||i7-3770K 3.4 Ghz||Nvidia GTX 760||~191|| |
127 | 39 | ttsou | ||i7-4770K 3.5 GHz||Nvidia GTX 650 Ti Boost||~188|| |
128 | 49 | sylvain | ||i5-2500 3.3 GHz||NVidia GTX 460 SE||~129|| |
129 | 28 | horiz0n | ||i5-3570K 3.4GHz||AMD Radeon HD 7870 (Pitcairn)||~112|| |
130 | 29 | horiz0n | ||i5-2500 3.3GHz||NVidia GTX 550 Ti||~110|| |
131 | 28 | horiz0n | ||i5-2500k 3.8GHz||AMD Radeon HD 6850||~100|| |
132 | 1 | sylvain | ||?||NVidia GTX 550 Ti||~97|| |
133 | 28 | horiz0n | ||QC Xeon 2 GHz||Nvidia !GeForce 560 Ti||~73|| |
134 | 42 | horiz0n | ||C2D 2.66 GHz||NVidia !GeForce GT 640 (GK107)||~67|| |
135 | 44 | sylvain | ||i5 2.4 GHz||Intel Iris Pro 5100||~65|| |
136 | 48 | sylvain | ||i7-3610QM||NVidia !GeForce GT 640M LE||~63|| |
137 | 42 | horiz0n | ||i7-950 3.06 GHz||NVidia GT9800||~61|| |
138 | 42 | horiz0n | ||i5-2500K 4.2 GHz||AMD Radeon HD 6570||~58|| |
139 | 30 | horiz0n | ||C2D 3.00GHz||NVidia !GeForce 9800 GT||~47|| |
140 | 43 | sylvain | ||i5-2520M 2.5 GHz||NVidia GF119M||~46|| |
141 | 28 | horiz0n | ||C2D 2.4GHz||NVidia 9600M GT||~31|| |
142 | 28 | horiz0n | ||?||NVidia GT330M||~22|| |
143 | 28 | horiz0n | ||?||NVidia 8600GT||~15|| |
144 | 28 | horiz0n | ||C2D 2.2GHz||NVidia NVS 140M||~14|| |
145 | 1 | sylvain | ||AMD E350 Fusion APU||AMD Radeon 6310||~12|| |
146 | 37 | sylvain | ||C2Q Q9650 3.00GHz||!GeForce 9300 GE||~11|| |
147 | 28 | horiz0n | ||Atom 330||NVidia ION||~10|| |