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
lizhongxiao
OpenXG-RAN
Commits
c4caf487
Commit
c4caf487
authored
Jan 17, 2024
by
mir
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
TASK_MANAGER_RU removed
parent
5fcaf29f
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
26 additions
and
91 deletions
+26
-91
common/utils/thread_pool/task_manager.h
common/utils/thread_pool/task_manager.h
+0
-1
executables/nr-ru.c
executables/nr-ru.c
+4
-6
openair1/PHY/defs_RU.h
openair1/PHY/defs_RU.h
+0
-8
openair1/SCHED_NR/nr_ru_procedures.c
openair1/SCHED_NR/nr_ru_procedures.c
+20
-74
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+2
-2
No files found.
common/utils/thread_pool/task_manager.h
View file @
c4caf487
#ifndef TASK_MANAGER_WORKING_STEALING_H
#define TASK_MANAGER_WORKING_STEALING_H
#define TASK_MANAGER_RU
#define TASK_MANAGER_UE_DECODING
#define TASK_MANAGER_SIM
...
...
executables/nr-ru.c
View file @
c4caf487
...
...
@@ -1903,17 +1903,15 @@ void init_NR_RU(configmodule_interface_t *cfg, char *rf_config_file)
int
threadCnt
=
ru
->
num_tpcores
;
if
(
threadCnt
<
2
)
LOG_E
(
PHY
,
"Number of threads for gNB should be more than 1. Allocated only %d
\n
"
,
threadCnt
);
else
LOG_I
(
PHY
,
"RU Thread pool size %d
\n
"
,
threadCnt
);
char
pool
[
80
]
;
char
pool
[
512
]
=
{
0
}
;
int
s_offset
=
sprintf
(
pool
,
"%d"
,
ru
->
tpcores
[
0
]);
for
(
int
icpu
=
1
;
icpu
<
threadCnt
;
icpu
++
)
{
s_offset
+=
sprintf
(
pool
+
s_offset
,
",%d"
,
ru
->
tpcores
[
icpu
]);
}
LOG_I
(
PHY
,
"RU thread-pool core string %s
\n
"
,
pool
);
#ifdef TASK_MANAGER_RU
init_task_manager
(
&
ru
->
man
,
ru
->
num_tpcores
);
#endif
ru
->
threadPool
=
(
tpool_t
*
)
malloc
(
sizeof
(
tpool_t
));
initTpool
(
pool
,
ru
->
threadPool
,
cpumeas
(
CPUMEAS_GETSTATE
));
int
const
num_threads
=
parse_num_threads
(
pool
);
init_task_manager
(
&
ru
->
man
,
num_threads
);
// FEP RX result FIFO
ru
->
respfeprx
=
(
notifiedFIFO_t
*
)
malloc
(
sizeof
(
notifiedFIFO_t
));
initNotifiedFIFO
(
ru
->
respfeprx
);
...
...
openair1/PHY/defs_RU.h
View file @
c4caf487
...
...
@@ -178,9 +178,7 @@ typedef struct {
int
startSymbol
;
int
endSymbol
;
int
slot
;
#ifdef TASK_MANAGER_RU
task_ans_t
*
ans
;
#endif
}
feprx_cmd_t
;
typedef
struct
{
...
...
@@ -189,9 +187,7 @@ typedef struct {
int
slot
;
int
startSymbol
;
int
numSymbols
;
#ifdef TASK_MANAGER_RU
task_ans_t
*
ans
;
#endif
}
feptx_cmd_t
;
typedef
struct
{
...
...
@@ -434,11 +430,7 @@ typedef enum {
typedef
struct
RU_t_s
{
#ifdef TASK_MANAGER_RU
task_manager_t
man
;
#endif
/// ThreadPool for RU
tpool_t
*
threadPool
;
/// index of this ru
uint32_t
idx
;
/// pointer to first RU
...
...
openair1/SCHED_NR/nr_ru_procedures.c
View file @
c4caf487
...
...
@@ -322,83 +322,55 @@ void nr_feptx(void *arg) {
////////////FEPTX////////////
nr_feptx0
(
ru
,
slot
,
startSymbol
,
numSymbols
,
aa
);
#ifdef TASK_MANAGER_RU
// Task completed in //
completed_task_ans
(
feptx
->
ans
);
#endif
}
// RU FEP TX using thread-pool
void
nr_feptx_tp
(
RU_t
*
ru
,
int
frame_tx
,
int
slot
)
{
nfapi_nr_config_request_scf_t
*
cfg
=
&
ru
->
gNB_list
[
0
]
->
gNB_config
;
int
nbfeptx
=
0
;
if
(
nr_slot_select
(
cfg
,
frame_tx
,
slot
)
==
NR_UPLINK_SLOT
)
return
;
// for (int aa=0; aa<ru->nb_tx; aa++) memset(ru->common.txdataF[aa],0,ru->nr_frame_parms->samples_per_slot_wCP*sizeof(int32_t));
if
(
ru
->
idx
==
0
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM
,
1
);
start_meas
(
&
ru
->
ofdm_total_stats
);
#ifdef TASK_MANAGER_RU
size_t
const
sz
=
ru
->
nb_tx
+
(
ru
->
half_slot_parallelization
>
0
)
*
ru
->
nb_tx
;
feptx_cmd_t
arr
[
sz
];
task_ans_t
ans
[
sz
];
memset
(
ans
,
0
,
sz
*
sizeof
(
task_ans_t
));
#endif
for
(
int
aid
=
0
;
aid
<
ru
->
nb_tx
;
aid
++
)
{
#ifdef TASK_MANAGER_RU
int
nbfeptx
=
0
;
for
(
int
aid
=
0
;
aid
<
ru
->
nb_tx
;
aid
++
)
{
feptx_cmd_t
*
feptx_cmd
=
&
arr
[
nbfeptx
];
feptx_cmd
->
ans
=
&
ans
[
nbfeptx
];
#else
notifiedFIFO_elt_t
*
req
=
newNotifiedFIFO_elt
(
sizeof
(
feptx_cmd_t
),
2000
+
aid
,
ru
->
respfeptx
,
nr_feptx
);
feptx_cmd_t
*
feptx_cmd
=
(
feptx_cmd_t
*
)
NotifiedFifoData
(
req
);
#endif
feptx_cmd
->
aid
=
aid
;
feptx_cmd
->
ru
=
ru
;
feptx_cmd
->
slot
=
slot
;
feptx_cmd
->
startSymbol
=
0
;
feptx_cmd
->
numSymbols
=
(
ru
->
half_slot_parallelization
>
0
)
?
ru
->
nr_frame_parms
->
symbols_per_slot
>>
1
:
ru
->
nr_frame_parms
->
symbols_per_slot
;
#ifdef TASK_MANAGER_RU
task_t
t
=
{.
func
=
nr_feptx
,
.
args
=
feptx_cmd
};
async_task_manager
(
&
ru
->
man
,
t
);
#else
pushTpool
(
ru
->
threadPool
,
req
);
#endif
nbfeptx
++
;
if
(
ru
->
half_slot_parallelization
>
0
)
{
#ifdef TASK_MANAGER_RU
feptx_cmd_t
*
feptx_cmd
=
&
arr
[
nbfeptx
];
feptx_cmd
->
ans
=
&
ans
[
nbfeptx
];
#else
notifiedFIFO_elt_t
*
req
=
newNotifiedFIFO_elt
(
sizeof
(
feptx_cmd_t
),
2000
+
aid
+
ru
->
nb_tx
,
ru
->
respfeptx
,
nr_feptx
);
feptx_cmd_t
*
feptx_cmd
=
(
feptx_cmd_t
*
)
NotifiedFifoData
(
req
);
#endif
feptx_cmd
->
aid
=
aid
;
feptx_cmd
->
ru
=
ru
;
feptx_cmd
->
slot
=
slot
;
feptx_cmd
->
startSymbol
=
ru
->
nr_frame_parms
->
symbols_per_slot
>>
1
;
feptx_cmd
->
numSymbols
=
ru
->
nr_frame_parms
->
symbols_per_slot
>>
1
;
#ifdef TASK_MANAGER_RU
task_t
t
=
{.
func
=
nr_feptx
,
.
args
=
feptx_cmd
};
async_task_manager
(
&
ru
->
man
,
t
);
#else
pushTpool
(
ru
->
threadPool
,
req
);
#endif
nbfeptx
++
;
}
}
#ifdef TASK_MANAGER_RU
if
(
nbfeptx
>
0
)
join_task_ans
(
ans
,
nbfeptx
);
#else
while
(
nbfeptx
>
0
)
{
notifiedFIFO_elt_t
*
req
=
pullTpool
(
ru
->
respfeptx
,
ru
->
threadPool
);
delNotifiedFIFO_elt
(
req
);
nbfeptx
--
;
}
#endif
join_task_ans
(
ans
,
nbfeptx
);
stop_meas
(
&
ru
->
ofdm_total_stats
);
if
(
ru
->
idx
==
0
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM
,
0
);
...
...
@@ -430,9 +402,8 @@ void nr_fep(void* arg) {
ru
->
N_TA_offset
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX
+
aid
,
0
);
#ifdef TASK_MANAGER_RU
// Task completed in //
completed_task_ans
(
feprx_cmd
->
ans
);
#endif
}
// RU RX FEP using thread-pool
...
...
@@ -442,67 +413,42 @@ void nr_fep_tp(RU_t *ru, int slot) {
if
(
ru
->
idx
==
0
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX
,
1
);
start_meas
(
&
ru
->
ofdm_demod_stats
);
#ifdef TASK_MANAGER_RU
size_t
const
sz
=
ru
->
nb_rx
+
(
ru
->
half_slot_parallelization
>
0
)
*
ru
->
nb_rx
;
feprx_cmd_t
arr
[
sz
];
task_ans_t
ans
[
sz
];
memset
(
&
ans
,
0
,
sz
*
sizeof
(
task_ans_t
));
#endif
for
(
int
aid
=
0
;
aid
<
ru
->
nb_rx
;
aid
++
)
{
#ifdef TASK_MANAGER_RU
feprx_cmd_t
*
feprx_cmd
=
&
arr
[
nbfeprx
];
feprx_cmd
->
ans
=
&
ans
[
nbfeprx
];
#else
notifiedFIFO_elt_t
*
req
=
newNotifiedFIFO_elt
(
sizeof
(
feprx_cmd_t
),
1000
+
aid
,
ru
->
respfeprx
,
nr_fep
);
feprx_cmd_t
*
feprx_cmd
=
(
feprx_cmd_t
*
)
NotifiedFifoData
(
req
);
#endif
feprx_cmd
->
aid
=
aid
;
feprx_cmd
->
ru
=
ru
;
feprx_cmd
->
slot
=
ru
->
proc
.
tti_rx
;
feprx_cmd
->
startSymbol
=
0
;
feprx_cmd
->
endSymbol
=
(
ru
->
half_slot_parallelization
>
0
)
?
(
ru
->
nr_frame_parms
->
symbols_per_slot
>>
1
)
-
1
:
(
ru
->
nr_frame_parms
->
symbols_per_slot
-
1
);
#ifdef TASK_MANAGER_RU
task_t
t
=
{.
func
=
nr_fep
,
.
args
=
feprx_cmd
};
async_task_manager
(
&
ru
->
man
,
t
);
#else
pushTpool
(
ru
->
threadPool
,
req
);
#endif
nbfeprx
++
;
if
(
ru
->
half_slot_parallelization
>
0
)
{
#ifdef TASK_MANAGER_RU
feprx_cmd_t
*
feprx_cmd
=
&
arr
[
nbfeprx
];
feprx_cmd
->
ans
=
&
ans
[
nbfeprx
];
#else
notifiedFIFO_elt_t
*
req
=
newNotifiedFIFO_elt
(
sizeof
(
feprx_cmd_t
),
1000
+
aid
+
ru
->
nb_rx
,
ru
->
respfeprx
,
nr_fep
);
feprx_cmd_t
*
feprx_cmd
=
(
feprx_cmd_t
*
)
NotifiedFifoData
(
req
);
#endif
feprx_cmd
->
aid
=
aid
;
feprx_cmd
->
ru
=
ru
;
feprx_cmd
->
slot
=
ru
->
proc
.
tti_rx
;
feprx_cmd
->
startSymbol
=
ru
->
nr_frame_parms
->
symbols_per_slot
>>
1
;
feprx_cmd
->
endSymbol
=
ru
->
nr_frame_parms
->
symbols_per_slot
-
1
;
#ifdef TASK_MANAGER_RU
feprx_cmd
->
aid
=
aid
;
feprx_cmd
->
ru
=
ru
;
feprx_cmd
->
slot
=
ru
->
proc
.
tti_rx
;
feprx_cmd
->
startSymbol
=
ru
->
nr_frame_parms
->
symbols_per_slot
>>
1
;
feprx_cmd
->
endSymbol
=
ru
->
nr_frame_parms
->
symbols_per_slot
-
1
;
task_t
t
=
{.
func
=
nr_fep
,
.
args
=
feprx_cmd
};
async_task_manager
(
&
ru
->
man
,
t
);
#else
pushTpool
(
ru
->
threadPool
,
req
);
#endif
nbfeprx
++
;
nbfeprx
++
;
}
}
#ifdef TASK_MANAGER_RU
if
(
nbfeprx
>
0
)
join_task_ans
(
ans
,
nbfeprx
);
#else
while
(
nbfeprx
>
0
)
{
notifiedFIFO_elt_t
*
req
=
pullTpool
(
ru
->
respfeprx
,
ru
->
threadPool
);
delNotifiedFIFO_elt
(
req
);
nbfeprx
--
;
}
#endif
join_task_ans
(
ans
,
nbfeprx
);
stop_meas
(
&
ru
->
ofdm_demod_stats
);
if
(
ru
->
idx
==
0
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX
,
0
);
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
c4caf487
...
...
@@ -45,7 +45,7 @@
#include <time.h>
#include <stdint.h>
/*
static
int64_t time_now_ns(void)
{
...
...
@@ -56,7 +56,7 @@ int64_t time_now_ns(void)
int64_t nanos = tms.tv_sec * 1000000000 + tms.tv_nsec;
return nanos;
}
*/
//#define DEBUG_RXDATA
//#define SRS_IND_DEBUG
...
...
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