小编frk*_*kvr的帖子

为什么这个并行函数用于计算最长的公共子序列比串行慢?

LCS的并行计算遵循波前模式.这是并行函数,它比串行实现慢.(我认为对角线(平行)与行数(串行)的数量与它有关)

void parallelLCS(char * sequence_a, char * sequence_b, size_t size_a, size_t size_b) {
double start, end;

int ** dp_table = new int*[size_a + 1];

for (int i = 0; i <= size_a; i++)
    dp_table[i] = new int[size_b + 1];

for (int i = 1; i <= size_a; i++)
    dp_table[i][0] = 0;
for (int j = 0; j <= size_b; j++)
    dp_table[0][j] = 0;

int p_threads = 2;
int diagonals = size_a + size_b;

start = omp_get_wtime();
#pragma omp parallel num_threads(p_threads) …
Run Code Online (Sandbox Code Playgroud)

c++ dynamic-programming openmp lcs longest-substring

2
推荐指数
1
解决办法
1149
查看次数