Questions tagged «openmp»


6
omp parallel vs. omp parallel for
两者有什么区别? [一个] #pragma omp parallel { #pragma omp for for(int i = 1; i < 100; ++i) { ... } } [B] #pragma omp parallel for for(int i = 1; i < 100; ++i) { ... }
105 openmp 

2
犰狳solve()线程安全吗?
在我的代码中,我有一个循环,在该循环中构造并确定了线性系统并尝试解决该问题: #pragma omp parallel for for (int i = 0; i < n[0]+1; i++) { for (int j = 0; j < n[1]+1; j++) { for (int k = 0; k < n[2]+1; k++) { arma::mat A(max_points, 2); arma::mat y(max_points, 1); // initialize A and y arma::vec solution = solve(A,y); …

2
OpenMP中的firstprivate和lastprivate有何不同?
我已经看过官方定义,但我仍然很困惑。 firstprivate:指定每个线程应具有其自己的变量实例,并且应使用变量的值初始化该变量,因为它存在于并行构造之前。 对我来说,这听起来很像私人的。我在寻找示例,但是我似乎不明白它的特殊性或用法。 lastprivate:指定变量的封闭上下文版本设置为等于执行最终迭代(for循环构造)或最后一部分(#pragma部分)的线程的私有版本。 由于以下示例,我觉得我对此有所了解: #pragma omp parallel { #pragma omp for lastprivate(i) for (i=0; i<n-1; i++) a[i] = b[i] + b[i+1]; } a[i]=b[i]; 因此,在此示例中,我了解到lastprivate允许i将其作为最后一个值在循环外部返回。 我今天才开始学习OpenMP。
76 openmp 

5
为什么OpenMP不允许!=运算符?
我正在尝试编译以下代码: #pragma omp parallel shared (j) { #pragma omp for schedule(dynamic) for(i = 0; i != j; i++) { // do something } } 但我收到以下错误:错误:控制谓词无效。 该OpenMP的标准规定,对于parallel for构造它“仅仅”允许以下的运营商之一:<,<=,> >=。 我不明白不允许这样做的理由i != j。对于,我可以理解,static schedule因为编译器需要预先计算分配给每个线程的迭代次数。但是我不明白为什么在这种情况下会出现这种限制。有什么线索吗? 编辑:即使我做了for(i = 0; i != 100; i++),尽管我可以放“ <”或“ <=”。

2
在C ++ 11基于范围的循环中使用OpenMP吗?
是否有任何反指示?还是行为明确? #pragma omp parallel for for(auto x : stl_container) { ... } 因为似乎OpenMP规范仅对c ++ 98有效,但我想由于C ++ 11线程可能存在更多不兼容问题,这里不使用它们。我还是想确定。
71 c++11  openmp 

4
Pthreads与OpenMP
我正在使用Linux在C中创建一个多线程应用程序。 我不确定应该使用POSIX线程API还是OpenMP API。 使用这两种方法的利弊是什么? 编辑: 有人可以澄清这两个API是创建内核级线程还是用户级线程?
69 c  pthreads  openmp 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.