问候贵族社区,
我想要以下循环:
for(i = 0; i < MAX; i++)
A[i] = B[i] + C[i];
Run Code Online (Sandbox Code Playgroud)
这将在使用线程的共享内存四核计算机上并行运行.以下两个备选方案正在考虑由这些线程执行的代码,其中tid是线程的ID:0,1,2或3.
(为简单起见,假设MAX是4的倍数)
for(i = tid; i < MAX; i += 4)
A[i] = B[i] + C[i];
Run Code Online (Sandbox Code Playgroud)
for(i = tid*(MAX/4); i < (tid+1)*(MAX/4); i++)
A[i] = B[i] + C[i];
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有一个比另一个更有效,为什么?