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