README.md (2022B)
1 # ogl beamforming 2 3 # Building 4 5 The beamformer requires a compiler with support for `_Float16`. 6 This means that GCC 12.1 or Clang 15 are the mininum supported 7 compiler versions. Testing on compilers this old has been limited 8 so you may run into bugs which do not occur with newer compilers. 9 It is highly recommended that you use a more modern compiler (GCC 10 15+ or Clang 21+). Note that MSVC is not supported. 11 12 Bootstrap the build tool once and it will rebuild itself as 13 needed: 14 ```sh 15 cc -march=native -O3 build.c -o build 16 ``` 17 or: 18 ```bat 19 md out & cl -nologo -std:c11 -O2 -Fo:out\ build.c 20 ``` 21 22 Then run the build tool: 23 ```sh 24 ./build 25 ``` 26 27 ## Debug Builds 28 Pass the build tool the `--debug` flag to get a build suitable for 29 development/debugging: 30 ``` 31 ./build --debug 32 ``` 33 34 Debug builds enable dynamic reloading of almost the entire program 35 and you can make changes to most code and recompile without 36 exiting the application. 37 38 # Troubleshooting 39 40 ## Missing Vulkan Support 41 42 If the beamformer fails to start with a message like: 43 ```sh 44 ./ogl 45 [vulkan] selecting device: llvmpipe (LLVM 15.0.7, 256 bits) 46 [vulkan] fatal error: missing required device extensions: 47 [vulkan] VK_KHR_external_memory 48 [vulkan] VK_KHR_external_memory_win32 49 ``` 50 you may need to use the legacy branch: 51 52 ```sh 53 git checkout legacy 54 ./build 55 ``` 56 57 The `legacy` branch will be supported until the need for those 58 extensions is removed but will not see feature or performance 59 updates. 60 61 ## `llvmpipe` 62 63 If the beamformer starts with the `llvmpipe` device it means that 64 your system is missing vulkan libraries. On Ubuntu this can be 65 resolved with: 66 67 ```sh 68 sudo apt install libvulkan1 69 ``` 70 71 # Publication 72 73 This project has a paper covering some of the design and 74 optimization up until commit 295b9c4. It is currently available as 75 a preprint: [arXiv:2512.11086]. If you wish to refer to this 76 project in any published work you can cite that article. The link 77 will be updated once a full publication is available. 78 79 [arXiv:2512.11086]: https://arxiv.org/abs/2512.11086