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