- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个对象是
omp parallel
部分时需要为每个线程复制有没有一种方法可以自动为此对象声明适当的复制语义?我的想法是
omp parallel
部分将其声明为 firstprivate
,以便它确实为每个线程复制这合理吗?有没有更好的办法?
编辑:检查 omp_get_thread_num()
是否已更改并根据需要执行指针或深度复制的复制构造函数怎么样?
最佳答案
我会使用 shared_ptr管理对象,实现功能:
shared_ptr<T> deepCopy(const shared_ptr<T>& obj);
根据请求执行深度复制并返回另一个共享指针。然后可以在并行区域内使用此函数,以在需要时实例化 obj
的私有(private)拷贝。
关于c++ - `shared_ptr` 和 `omp parallel firstprivate` 的深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21409331/
为什么会出现此错误,我该怎么办? error: firstprivate variable 'j' is private in outer context void foo() { int i
我有以下代码可以在我可用的编译器(xlC 和 gcc)上运行,但我不知道它是否完全兼容(我在 OpenMP 3.0 规范中没有发现任何明确禁止它的内容): #include #include #i
代码 ofstream myfile("file_path"); #pragma omp parallel for default(none) schedule(dynamic) firstpriva
我在类方法中有一个#pragma omp parallel for 循环。每个线程只读访问很少的方法局部变量,很少调用私有(private)数据和方法的参数。所有这些都在 shared 子句中声明。我
在同一个变量上应用 firstprivate 和 lastprivate 是否正确? 例如: void main (){ int a= 100, i; #pragma omp for
我有一个对象是 多态性,因此需要通过指针传递(或变体,但这似乎有点矫枉过正) 足够大且传递足够频繁,因此需要有效传递(即不会被不必要地复制) 不是线程安全的,所以当我们进入 omp parallel
我们可以在 openmp 任务 pragma 的 firstprivate 子句中指定一个 std::vector 对象吗? 是否可以将 vector 对象设为 firstprivate? 它编译和运
此问题特定于 OpenMP 3.0 中的任务构造及其对 C++ 的隐式 firstprivate 的使用。我正在寻找问题的解释以及可能的解决方案。 我正在处理的程序有一些段错误;我设法将问题简化为以下
假设我在一个对象中打包了一些资源,然后根据这些资源进行一些计算。我通常做的是初始化并行区域外的对象,然后使用firstprivte关键字 int main() { // initial
我看了官方的定义,但还是很困惑。 firstprivate: Specifies that each thread should have its own instance of a variable
我的任务是并行化此函数并使其比顺序运行时更快,但我尝试过的#pragma omp parallel for 语句似乎没有产生实质性效果。 除#pragma 语句外,此代码的顺序版本基本相同。我意识到代
我在英特尔 C++ 编译器上将 OpenMP 与 firstprivate 和 std::vector 结合使用时遇到问题。取下面三个函数: #include void pass_vector_by
我是一名优秀的程序员,十分优秀!