我是并行编程和openmp世界的新手,所以这可能是一个徒劳的问题,但我真的无法对我正在经历的事情给出好的答案,所以我希望有人能够阐明就此事。
我想要实现的是为将处理以下并行部分的每个线程拥有一个动态分配的矩阵(整数)的私有副本,但是一旦执行流进入所述区域,对所谓私有矩阵的引用持有一个空值。
我不知道这个指令有什么限制吗?一维动态数组似乎一切正常。
代码片段如下...
#define n 10000
int **matrix;
#pragma omp threadprivate(matrix)
int main()
{
matrix = (int**) calloc(n, sizeof(int*));
for(i=0;i<n;i++) matrix[i] = (int*) calloc(n, sizeof(int));
AdjacencyMatrix(n, matrix);
...
/* Explicitly turn off dynamic threads */
omp_set_dynamic(0);
#pragma omp parallel
{
// From now on, matrix is NULL...
executor_p(matrix, n);
}
....