0

我的 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 数组的本地副本来设置和检索值。我怎样才能做到这一点?

4

0 回答 0