Skip to content

Parallelize Pipeline Processing #23

@aeoranday

Description

@aeoranday

The incoming data format has 64 independent channels. Our use of AVX2 allows each pipeline to process 16 channels. This results in 4 independent pipelines that should be parallelized.

The incoming data should be handled with care since the 4th pipeline has an exception for frame expansion. The frame expansion could be moved to the start of AVXPipeline while TPGenerator` adjusts the 4th frame before sending it, as in:

if (p == m_num_pipelines - 1)
cursor -= 4; // Take a step of 32 bit backwards for the last sub-frame.
__m256i regi = _mm256_lddqu_si256((__m256i*)cursor);
if (p == m_num_pipelines - 1) // Permute the row order to use the same operation.
regi = _mm256_permutevar8x32_epi32(regi, _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 0));

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions