OpenMp里设为firstPrivate的指针数组无法私有,仍是共享的,怎么回事呢?
以下是代码片段
bool **comMatrix;
int stemCount;
#pragma omp parallel num_threads(2) firstprivate(comMatrix,stemCount)
{
initInd(comMatrix,stemCount);
}
查看comMatrix的地址发现,两个线程中这个变量的地址是一样的,说明没有生成私有的comMatrix,
而stemCount的地址就不一样,说明每个线程各自生成了一个stemCountPa的副本。难道指针数据无法私有吗?请教各位!
bool **comMatrix;
int stemCount;
#pragma omp parallel num_threads(2) firstprivate(comMatrix,stemCount)
{
initInd(comMatrix,stemCount);
}
查看comMatrix的地址发现,两个线程中这个变量的地址是一样的,说明没有生成私有的comMatrix,
而stemCount的地址就不一样,说明每个线程各自生成了一个stemCountPa的副本。难道指针数据无法私有吗?请教各位!
...全文
相关推荐
OpenMP中文版教程
这本是OpenMP的中文版教程,很适合入门,我看了几个小时就会了,感觉挺简单的,当然要学深点的话还是要多多练习哟~
OpenMP:OpenMP的实践练习
OpenMP的实践练习 描述 “并行编程入门”课程的实际任务解决方案 主导课程: 用法 但是,所有示例都是一个文件。 用于编译C程序 gcc file_name.c -fopenmp -std=c99 对于运行程序,您需要使用C语言standart c99或更高版本。 对于编译的C ++程序,请运行 g++ file_name.cpp -fopenmp 使用gcc标志-o设置执行文件的名称
OpenMP用户手册(中文).docx
摘要:本教程涵盖了OpenMP 3.1的大多数主要功能,包括其用于指定并行区域,工作共享,同步和数据环境的各种结构和指令。还涵盖了运行时库函数和环境变量。本教程包括C和Fortran示例代码以及实验室练习。 本教程对于不熟悉OpenMP并行编程的人来说是理想的。需要对C或Fortran中的并行编程有基本的了解。对于通常不熟悉并行编程的用户,EC3500:并行计算简介中介绍的材料 将有所帮助。
OpenMP并行计算Fortran
英文资料,主要介绍了基于OpenMP,使用Fortran编写共享内存并行计算。 简单易懂。
OpenMP使用手册
这是一本OpenMP的使用手册,对初学并行计算的同学很有帮助


