gpt4 book ai didi

c - 使 2 个循环并行运行

转载 作者:行者123 更新时间:2023-11-30 19:25:32 24 4
gpt4 key购买 nike

我的一张工作表上有一项任务,要求我添加 OpenMP 指令以使这两个循环并行运行。

{
for (i = ; i < N; i += )
{
D[i] = x * A[i] + x * B[i];
}

for (i = 0; i < N; i++)
{
C[i] = c * D[i];
}
}

我制作了一个 C 文件来添加 Openmp 指令

#include <omp.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h.>

#define THREADS 4
#define N 10

int main (int argc, char *argv[])
{
int i;
double A[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, B[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, C[N], D[N];
const double x = 5;
const double z = 5;

#pragma omp parallel for schedule(static) num_threads(THREADS)

for (i = 0; i < N; i += 10)
{
D[i] = z * A[i] + z * B[i];
printf("part 1 Thread %d is doing iteration %d: %d \n", omp_get_thread_num(
),i, D[i]);
}
#pragma omp parallel for schedule(static) num_threads(THREADS)
for (i = 0; i < N; i++)
{
C[i] = x * D[i];
printf("part 2 Thread %d is doing iteration %d: %d \n", omp_get_thread_num(
),i, C[i]);
}



return 0;
}

我让第 1 部分执行一次迭代,然后第 2 部分执行所有迭代,我不确定哪里出错了。

最佳答案

第 1 部分仅执行 1 次迭代,因为只需执行 1 次迭代:

#pragma omp parallel for schedule(static) num_threads(THREADS)
for (i = 0; i < N; i += 10)

其中第 7 行中的 N 扩展为 10:

#define N 10

第二次迭代永远不会发生,因为超出了循环范围

关于c - 使 2 个循环并行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58650748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com