ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | README | LICENSE

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