Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
MPIfR-BDG
psrdada_cpp
Commits
5746500b
Commit
5746500b
authored
Oct 09, 2020
by
Tobias Winchen
Browse files
Remove superfluous init method
parent
fc470a17
Changes
2
Hide whitespace changes
Inline
Side-by-side
psrdada_cpp/effelsberg/edd/SKRfiReplacementCuda.cuh
View file @
5746500b
...
...
@@ -34,25 +34,19 @@ public:
* @brief Replaces RFI data with data generated using statistics of data from chosen number of clean_windows.
*
* @param(in) rfi_status rfi_status of input data stream
* @param(in & out) data Data on which RFI has to be replaced. Returns the same but with RFI replaced.
* @param(in & out) data Data on which RFI has to be replaced. Returns the same but with RFI replaced.
* @param(in) clean_windows number of clean windows used for computing data statistics.
*/
void
replace_rfi_data
(
const
thrust
::
device_vector
<
int
>
&
rfi_status
,
void
replace_rfi_data
(
const
thrust
::
device_vector
<
int
>
&
rfi_status
,
thrust
::
device_vector
<
thrust
::
complex
<
float
>>
&
data
,
std
::
size_t
clean_windows
=
5
);
private:
/**
* @brief Initializes the states of the class members for the given data to be processed.
*
* @param(in) data Data stream that has to be processed.
*/
void
init
(
const
thrust
::
device_vector
<
thrust
::
complex
<
float
>>
&
data
);
thrust
::
device_vector
<
int
>
_rfi_status
;
std
::
size_t
_window_size
;
std
::
size_t
_nwindows
,
_nrfi_windows
,
_nclean_windows
;
std
::
size_t
_nclean_windows_stat
;
//number of clean windows used for computing DataStatistics
std
::
size_t
_nclean_windows_stat
;
//number of clean windows used for computing DataStatistics
thrust
::
device_vector
<
int
>
_rfi_window_indices
;
thrust
::
device_vector
<
int
>
_clean_window_indices
;
thrust
::
device_vector
<
thrust
::
complex
<
float
>>
_clean_data
;
...
...
psrdada_cpp/effelsberg/edd/src/SKRfiReplacementCuda.cu
View file @
5746500b
...
...
@@ -16,7 +16,7 @@ struct mean_subtraction_square{
struct
generate_replacement_data
{
float
normal_dist_mean
,
normal_dist_std
;
generate_replacement_data
(
float
mean
,
float
std
)
generate_replacement_data
(
float
mean
,
float
std
)
:
normal_dist_mean
(
mean
),
normal_dist_std
(
std
)
{};
...
...
@@ -39,9 +39,18 @@ SKRfiReplacementCuda::~SKRfiReplacementCuda()
BOOST_LOG_TRIVIAL
(
info
)
<<
"Destroying SKRfiReplacementCuda instance..
\n
"
;
}
void
SKRfiReplacementCuda
::
init
(
const
thrust
::
device_vector
<
thrust
::
complex
<
float
>>
&
data
)
void
SKRfiReplacementCuda
::
replace_rfi_data
(
const
thrust
::
device_vector
<
int
>
&
rfi_status
,
thrust
::
device_vector
<
thrust
::
complex
<
float
>>
&
data
,
std
::
size_t
clean_windows
)
{
BOOST_LOG_TRIVIAL
(
info
)
<<
"initializing the states of SKRfiReplacementCuda"
nvtxRangePushA
(
"replace_rfi_data"
);
_rfi_status
=
rfi_status
;
thrust
::
device_vector
<
thrust
::
complex
<
float
>>
replacement_data
;
//initialize data members of the class
_nclean_windows_stat
=
clean_windows
;
//no. of clean windows used for computing statistics
BOOST_LOG_TRIVIAL
(
info
)
<<
"initializing the states of SKRfiReplacementCuda"
<<
" class members for the data to be processed..
\n
"
;
_nwindows
=
_rfi_status
.
size
();
//get_rfi_window_indices();
...
...
@@ -62,7 +71,7 @@ void SKRfiReplacementCuda::init(const thrust::device_vector<thrust::complex<floa
_rfi_status
.
begin
(),
_clean_window_indices
.
begin
(),
thrust
::
placeholders
::
_1
==
0
);
if
(
_nclean_windows
<
_nwindows
){
//if RFI is present
//Getting clean data statistics of chosen number of clean windows
if
(
_nclean_windows
<
_nclean_windows_stat
)
_nclean_windows_stat
=
_nclean_windows
;
...
...
@@ -80,8 +89,8 @@ void SKRfiReplacementCuda::init(const thrust::device_vector<thrust::complex<floa
}
//computing clean data statistics
BOOST_LOG_TRIVIAL
(
debug
)
<<
"computing statistics of clean data..
\n
"
;
//The distribution of both real and imag have same mean and standard deviation.
//Therefore computing _ref_mean, _ref_sd for real distribution only.
//The distribution of both real and imag have same mean and standard deviation.
//Therefore computing _ref_mean, _ref_sd for real distribution only.
std
::
size_t
length
=
_clean_data
.
size
();
_ref_mean
=
(
thrust
::
reduce
(
_clean_data
.
begin
(),
_clean_data
.
end
(),
thrust
::
complex
<
float
>
(
0.0
f
,
0.0
f
))).
real
()
/
length
;
_ref_sd
=
std
::
sqrt
(
thrust
::
transform_reduce
(
_clean_data
.
begin
(),
_clean_data
.
end
(),
mean_subtraction_square
(
_ref_mean
),
...
...
@@ -89,18 +98,7 @@ void SKRfiReplacementCuda::init(const thrust::device_vector<thrust::complex<floa
BOOST_LOG_TRIVIAL
(
debug
)
<<
"DataStatistics mean = "
<<
_ref_mean
<<
" sd = "
<<
_ref_sd
;
}
}
void
SKRfiReplacementCuda
::
replace_rfi_data
(
const
thrust
::
device_vector
<
int
>
&
rfi_status
,
thrust
::
device_vector
<
thrust
::
complex
<
float
>>
&
data
,
std
::
size_t
clean_windows
)
{
nvtxRangePushA
(
"replace_rfi_data"
);
_rfi_status
=
rfi_status
;
thrust
::
device_vector
<
thrust
::
complex
<
float
>>
replacement_data
;
//initialize data members of the class
_nclean_windows_stat
=
clean_windows
;
//no. of clean windows used for computing statistics
init
(
data
);
//RFI present and not in all windows
if
(
_nclean_windows
<
_nwindows
){
//Replacing RFI
...
...
@@ -108,7 +106,7 @@ void SKRfiReplacementCuda::replace_rfi_data(const thrust::device_vector<int> &rf
nvtxRangePushA
(
"replace_rfi_datai_loop"
);
for
(
std
::
size_t
ii
=
0
;
ii
<
_nrfi_windows
;
ii
++
){
std
::
size_t
index
=
_rfi_window_indices
[
ii
]
*
_window_size
;
thrust
::
transform
(
sequence_index_begin
,
(
sequence_index_begin
+
_window_size
),
thrust
::
transform
(
sequence_index_begin
,
(
sequence_index_begin
+
_window_size
),
(
data
.
begin
()
+
index
),
generate_replacement_data
(
_ref_mean
,
_ref_sd
));
}
nvtxRangePop
();
...
...
Write
Preview
Supports
Markdown
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