Пробовал memcpy из простого буфера в простой:uchar * pIn{ new uchar[ size ]};
uchar * pOut{ new uchar[ size ]};
memcpy( pOut, pIn, size );
delete [] pIn;
delete [] pOut;
Тоже около 200мс.
Пока получается, что на Tegra TK1 4224х3156х2 байт копируются с такой скоростью.
Но это учитывая, то, что там драйвер камеры и подсистема V4L2 делает.
Буду разбираться.
Сделал вариант с OpenMP, реально на 4 поделилось время:
static void memcpy_openmp( uchar * pOut, const uchar * pIn, const int size ) {
//omp_set_dynamic( 0 );
omp_set_num_threads( 4 );
//int blockSize{ 1666368 };
int blockSize{ size / 4 };
int th_id, nthreads;
#pragma omp parallel for
for( int i = 0; i < size / blockSize; i++ ){
int offset{ i * blockSize };
memcpy( pOut + offset, pIn + offset, blockSize );
th_id = omp_get_thread_num();
nthreads = omp_get_num_threads();
qDebug() << th_id << nthreads;
}
}
Где-то 70-80мс.
Вопрос открыт.