Tôi đang sử dụng OpenMP để cải thiện hiệu quả chương trình của mình trên các vòng lặp.OpenMP: sử dụng có điều kiện #pragma
Nhưng gần đây tôi phát hiện ra rằng trên các vòng nhỏ, việc sử dụng thư viện này đã giảm hiệu suất và sử dụng cách thông thường tốt hơn.
Trong thực tế, tôi muốn sử dụng OpenMP chỉ khi một điều kiện được thỏa mãn, mã của tôi là
#pragma omp parallel for
for (unsigned i = 0; i < size; ++i)
do_some_stuff();
Nhưng những gì tôi muốn làm là để vô hiệu hóa #pragma nếu kích thước đủ nhỏ ví dụ:
if (size > OMP_MIN_VALUE)
#pragma omp parallel for
for (unsigned i = 0; i < size; ++i)
do_some_stuff();
nhưng không hoạt động, cách tốt hơn là viết vòng lặp hai lần nhưng tôi không muốn làm như vậy ...
if (size > OMP_MIN_VALUE)
{
#pragma omp parallel for
for (unsigned i = 0; i < size; ++i)
do_some_stuff();
}
else
{
for (unsigned i = 0; i < size; ++i)
do_some_stuff();
}
Cách tốt hơn để làm điều đó là gì?
Tôi đã sử dụng song song #pragma omp cho if (size> = OMP_MIN_VALUE) – Arthur