我正在尝试使用OpenMp并行化以下代码。此代码属于加密算法,其中每次迭代的输出都输入到下一次迭代。因此我认为由于轮次的依赖性,我无法并行化这个for循环。但我想并行化指令的每个部分 y + = ((z <&lt;&lt; 4)+ k [0]) ^ (z + sum) ^ ((z&gt;&gt; 5)+ k [1])使用单独的线程并最终得到XOR。我试图在循环中插入openMp指令,但需要更长的时间。请纠正我在哪里做错了。
for(n=0;n<32;n++)
{
sum += delta;
#pragma omp parallel
y += ((z<<4)+k[0]) ^ (z+sum) ^ ((z>>5)+k[1]);
z += ((y<<4)+k[2]) ^ (y+sum) ^ ((y>>5)+k[3]);
}