I’m attempting to build and install MatX onto my Linux machine.
I’m following the instructions found here.
Except when I run the make -j
command, I get the following trace:
/home/<me>/Documents/MatX/include/matx/kernels/channelize_poly.cuh(349): error: initializer not allowed for __shared__ variable
/home/<me>/Documents/MatX/include/matx/kernels/channelize_poly.cuh(349): error: initializer not allowed for __shared__ variable
/home/<me>/Documents/MatX/include/matx/kernels/channelize_poly.cuh(349): error: initializer not allowed for __shared__ variable
/home/<me>/Documents/MatX/include/matx/kernels/channelize_poly.cuh(349): error: initializer not allowed for __shared__ variable
/home/<me>/Documents/MatX/include/matx/kernels/channelize_poly.cuh(349): error: initializer not allowed for __shared__ variable
/home/<me>/Documents/MatX/include/matx/kernels/channelize_poly.cuh(64): error: initializer not allowed for __shared__ variable
Which is rather odd, since if you look at the offending lines in channelize_poly.cuh
(see the source here), you see:
// Lines 63 & 64
const int SMEM_MAX_FILTER_TAPS = 128;
__shared__ filter_t smem_filter[SMEM_MAX_FILTER_TAPS];
// Lines 348 & 349
// Pre-compute the DFT complex exponentials and store in shared memory
__shared__ output_t smem_eij[NUM_CHAN][NUM_CHAN];
I.e. there is no supposed initialization of the shared variables.
The software I’m using:
- CUDA 11.6
- G++ 9.4.0
- Ubuntu 20.04
1
So this is a known issue now. I’ve posted an issue on GH for this; see here. A fix looks to be on it’s way.