Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
littleBu
OpenXG-RAN
Commits
889b4b00
Commit
889b4b00
authored
Jan 28, 2025
by
Laurent THOMAS
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SIMD optimizations for Neon/AVX2/AVX512 in the PDSCH transmit path
parent
ff58b5e1
Changes
7
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1936 additions
and
458 deletions
+1936
-458
openair1/PHY/MODULATION/nr_modulation.c
openair1/PHY/MODULATION/nr_modulation.c
+475
-211
openair1/PHY/MODULATION/nr_modulation.h
openair1/PHY/MODULATION/nr_modulation.h
+1
-2
openair1/PHY/NR_TRANSPORT/nr_dci.c
openair1/PHY/NR_TRANSPORT/nr_dci.c
+2
-0
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+1449
-245
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+2
-0
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+2
-0
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+5
-0
No files found.
openair1/PHY/MODULATION/nr_modulation.c
View file @
889b4b00
This diff is collapsed.
Click to expand it.
openair1/PHY/MODULATION/nr_modulation.h
View file @
889b4b00
...
...
@@ -60,8 +60,7 @@ void nr_layer_mapping(int nbCodes,
uint8_t
n_layers
,
int
layerSz
,
uint32_t
n_symbs
,
c16_t
tx_layers
[
layerSz
],
int
l
);
c16_t
tx_layers
[][
layerSz
]);
/*! \brief Perform NR layer mapping. TS 38.211 V15.4.0 subclause 7.3.1.3
@param[in] ulsch_ue, double Pointer to NR_UE_ULSCH_t struct
...
...
openair1/PHY/NR_TRANSPORT/nr_dci.c
View file @
889b4b00
...
...
@@ -248,9 +248,11 @@ void nr_generate_dci_top(processingData_L1tx_t *msgTx, int slot, int txdataF_off
{
PHY_VARS_gNB
*
gNB
=
msgTx
->
gNB
;
NR_DL_FRAME_PARMS
*
frame_parms
=
&
gNB
->
frame_parms
;
start_meas
(
&
gNB
->
dci_generation_stats
);
for
(
int
i
=
0
;
i
<
msgTx
->
num_ul_pdcch
;
i
++
)
nr_generate_dci
(
msgTx
->
gNB
,
&
msgTx
->
ul_pdcch_pdu
[
i
].
pdcch_pdu
.
pdcch_pdu_rel15
,
txdataF_offset
,
frame_parms
,
slot
);
for
(
int
i
=
0
;
i
<
msgTx
->
num_dl_pdcch
;
i
++
)
nr_generate_dci
(
msgTx
->
gNB
,
&
msgTx
->
pdcch_pdu
[
i
].
pdcch_pdu_rel15
,
txdataF_offset
,
frame_parms
,
slot
);
stop_meas
(
&
gNB
->
dci_generation_stats
);
}
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
889b4b00
This diff is collapsed.
Click to expand it.
openair1/PHY/defs_gNB.h
View file @
889b4b00
...
...
@@ -520,6 +520,8 @@ typedef struct PHY_VARS_gNB_s {
time_stats_t
dlsch_interleaving_stats
;
time_stats_t
dlsch_segmentation_stats
;
time_stats_t
dci_generation_stats
;
time_stats_t
phase_comp_stats
;
time_stats_t
rx_pusch_stats
;
time_stats_t
rx_pusch_init_stats
;
time_stats_t
rx_pusch_symbol_processing_stats
;
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
889b4b00
...
...
@@ -290,6 +290,7 @@ void phy_procedures_gNB_TX(processingData_L1tx_t *msgTx,
//apply the OFDM symbol rotation here
if
(
gNB
->
phase_comp
)
{
start_meas
(
&
gNB
->
phase_comp_stats
);
for
(
int
i
=
0
;
i
<
gNB
->
common_vars
.
num_beams_period
;
++
i
)
{
for
(
int
aa
=
0
;
aa
<
cfg
->
carrier_config
.
num_tx_ant
.
value
;
aa
++
)
{
apply_nr_rotation_TX
(
fp
,
...
...
@@ -304,6 +305,7 @@ void phy_procedures_gNB_TX(processingData_L1tx_t *msgTx,
T_INT
(
aa
),
T_BUFFER
(
&
gNB
->
common_vars
.
txdataF
[
aa
][
txdataF_offset
],
fp
->
samples_per_slot_wCP
*
sizeof
(
int32_t
)));
}
}
stop_meas
(
&
gNB
->
phase_comp_stats
);
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_gNB_TX
+
gNB
->
CC_id
,
0
);
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
889b4b00
...
...
@@ -960,10 +960,12 @@ printf("%d\n", slot);
reset_meas
(
&
gNB
->
dlsch_segmentation_stats
);
reset_meas
(
&
gNB
->
dlsch_modulation_stats
);
reset_meas
(
&
gNB
->
dlsch_encoding_stats
);
reset_meas
(
&
gNB
->
dci_generation_stats
);
reset_meas
(
&
gNB
->
tinput
);
reset_meas
(
&
gNB
->
tprep
);
reset_meas
(
&
gNB
->
tparity
);
reset_meas
(
&
gNB
->
toutput
);
reset_meas
(
&
gNB
->
phase_comp_stats
);
uint32_t
errors_scrambling
[
16
]
=
{
0
};
int
n_errors
[
16
]
=
{
0
};
...
...
@@ -1259,6 +1261,7 @@ printf("%d\n", slot);
UE
->
dl_harq_processes
[
0
][
slot
].
C
,
msgDataTx
->
dlsch
[
0
][
0
].
harq_process
.
pdsch_pdu
.
pdsch_pdu_rel15
.
TBSize
[
0
]
<<
3
);
printDistribution
(
&
gNB
->
phy_proc_tx
,
table_tx
,
"PHY proc tx"
);
printStatIndent2
(
&
gNB
->
dci_generation_stats
,
"DCI encoding time"
);
printStatIndent2
(
&
gNB
->
dlsch_encoding_stats
,
"DLSCH encoding time"
);
printStatIndent3
(
&
gNB
->
dlsch_segmentation_stats
,
"DLSCH segmentation time"
);
printStatIndent3
(
&
gNB
->
tinput
,
"DLSCH LDPC input processing time"
);
...
...
@@ -1271,6 +1274,8 @@ printf("%d\n", slot);
printStatIndent2
(
&
gNB
->
dlsch_scrambling_stats
,
"DLSCH scrambling time"
);
printStatIndent2
(
&
gNB
->
dlsch_resource_mapping_stats
,
"DLSCH Resource Mapping time"
);
printStatIndent2
(
&
gNB
->
dlsch_precoding_stats
,
"DLSCH Layer Precoding time"
);
if
(
gNB
->
phase_comp
)
printStatIndent2
(
&
gNB
->
phase_comp_stats
,
"Phase Compensation"
);
printf
(
"
\n
UE function statistics (per %d us slot)
\n
"
,
1000
>>
*
scc
->
ssbSubcarrierSpacing
);
for
(
int
i
=
RX_PDSCH_STATS
;
i
<=
DLSCH_PROCEDURES_STATS
;
i
++
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment