ledatelescope / bifrost

A stream processing framework for high-throughput applications.
BSD 3-Clause "New" or "Revised" License
64 stars 29 forks source link

Merge of telegraphic/main and ledatelescope/autoconf #153

Closed telegraphic closed 2 years ago

telegraphic commented 2 years ago

Hi Jayce,

I just merged the the autoconf branch with my repo, which was moderately successful (most unit tests still pass, and the ones that don't didn't before! I'm particularly worried by the non-passing FFT tests).

One thing that needs sorting is that I was using user.mk to define whether or not to build certain codes. That is, in src/Makefile I have:

ifndef NOUDPSOCKET
  LIBBIFROST_OBJS += \
    address.o \
    udp_socket.o \
  udp_capture.o \
  udp_transmit.o
endif

ifdef BUILDDP4A
  LIBBIFROST_OBJS += \
  xcorr_lite.o\
  beanfarmer.o
endif

So that these codes aren't built unless the user enables them (at Molonglo the Linux kernel is old on some machines, so didn't support some of the recvmsg UDP socket code!).

I couldn't get ./configure; make to run unless I manually exported $GPU_ARCH, which was previously set in user.mk. What's the best way around this?

By the by, I feel that the DP4A-specific codes would be better as plugins, and out of the core bifrost repo. Probably the romein kernels too, and perhaps the FDMT?

jaycedowell commented 2 years ago

With regards to $GPU_ARCHS what should happen is that configure has a --with-gpu-archs=... option. It defaults to "auto" which tells it to try to compile/run a simple CUDA program to figure out which archs. the GPUs it find support. If that fails configure fails and you would have to manually set --with-gpu-archs to whatever list you need.

jaycedowell commented 2 years ago

For the DP4A stuff we could toggle that on/off with the $GPU_ARCHS value. If they are all >=61 go for it, otherwise don't.

jaycedowell commented 2 years ago

For recvmsg that's an interesting one. It looks like that introduced to the Linux kernel way back in 2.6.33 but we can test for that in configure. I'm already doing something similar with sendmmsg since that isn't support in OSX. The interesting part would be whether or not it is worth supporting a networking-less Bifrost. I could see it working for stand alone pipeline style things.

jaycedowell commented 2 years ago

I'm closing this for now but @league and I need to take a closer look at these changes to see what is still valid now that v0.10.0 has been released.