इस कार्यक्रम के साथ नकल MacOSX शेर पर Illegal instruction: 4
और ifort (IFORT) के साथ दुर्घटनाओं 12.1.0 20111011कार्यक्रम दुर्घटना सरणी के लिए ifort
program foo
real, pointer :: a(:,:), b(:,:)
allocate(a(5400, 5400))
allocate(b(5400, 3600))
a=1.0
b(:, 1:3600) = a(:, 1:3600)
print *, a
print *, b
deallocate(a)
deallocate(b)
end program
एक ही कार्यक्रम gfortran साथ काम करता है। मुझे कोई समस्या नहीं दिख रही है। कोई विचार ? प्रतिलिपि को अनलॉक करना और कॉलम पर स्पष्ट लूप प्रदर्शन करना दोनों कंपाइलरों में काम करता है।
ध्यान दें कि पॉइंटर के बजाय आवंटनीय के साथ मुझे कोई समस्या नहीं है।
व्यवहार वही है यदि कथन या तो मॉड्यूल के अंदर है या नहीं। मैं (IFORT) 12.1.3 20120130.
जाहिर है, कोई समस्या नहीं लिनक्स के साथ और ifort 12.1.5
होता ifort पर एक ही व्यवहार की पुष्टि मैं निम्नलिखित जोड़ने विकल्पों के साथ ढेर आकार में वृद्धि करने की कोशिश की
ifort -Wl,-stack_size,0x40000000,-stack_addr,0xf0000000 test.f90
लेकिन मुझे अभी भी वही त्रुटि मिलती है। एक ही समस्या के लिए ulimit-s बढ़ रहा है।
संपादित करें 2: मैं कुछ और डिबगिंग किया था और जाहिरा तौर पर समस्या तब होता है जब सरणी स्प्लिसिंग आपरेशन
b(:, 1:3600) = a(:, 1:3600)
संदेह से 16 एम डेटा के लिए करीब एक मूल्य के शामिल है।
मैं उत्पादित ऑपकोड की तुलना कर रहा हूं, लेकिन अगर इंटरमीडिएट कोड फॉर्म देखने का कोई तरीका है जो अधिक संवादात्मक है, तो मैं खुशी से इसकी सराहना करता हूं।
मुझे मैक हिम तेंदुए पर 12.1.1.246 के साथ "अवैध निर्देश" भी मिलता है। मैं इंटेल फोरट्रान फोरम पर रिपोर्टिंग या बग रिपोर्ट जमा करने का सुझाव देता हूं। शायद यह 12.1.5 में तय है? –
और मैक हिम तेंदुए पर इसे ifort 12.0.3 के साथ मिलता है। शायद यह बग थोड़ी देर के लिए रहा है ... – EMiller
स्पष्ट रूप से, समस्या (कुछ) लिनक्स बक्से पर भी मौजूद है: CentOS 5.5 और ifort 12.1 पर कोड segfaults। –