Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
tile_processor_gpu
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Elphel
tile_processor_gpu
Commits
32ed475a
Commit
32ed475a
authored
Apr 12, 2025
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
testing refactored
parent
b469db50
Changes
3
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
257 additions
and
163 deletions
+257
-163
TpHostGpu.cu
src/TpHostGpu.cu
+199
-109
TpHostGpu.h
src/TpHostGpu.h
+35
-25
test_tp.cu
src/test_tp.cu
+23
-29
No files found.
src/TpHostGpu.cu
View file @
32ed475a
This diff is collapsed.
Click to expand it.
src/TpHostGpu.h
View file @
32ed475a
...
@@ -111,18 +111,27 @@ public:
...
@@ -111,18 +111,27 @@ public:
,
m_host_kern_buf
{(
float
*
)
malloc
(
tpParams
.
kern_size
*
sizeof
(
float
))}
,
m_host_kern_buf
{(
float
*
)
malloc
(
tpParams
.
kern_size
*
sizeof
(
float
))}
{};
{};
~
TpHostGpu
();
~
TpHostGpu
();
void
setImageKernels
();
void
allTests
(
void
setCltBuffers
();
int
num_runs
,
void
setCorrImgBuffers
();
int
image_dx
,
// 2
void
setImgBuffers
();
int
image_dy
,
// 0
void
setImgBuffersShifted
(
int
is_bayer
,
int
image_dx
,
int
image_dy
);
const
float
target_disparity
,
// DBG_DISPARITY == 0.0
void
setGeometryCorrectionBuffers
();
const
float
scale
,
// 0.0
void
setCorrelationBuffers
();
int
quad_combine
,
void
setTasks
(
const
float
target_disparity
,
const
float
scale
);
int
use_dp
,
void
setTextures
();
int
debug
);
void
setRGBA
();
void
setImageKernels
();
// 233-258 (overlap)
void
setCltBuffers
();
// 246
trot_deriv
testRotMatrices
(
int
num_runs
);
// 424
void
setCorrImgBuffers
();
// 252
void
setImgBuffers
();
// 283-292
void
setImgBuffersShifted
(
int
is_bayer
,
int
image_dx
,
int
image_dy
);
// 1171-1188 SHOULD be called before testCorrelate2DInterSelf
void
setGeometryCorrectionBuffers
();
// 207-231
void
setCorrelationBuffers
();
// 260-281 , 332-333
void
setTasks
(
const
float
target_disparity
,
const
float
scale
);
// 129, 302-325
void
setTextures
();
// 337-348, ??
void
setRGBA
();
// 377 - 390
trot_deriv
testRotMatrices
(
int
num_runs
);
// 420
void
testReverseDistortions
(
int
num_runs
);
// 468
void
testReverseDistortions
(
int
num_runs
);
// 468
void
testGeomCorrect
(
int
num_runs
);
// 534
void
testGeomCorrect
(
int
num_runs
);
// 534
void
testConvertDirect
(
int
num_runs
);
// 608
void
testConvertDirect
(
int
num_runs
);
// 608
...
@@ -131,8 +140,8 @@ public:
...
@@ -131,8 +140,8 @@ public:
void
testCorrelate2DIntra
(
int
num_runs
);
// 762 - 885
void
testCorrelate2DIntra
(
int
num_runs
);
// 762 - 885
void
testCorrelate2DIntraTD
(
int
num_runs
,
int
quad_combine
);
// 886 - 1123
void
testCorrelate2DIntraTD
(
int
num_runs
,
int
quad_combine
);
// 886 - 1123
//void setImgBuffersShifted(int is_bayer, int image_dx, int image_dy); // 1171-1188
void
testCorrelate2DInterSelf
(
int
num_runs
);
// 1136 - 1411
void
testCorrelate2DInterSelf
(
int
num_runs
);
// 1136 - 1411
void
testTextures
(
int
num_runs
,
int
use_dp
,
int
debug
);
// 1422-1664
void
testTextures
(
int
num_runs
,
int
use_dp
,
int
debug
);
// 1422-1664
void
testTexturesRGBA
(
int
num_runs
,
int
use_dp
,
int
debug
);
// 1669-1810
void
testTexturesRGBA
(
int
num_runs
,
int
use_dp
,
int
debug
);
// 1669-1810
...
@@ -149,7 +158,7 @@ private:
...
@@ -149,7 +158,7 @@ private:
float
*
getCorrImg
(
int
corr_img_size
,
int
num_corr_indices
,
int
*
cpu_corr_indices
,
float
*
cpu_corr
,
int
num_sel_sensors
);
float
*
getCorrImg
(
int
corr_img_size
,
int
num_corr_indices
,
int
*
cpu_corr_indices
,
float
*
cpu_corr
,
int
num_sel_sensors
);
float
*
getCorrTdImg
(
int
corr_img_size
,
int
num_corr_indices
,
int
*
cpu_corr_indices
,
float
*
cpu_corr_td
,
int
num_sel_sensors
);
float
*
getCorrTdImg
(
int
corr_img_size
,
int
num_corr_indices
,
int
*
cpu_corr_indices
,
float
*
cpu_corr_td
,
int
num_sel_sensors
);
void
generate_RBGA_host
(
void
generate_RBGA_host
(
// not a member
int
num_cams
,
// number of cameras used
int
num_cams
,
// number of cameras used
// Parameters to generate texture tasks
// Parameters to generate texture tasks
float
*
gpu_ftasks
,
// flattened tasks, 27 floats for quad EO, 99 floats for LWIR16p// struct tp_task * gpu_tasks,
float
*
gpu_ftasks
,
// flattened tasks, 27 floats for quad EO, 99 floats for LWIR16p// struct tp_task * gpu_tasks,
...
@@ -183,6 +192,7 @@ private:
...
@@ -183,6 +192,7 @@ private:
void
gfree
(
struct
corr_vector
*
p
);
void
gfree
(
struct
corr_vector
*
p
);
void
gfree
(
struct
trot_deriv
*
p
);
void
gfree
(
struct
trot_deriv
*
p
);
void
gfree
(
float
**
p
);
void
gfree
(
float
**
p
);
void
gfree
(
struct
CltExtra
**
p
);
};
};
...
...
src/test_tp.cu
View file @
32ed475a
...
@@ -97,8 +97,6 @@
...
@@ -97,8 +97,6 @@
*
*
* \return Status code
* \return Status code
*/
*/
int main(int argc, char **argv)
int main(int argc, char **argv)
{
{
//
//
...
@@ -106,41 +104,40 @@ int main(int argc, char **argv)
...
@@ -106,41 +104,40 @@ int main(int argc, char **argv)
//
//
printf("%s Starting...\n\n", argv[0]);
printf("%s Starting...\n\n", argv[0]);
printf("sizeof(float*)=%d\n",(int)sizeof(float*));
printf("sizeof(float*)=%d\n",(int)sizeof(float*));
//initialize CUDA
//initialize CUDA
findCudaDevice(argc, (const char **)argv);
findCudaDevice(argc, (const char **)argv);
float fat_zero = 1000.0f; // 300.0f; // 30.0;
float fat_zero = 1000.0f; // 300.0f; // 30.0;
int is_bayer = 0; // from 1136
int image_dx = 2;
int image_dy = 0;
#if TEST_LWIR
#if TEST_LWIR
int use_lwir= 1;
int use_lwir= 1;
#else
#else
int use_lwir= 0;
int use_lwir= 0;
#endif
#endif
class YourClass
{
std::vector<int> myVector;
// ...
};
TpParams tpParams(use_lwir);
TpParams tpParams(use_lwir);
TpPaths tpPaths(use_lwir);
TpPaths tpPaths(use_lwir);
TpHostGpu tpHostGpu(tpParams,tpPaths);
TpHostGpu tpHostGpu(tpParams,tpPaths);
/* */
GenerateRgbaHost generateRgbaHost{}; // = new GenerateRgbaHost();
tpHostGpu.allTests(
10, // int num_runs,
2, // int image_dx, // 2
0, // int image_dy, // 0
0.0, // const float target_disparity, // DBG_DISPARITY == 0.0
0.0, // const float scale, // 0.0
0, // int quad_combine,
0, // int use_dp,
0); // int debug);
return 0;
/* */
GenerateRgbaHost generateRgbaHost{}; // = new GenerateRgbaHost(); Remove files, use tpHostGpu::
// return 0;
// return 0;
float * host_kern_buf = (float *) malloc(tpParams.kern_size * sizeof(float));
float * host_kern_buf = (float *) malloc(tpParams.kern_size * sizeof(float));
float * ftask_data = (float *) malloc(TILESX * TILESY * tpParams.task_size * sizeof(float));
float * ftask_data = (float *) malloc(TILESX * TILESY * tpParams.task_size * sizeof(float));
float * ftask_data1 = (float *) malloc(TILESX * TILESY * tpParams.task_size * sizeof(float));
float * ftask_data1 = (float *) malloc(TILESX * TILESY * tpParams.task_size * sizeof(float));
trot_deriv rot_deriv;
trot_deriv rot_deriv;
int texture_indices [TILESX*TILESYA];
int texture_indices [TILESX*TILESYA];
int cpu_woi [4];
int cpu_woi [4];
// host array of pointers to GPU memory
// host array of pointers to GPU memory
float * gpu_kernels_h [tpParams.num_cams];
float * gpu_kernels_h [tpParams.num_cams];
struct CltExtra * gpu_kernel_offsets_h [tpParams.num_cams];
struct CltExtra * gpu_kernel_offsets_h [tpParams.num_cams];
...
@@ -148,14 +145,12 @@ int main(int argc, char **argv)
...
@@ -148,14 +145,12 @@ int main(int argc, char **argv)
float tile_coords_h [tpParams.num_cams][TILESX * TILESY][2];
float tile_coords_h [tpParams.num_cams][TILESX * TILESY][2];
float * gpu_clt_h [tpParams.num_cams];
float * gpu_clt_h [tpParams.num_cams];
float * gpu_corr_images_h [tpParams.num_cams];
float * gpu_corr_images_h [tpParams.num_cams];
float * gpu_corrs; // correlation tiles (per tile, per pair) in pixel domain
float * gpu_corrs; // correlation tiles (per tile, per pair) in pixel domain
float * gpu_corrs_td; // correlation tiles (per tile, per pair) in transform domain
float * gpu_corrs_td; // correlation tiles (per tile, per pair) in transform domain
int * gpu_corr_indices; // shared by gpu_corrs gpu_corrs_td
int * gpu_corr_indices; // shared by gpu_corrs gpu_corrs_td
float * gpu_corrs_combo; // correlation tiles combined (1 per tile), pixel domain
float * gpu_corrs_combo; // correlation tiles combined (1 per tile), pixel domain
float * gpu_corrs_combo_td; // correlation tiles combined (1 per tile), transform domain
float * gpu_corrs_combo_td; // correlation tiles combined (1 per tile), transform domain
int * gpu_corrs_combo_indices; // shared by gpu_corrs_combo and gpu_corrs_combo_td
int * gpu_corrs_combo_indices; // shared by gpu_corrs_combo and gpu_corrs_combo_td
float * gpu_textures;
float * gpu_textures;
float * gpu_diff_rgb_combo;
float * gpu_diff_rgb_combo;
float * gpu_textures_rbga;
float * gpu_textures_rbga;
...
@@ -176,7 +171,6 @@ int main(int argc, char **argv)
...
@@ -176,7 +171,6 @@ int main(int argc, char **argv)
float ** gpu_corr_images; // [NUM_CAMS];
float ** gpu_corr_images; // [NUM_CAMS];
// GPU pointers to GPU memory
// GPU pointers to GPU memory
float * gpu_ftasks; // TODO: ***** allocate ! **** DONE
float * gpu_ftasks; // TODO: ***** allocate ! **** DONE
int * gpu_active_tiles;
int * gpu_active_tiles;
...
@@ -344,7 +338,7 @@ int main(int argc, char **argv)
...
@@ -344,7 +338,7 @@ int main(int argc, char **argv)
for (int tx = 0; tx < TILESX; tx++){
for (int tx = 0; tx < TILESX; tx++){
int nt = ty * TILESX + tx;
int nt = ty * TILESX + tx;
float *tp = ftask_data + tpParams.task_size * nt;
float *tp = ftask_data + tpParams.task_size * nt;
int cm = (*(int *) tp) &
TASK_TEXTURE_BITS; // non-zero any of 4 lower task bits
int cm = (*(int *) tp) &
(TASK_TEXTURE_BITS | (1 << TASK_TEXT_EN)); // non-zero any of 8 lower task bits or bit 8 (TASK_TEXT_EN)
if (cm){
if (cm){
texture_indices[num_textures++] = (nt << TEXT_NTILE_SHIFT) | (1 << LIST_TEXTURE_BIT); // setting 0x80 in texture indices
texture_indices[num_textures++] = (nt << TEXT_NTILE_SHIFT) | (1 << LIST_TEXTURE_BIT); // setting 0x80 in texture indices
}
}
...
@@ -640,7 +634,7 @@ int main(int argc, char **argv)
...
@@ -640,7 +634,7 @@ int main(int argc, char **argv)
IMG_HEIGHT, // int woi_height,
IMG_HEIGHT, // int woi_height,
0, // KERNELS_HOR, // int kernels_hor,
0, // KERNELS_HOR, // int kernels_hor,
KERNELS_VERT, // int kernels_vert);
KERNELS_VERT, // int kernels_vert);
gpu_active_tiles, // int * gpu_active_tiles, // pointer to the calculated
number of non-zero
tiles
gpu_active_tiles, // int * gpu_active_tiles, // pointer to the calculated
list of
tiles
gpu_num_active, //); // int * pnum_active_tiles); // indices to gpu_tasks
gpu_num_active, //); // int * pnum_active_tiles); // indices to gpu_tasks
TILESX); // int tilesx)
TILESX); // int tilesx)
printf("HOST: convert_direct() done\n");
printf("HOST: convert_direct() done\n");
...
@@ -1138,9 +1132,9 @@ int main(int argc, char **argv)
...
@@ -1138,9 +1132,9 @@ int main(int argc, char **argv)
int num_sel_sensors = 16; // 15; // 16;
int num_sel_sensors = 16; // 15; // 16;
int num_pairs_inter = num_sel_sensors+1;
int num_pairs_inter = num_sel_sensors+1;
num_corr_indices = num_pairs_inter * num_tiles;
num_corr_indices = num_pairs_inter * num_tiles;
int is_bayer = 0;
//
int is_bayer = 0;
int image_dx = 2;
//
int image_dx = 2;
int image_dy = 0;
//
int image_dy = 0;
float * gpu_clt_ref_h [tpParams.num_cams];
float * gpu_clt_ref_h [tpParams.num_cams];
float ** gpu_clt_ref; // [NUM_CAMS];
float ** gpu_clt_ref; // [NUM_CAMS];
...
@@ -1166,7 +1160,7 @@ int main(int argc, char **argv)
...
@@ -1166,7 +1160,7 @@ int main(int argc, char **argv)
IMG_HEIGHT, // int woi_height,
IMG_HEIGHT, // int woi_height,
KERNELS_HOR, // int kernels_hor,
KERNELS_HOR, // int kernels_hor,
KERNELS_VERT, // int kernels_vert);
KERNELS_VERT, // int kernels_vert);
gpu_active_tiles, // int * gpu_active_tiles, // pointer to the calculated
number of non-zero
tiles
gpu_active_tiles, // int * gpu_active_tiles, // pointer to the calculated
list of
tiles
gpu_num_active, //); // int * pnum_active_tiles); // indices to gpu_tasks
gpu_num_active, //); // int * pnum_active_tiles); // indices to gpu_tasks
TILESX); // int tilesx)
TILESX); // int tilesx)
...
@@ -1208,7 +1202,7 @@ int main(int argc, char **argv)
...
@@ -1208,7 +1202,7 @@ int main(int argc, char **argv)
IMG_HEIGHT, // int woi_height,
IMG_HEIGHT, // int woi_height,
KERNELS_HOR, // int kernels_hor,
KERNELS_HOR, // int kernels_hor,
KERNELS_VERT, // int kernels_vert);
KERNELS_VERT, // int kernels_vert);
gpu_active_tiles, // int * gpu_active_tiles, // pointer to the calculated
number of non-zero
tiles
gpu_active_tiles, // int * gpu_active_tiles, // pointer to the calculated
list of
tiles
gpu_num_active, //); // int * pnum_active_tiles); // indices to gpu_tasks
gpu_num_active, //); // int * pnum_active_tiles); // indices to gpu_tasks
TILESX); // int tilesx)
TILESX); // int tilesx)
...
...
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