时间:2018-03-30 16:19:22

标签: c multithreading parallel-processing openmp parallel-for

我的C代码结构如下:

typedef struct
{
    double diam;
    double more_values;
    other_struct other_structures;
    ...
}ant_struct;

以及下面的静态声明:

static ant_struct ant[MAX_NUM_ANTENNAS];

我还有另一部分代码,它是天线性能的非线性优化的一部分。在该部分中,逻辑循环如下所示:

initialize_all_antennas();

for (int i = 0; i < num_vertices; i++)
{
    // set antenna parameters on the static structure array to bounded values 
        randomize_antenna();

    // Compute antenna performance by evaluating a cost function that has access to the antenna static information using a lot of ant__get_value() functions.
        computed_cost = compute_cost();

    // Set the cost function cost for each vertex
        vertex[i].cost = computed_cost;
}

我正在尝试并行化上述使用,并且已经学会了如何在其他场景中执行此操作。

#pragma omp parallel for

我发现你可以使用

创建静态变量
static __thread this_var

但是,我不确定我是否可以使用ant来执行此操作,因为它是一个数组,我似乎正在丢失天线结构中randomize_antenna()函数中未随机化的值的初始化。我希望每个线程都有自己的静态ant数组的本地副本来设置和检索值。我怎样才能做到这一点?

0 个答案:

没有答案