sách gpt4 ai đã đi

c - 并行使用 pragma 进行构造

In lại 作者:行者123 更新时间:2023-12-02 17:59:18 hai mươi bốn 4
mua khóa gpt4 Nike

在我的 VS2010 C 代码中,我成功地使用了 pragma 指令:

 void doSomething(void)
{
n = doSomethingElse();
j = doOnceMore();
k = n + j;
}

#pragma omp parallel for
for (i = 0; i < 5; ++i)
{
doSomething();
}

但是如果我内联移动“doSomething()”的工作,我就无法让它工作:

    #pragma omp parallel for
for (int i = 0; i < 5; ++i)
{
n = doSomethingElse();
j = doOnceMore();
k = n + j;
}

我总是假设 pragma 指令会采用括号内的内容并为其分配一个唯一的线程。我对此完全错误吗?或者我应该使用其他一些 omp 语法吗?

1 Câu trả lời

n、j、k 默认情况下是线程共享的,因此它不起作用。当前,每个线程都同时在 n,j,k 上写入。

这取决于您想要做什么,它们是私有(private)的还是共享的。如果它们对于一个循环传递来说是本地的,您可以将它们声明为线程私有(private),并且它应该可以正常工作(循环计数器,这里的 Tôi,默认情况下是线程私有(private)的)。

#pragma omp parallel for private(n,j,k)
for (int i = 0; i < 5; ++i)
{
n = doSomethingElse();
j = doOnceMore();
k = n + j;
}

由于 openmp 无法猜测变量的用途,因此您的工作就是告诉编译指示如何处理它们。您可以找到有关子句和变量的更多信息 đây 。还有一个很好的talkVề openmp webpage关于数据结构和构造适当的并行区域。

关于c - 并行使用 pragma 进行构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8597792/

hai mươi bốn 4 0
Bài viết được đề xuất: Phân nhánh tương thích với CoffeeScript có phạm vi cố định?
Bài viết được đề xuất: asp.net - 在 appharbor 上部署基础设施
Bài viết được đề xuất: c# - 如何将标准值放在下拉列表顶部
Bài viết được đề xuất: r - R 中使用递归函数吗?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com