关于OpenMP的另一个问题...... 我试图加速使用OpenMP计算排序,但我的代码在1个线程上运行速度最快,并且因为我添加线程而慢下来...(我有4个内核)结果是正确的。 我只是并行计数器递增的循环,其余的是按顺序计算的(是吗?)这里我尝试通过原子操作进行递增。我还尝试了一个版本,其中每个线程都有自己的表"计数器"但它甚至更慢。
#pragma omp parallel for private(i) num_threads(4) default(none) shared(counters, table, possible_values, table_size)
for(i=0; i < table_size; i++){
#pragma omp atomic
counters[(int)(table[i]*100)]++;
}
表 - 包含未排序的值
possible_values - 100(我的数字从0到0.99)
table_size - 表的大小
我怎样才能加快速度?