Skip to content

Commit

Permalink
Send baseband to a receiver node instead of writing files directly (k…
Browse files Browse the repository at this point in the history
…otekan#927)

This change tears out the logic that existed to write baseband into files (i.e., over NFS) from the basebandReadout stage, and makes it truly just a "readout": when a baseband request arrives, the stage now copies out the requested data into an output Kotekan buffer, with event details recorded in the output frame metadata. The idea is that the output buffer will simply be forwarded to a baseband receiver node using a `bufferSend` stage.  Also adds multi-frequency support.

Co-authored-by: chitrang <[email protected]>
Co-authored-by: Andre Renard <[email protected]>
  • Loading branch information
3 people authored Nov 30, 2021
1 parent 84aa90c commit 11fead5
Show file tree
Hide file tree
Showing 46 changed files with 3,146 additions and 622 deletions.
1 change: 0 additions & 1 deletion config/chime_keep_gpu_warm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -636,7 +636,6 @@ baseband:
max_dump_samples: 200000
num_frames_buffer: baseband_buffer_depth - 10
base_dir: /mnt/frb-baseband/
write_throttle: 0
baseband0:
kotekan_stage: basebandReadout
in_buf: network_buffer_0
Expand Down
56 changes: 51 additions & 5 deletions config/chime_science_run_gpu.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ num_local_freq: 1
num_data_sets: 1
samples_per_data_set: 49152
buffer_depth: 12
baseband_buffer_depth: 282 # 282 = ~34 seconds after accounting for active frames
baseband_buffer_depth: 272 # 272 = ~33 seconds after accounting for active frames
vbuffer_depth: 32
num_links: 4
timesamples_per_packet: 2
Expand Down Expand Up @@ -217,7 +217,6 @@ updatable_config:
1023, 1058, 1141, 1166, 1225, 1280, 1281, 1285, 1311, 1314, 1343,
1380, 1381, 1479, 1521, 1523, 1543, 1642, 1684, 1687, 1738, 1792,
1794, 1910, 1912, 1943, 1945, 1950, 1982, 1984, 1987, 2032, 2034]

start_time: 1535048997.
update_id: "initial_flags"
rfi_zeroing_toggle:
Expand Down Expand Up @@ -293,6 +292,11 @@ hfb_pool:
kotekan_metadata_pool: HFBMetadata
num_metadata_objects: 30 * buffer_depth

# Baseband metadata pool
baseband_pool:
kotekan_metadata_pool: BasebandMetadata
num_metadata_objects: 30 * buffer_depth * 96

# Input data buffers from the DPDK stage
network_buffers:
num_frames: baseband_buffer_depth
Expand Down Expand Up @@ -653,23 +657,65 @@ zero_samples:
out_buf: network_buffer_3

# Baseband capture and dump system
baseband_output_buffers:
num_frames: 11 * 96 # baseband_buffer_depth
frame_size: samples_per_data_set * num_elements * num_local_freq * num_data_sets / 96
metadata_pool: baseband_pool
baseband_output_buffer_0:
kotekan_buffer: standard
baseband_output_buffer_1:
kotekan_buffer: standard
baseband_output_buffer_2:
kotekan_buffer: standard
baseband_output_buffer_3:
kotekan_buffer: standard
baseband_output_buffer_merged:
kotekan_buffer: standard
num_frames: 12

baseband:
max_dump_samples: 200000
max_dump_samples: 300000 # 768ms
num_frames_buffer: baseband_buffer_depth - 10
base_dir: /mnt/frb-baseband/
write_throttle: 0
baseband0:
kotekan_stage: basebandReadout
in_buf: network_buffer_0
out_buf: baseband_output_buffer_0
baseband1:
kotekan_stage: basebandReadout
in_buf: network_buffer_1
out_buf: baseband_output_buffer_1
baseband2:
kotekan_stage: basebandReadout
in_buf: network_buffer_2
out_buf: baseband_output_buffer_2
baseband3:
kotekan_stage: basebandReadout
in_buf: network_buffer_3
out_buf: baseband_output_buffer_3

baseband_merge:
kotekan_stage: bufferMerge
timeout: 0.1
in_bufs:
- baseband_output_buffer_0
- baseband_output_buffer_1
- baseband_output_buffer_2
- baseband_output_buffer_3
out_buf: baseband_output_buffer_merged

# Transmit baseband data to the baseband receiver
baseband_send:
server_ip: 10.6.213.19 # cfDn9
reconnect_time: 60
send_timeout: 600 # 10 minutes
log_level: warn
# Keep data in memory even if the receiver node is down
# Baseband readout handles back pressure management
drop_frames: false
baseband_send_0:
kotekan_stage: bufferSend
server_port: 11027
buf: baseband_output_buffer_merged

# Buffer bad input updates
# 1) Reorder list
Expand Down
55 changes: 51 additions & 4 deletions config/chime_science_run_gpu_no_output.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ num_local_freq: 1
num_data_sets: 1
samples_per_data_set: 49152
buffer_depth: 12
baseband_buffer_depth: 282 # 282 = ~34 seconds after accounting for active frames
baseband_buffer_depth: 272 # 272 = ~33 seconds after accounting for active frames
vbuffer_depth: 32
num_links: 4
timesamples_per_packet: 2
Expand Down Expand Up @@ -292,6 +292,11 @@ hfb_pool:
kotekan_metadata_pool: HFBMetadata
num_metadata_objects: 30 * buffer_depth

# Baseband metadata pool
baseband_pool:
kotekan_metadata_pool: BasebandMetadata
num_metadata_objects: 30 * buffer_depth * 96

# Input data buffers from the DPDK stage
network_buffers:
num_frames: baseband_buffer_depth
Expand Down Expand Up @@ -652,23 +657,65 @@ zero_samples:
out_buf: network_buffer_3

# Baseband capture and dump system
baseband_output_buffers:
num_frames: 11 * 96 # baseband_buffer_depth
frame_size: samples_per_data_set * num_elements * num_local_freq * num_data_sets / 96
metadata_pool: baseband_pool
baseband_output_buffer_0:
kotekan_buffer: standard
baseband_output_buffer_1:
kotekan_buffer: standard
baseband_output_buffer_2:
kotekan_buffer: standard
baseband_output_buffer_3:
kotekan_buffer: standard
baseband_output_buffer_merged:
kotekan_buffer: standard
num_frames: 12

baseband:
max_dump_samples: 200000
max_dump_samples: 300000 # 768ms
num_frames_buffer: baseband_buffer_depth - 10
base_dir: /mnt/frb-baseband/
write_throttle: 0
baseband0:
kotekan_stage: basebandReadout
in_buf: network_buffer_0
out_buf: baseband_output_buffer_0
baseband1:
kotekan_stage: basebandReadout
in_buf: network_buffer_1
out_buf: baseband_output_buffer_1
baseband2:
kotekan_stage: basebandReadout
in_buf: network_buffer_2
out_buf: baseband_output_buffer_2
baseband3:
kotekan_stage: basebandReadout
in_buf: network_buffer_3
out_buf: baseband_output_buffer_3

baseband_merge:
kotekan_stage: bufferMerge
timeout: 0.1
in_bufs:
- baseband_output_buffer_0
- baseband_output_buffer_1
- baseband_output_buffer_2
- baseband_output_buffer_3
out_buf: baseband_output_buffer_merged

# Transmit baseband data to the baseband receiver
baseband_send:
server_ip: 10.6.213.19 # cfDn9
reconnect_time: 60
send_timeout: 600 # 10 minutes
log_level: warn
# Keep data in memory even if the receiver node is down
# Baseband readout handles back pressure management
drop_frames: false
baseband_send_0:
#kotekan_stage: bufferSend
server_port: 11027
buf: baseband_output_buffer_merged

# Buffer bad input updates
# 1) Reorder list
Expand Down
67 changes: 67 additions & 0 deletions config/chime_science_run_recv_baseband.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#########################################
#
# chime_science_run_recv_baseband.yaml
#
# CHIME baseband receiver node configuration.
#
# Receives baseband dump frames from each GPU node and writes them in a raw
# output file.
#
# Author: Davor Cubranic
#
##########################################
---
type: config
log_level: info
num_elements: 2048
num_local_freq: 1
num_data_sets: 1
samples_per_data_set: 512
buffer_depth: 64
cpu_affinity: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

# Constants
sizeof_float: 4
sizeof_int: 4
sizeof_short: 2

dataset_manager:
use_dataset_broker: False
ds_broker_host: "10.1.50.11" # recv1
ds_broker_port: 12050

telescope:
name: CHIMETelescope
require_gps: false

# Baseband Metadata Pool
baseband_metadata_pool:
kotekan_metadata_pool: BasebandMetadata
num_metadata_objects: 65536

basdband_bufs:
metadata_pool: baseband_metadata_pool
frame_size: num_elements * samples_per_data_set
num_frames: 180 * 96
baseband_recv_buffer_0:
kotekan_buffer: standard

# Kotekan stages
baseband_recv:
drop_frames: false
connection_timeout: 600 # 10 Minutes
recv_0:
kotekan_stage: bufferRecv
buf: baseband_recv_buffer_0
listen_port: 11027

write_baseband:
root_path: /data/baseband_raw/
dump_timeout: 1200 # 20 Minutes
write_0:
kotekan_stage: BasebandWriter
in_buf: baseband_recv_buffer_0

buffer_status:
kotekan_stage: bufferStatus
print_status: false
60 changes: 60 additions & 0 deletions config/pathfinder_recv_baseband.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
##########################################
#
# pathfinder_recv_baseband.yaml
#
# Pathfinder baseband receiver node configuration.
#
# Receives baseband dump frames from the PF Kotekan node and writes them to a
# raw output file.
#
# Author: Davor Cubranic and Calvin Leung
#
##########################################
---
type: config
log_level: info
num_elements: 256
num_local_freq: 8
samples_per_data_set: 65536
buffer_depth: 64
cpu_affinity: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

# Constants
sizeof_float: 4
sizeof_int: 4
sizeof_short: 2

dataset_manager:
use_dataset_broker: False

telescope:
name: ICETelescope
require_gps: false

# Baseband Metadata Pool
baseband_metadata_pool:
kotekan_metadata_pool: BasebandMetadata
num_metadata_objects: 65536

baseband_recv_buffer:
kotekan_buffer: standard
metadata_pool: baseband_metadata_pool
frame_size: num_elements * samples_per_data_set / 96
num_frames: 282 * 96 # max achievable baseband buffer on GPU nodes

# Kotekan stages
baseband_recv:
kotekan_stage: bufferRecv
buf: baseband_recv_buffer
listen_port: 11028

# Write raw baseband data
write_baseband:
root_path: /data/pf_baseband_raw/

kotekan_stage: BasebandWriter
in_buf: baseband_recv_buffer

buffer_status:
kotekan_stage: bufferStatus
print_status: false
Loading

0 comments on commit 11fead5

Please sign in to comment.