小编Mik*_*her的帖子

并行调用 OpenMP 函数

我正在寻找一种并行调用函数的方法。

例如,如果我有 4 个线程,我希望每个线程都使用自己的线程 ID 作为参数调用相同的函数。

由于这个论点,没有线程可以处理相同的数据。

#pragma omp parallel
{
    for(int p = 0; p < numberOfThreads; p++)
    {
        if(p == omp_get_thread_num())
            parDF(p);
    }
}
Run Code Online (Sandbox Code Playgroud)

线程 0 应该运行 parDF(0)

线程 1 应该运行 parDF(1)

线程 2 应该运行 parDF(2)

线程 3 应该运行 parDF(3)

所有这些都应该同时完成......

这(显然)不起作用,但是进行并行函数调用的正确方法是什么?

编辑:实际代码(这可能是太多信息......但它被要求......)

从调用 parDF() 的函数:

omp_set_num_threads(NUM_THREADS);
#pragma omp parallel
{

    numberOfThreads = omp_get_num_threads();
    //split nodeQueue
    #pragma omp master
    {
        splitNodeQueue(numberOfThreads);
    }
    int tid = omp_get_thread_num();

    //printf("Hello World from thread = %d\n", tid);
    #pragma omp parallel for private(tid) …
Run Code Online (Sandbox Code Playgroud)

c++ openmp

3
推荐指数
2
解决办法
1万
查看次数

MPI_Finalize() 不结束任何进程

我正在使用 openMPI,而且我有一个奇怪的错误。

看来,即使在 MPI_Finalize() 之后,每个线程仍在运行。我遵循了一个简单的 Hello World 程序的指南,它看起来像这样:

#include <mpi.h>;

int main(int argc, char** argv) {

// Initialize the MPI environment
    MPI_Init(NULL, NULL);

// Get the number of processes
    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

// Get the rank of the process
    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);

// Get the name of the processor
    char processor_name[MPI_MAX_PROCESSOR_NAME];
    int name_len;
    MPI_Get_processor_name(processor_name, &name_len);

// Print off a hello world message
       printf("Hello world from processor %s, rank %d"
       " out of %d processors\n",
       processor_name, world_rank, world_size);

// …
Run Code Online (Sandbox Code Playgroud)

c parallel-processing mpi openmpi

3
推荐指数
1
解决办法
1万
查看次数

C++中的整数数组的列表<>?

我需要一个动态的整数数组列表.

我认为它可以声明为:

list<int[10]> myListOfArrays; 
Run Code Online (Sandbox Code Playgroud)

但这不起作用,编译器返回错误:

error: 'std::_list_node<_Tp>::_M_data' has incomplete type
error: invalid use of array with unspecified bounds
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

整数数组的大小不必是动态的,只需要列表的数量.

c++ arrays list

0
推荐指数
1
解决办法
1706
查看次数

标签 统计

c++ ×2

arrays ×1

c ×1

list ×1

mpi ×1

openmp ×1

openmpi ×1

parallel-processing ×1