Mentor Meeting
GSoC 2025 · GNU Radio 4.0 Block-Set Expansion
Week-3 check-in (mentor — Josh Morman)
Date | 29 May 2025, 17:00 IST |
Duration | 30 min |
Participants | Josh Morman · Krish Gupta |
1 · Progress update
- Math block
- 75% of MATH headers were ported and are now compiling/building under GR-4 (
AddConst
,SubtractConst
,MultiplyConst
,DivideConst
,Add
,Subtract
,Multiply
,Divide
,Max
,Min
,And
,Or
,Xor
,Negate
,Not
,Abs
,Integrate
,Argmax
. ). Conjugate
&Log
raised type/std::simd
edge cases ⇒ plan is to split out a dedicatedConjugate.hpp
that wraps both the scalar and SIMD/complex specialisations.- Unit tests (
qa_math.cpp
) extended to cover zero-input, NaN/Inf, and extreme-range values.
- 75% of MATH headers were ported and are now compiling/building under GR-4 (
- Structure goal
- Keep one umbrella header (
math.hpp
) where practical; spin off a separate file only when template specialisation gets messy (e.g.,Conjugate
).
- Keep one umbrella header (
2 · OOT module bootstrap
We clarified how the gr-incubator
out-of-tree module will be wired into the GNURadio workspace:
# CMakeLists.txt (top of gr-incubator)
cmake_minimum_required(VERSION 3.20)
project(gr4_incubator LANGUAGES CXX)
# 1. Prevent GR4 from building its own tests/benchmarks
set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
set(GR4_ENABLE_BENCHMARKS OFF CACHE BOOL "" FORCE)
# 2. Bring GR4 headers in, but don't compile its sources
add_subdirectory(gnuradio4 EXCLUDE_FROM_ALL)
# 3. Header-only interface target for includes
add_library(gr4_headers INTERFACE)
target_include_directories(gr4_headers INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/gnuradio4/include
${CMAKE_CURRENT_SOURCE_DIR}/gnuradio4 # for <gnuradio4/...>
)
# 4. Your actual blocks live in /lib
add_subdirectory(lib)
Use `target_link_libraries(my_block PRIVATE gr4_headers)` inside `lib/CMakeLists.txt`.
Josh will adjust the skeleton so this drops in cleanly.
3 · Naming & build notes
- Block names stay PascalCase (
Conjugate
,Log10
). - File names stay underscore-free –
Conjugate.hpp
, notconjugate.hpp
. - Ralph’s multi-header-in-one-file style is fine unless readability suffers;
Conjugate.hpp
will be the first stand-alone exception. - Add SIMD guards to keep older toolchains happy:
#if defined(__cpp_lib_simd) … #endif
.
4 · Action items
Owner | Task |
---|---|
Krish | • Finish SIMD kernel for Conjugate block. • Extend edge-case tests for Log. • Draft “Porting 101” doc for newcomers. |
Josh | • Commit initial gr-incubator CMake scaffold. • Ping Ralph for doc-progress confirmation. |
Next sync: early next week, once the CMake skeleton lands and SIMD builds succeed on GCC 14 & Clang 17.