का उपयोग कर "अमान्य नियंत्रण भविष्यवाणी" संकलक त्रुटि C - determine if a number is prime पर आधारित, लेकिन मैं ओपनएमपी का उपयोग कर मूलभूत प्राइम नंबर चेकर बना रहा हूं।ओपनएमपी
int isPrime(int value)
{
omp_set_num_threads(4);
#pragma omp parallel for
for(int j = 2; j * j <= value; j++)
{
if (value % j == 0) return 0;
}
return value;
}
जब -fopenmp साथ संकलन, जीसीसी संस्करण 4.7.2 erroring है, पाश के लिए के संबंध में invalid controlling predicate
बताते हुए।
ऐसा लगता है कि यह त्रुटि लूप में जे वर्ग के कारण होती है। क्या कोई तरीका है कि मैं इसके आसपास काम कर सकता हूं और अभी भी एल्गोरिदम से वांछित आउटपुट प्राप्त कर सकता हूं?
क्या आप सुनिश्चित हैं कि खुले एमपी लूप निर्माण में वापसी कथन की अनुमति है? – alexbuisson
दुर्भाग्य से, ओपनएमपी के साथ लूप समानांतर परीक्षण परीक्षण के साथ एक ही प्राइम के परीक्षण के लिए मदद नहीं करेगा। हालांकि, आप परीक्षण प्रभाग का उपयोग करके कई प्राइम्स के परीक्षण के लिए प्रभावी ढंग से इसका उपयोग कर सकते हैं। हालांकि, primes की सूचियों को खोजने के लिए मैं Eratosthenes की चलनी की सलाह देते हैं। ओपनएमपी http://create.stephan-brumme.com/eratosthenes/ –
का उपयोग करके एक संस्करण यहां दिया गया है, इसके अलावा, आपके 'isPrime' फ़ंक्शन में मैं 'j * j/value' के बजाय 'j <= j/value' का उपयोग करने की अनुशंसा करता हूं। जो http://rosettacode.org/wiki/Primality_by_trial_division#C –