मैं फाइल करने के लिए एक सरणी है, जहां मैं फ़ाइल इस तरह से खोल दिया लिखने के लिए कोशिश कर रहा हूँ:फोरट्रान मैं/हे: बड़े रिकॉर्ड निर्दिष्ट आकार
open(unit=20, FILE="output.txt", form='unformatted', access='direct', recl=sizeof(u))
यहाँ, u
एक सरणी है और sizeof(u)
+२७३००२५९२० है, जो ~ 2.5 जीबी है। जब मैं प्रोग्राम चलाता हूं, मुझे Fortran runtime error: RECL parameter is non-positive in OPEN statement
त्रुटि मिलती है, जिसका मेरा मानना है कि रिकॉर्ड आकार बहुत बड़ा है।
क्या इसे संभालने का कोई तरीका है? एक विकल्प एक से अधिक लिखने वाले कॉल में सरणी लिखना होगा जैसे प्रत्येक लेखन में रिकॉर्ड आकार 2.5 जीबी से छोटा है। लेकिन मैं सोच रहा हूं कि क्या मैं एक ही कॉल में पूरी सरणी लिख सकता हूं।
संपादित करें: u
double precision u(5,0:408,0:408,0:407)
घोषित किया गया है कार्यक्रम के रूप में gfortran -O3 -fopenmp -mcmodel=medium test.f
इस कार्यक्रम में कुछ OpenMP कोड नहीं है संकलित किया गया था, लेकिन फाइल आई/ओ अनुक्रमिक है।
gfortran वी 4.5.0, ओएस: OpenSUSE 11.3 पर 64 बिट AMD Opteron
आपकी मदद के लिए धन्यवाद।
बस इसे जोड़ने के लिए: 'sizeof' बाइट्स की संख्या देता है और 'recl' बाइट्स में जरूरी नहीं है, इसलिए' पूछताछ 'करने का उचित तरीका है। – steabert
@steabert इसके अलावा धन्यवाद, यह सही है। इसके लिए एक उदाहरण ओपी से कोड है, जो उदाहरण के लिए ifort के साथ तोड़ देगा - ifort मानता है कि recl तत्वों की संख्या के रूप में सरणी की लंबाई है, और बाइट्स की संख्या नहीं है। – milancurcic
मुझे अभी भी वही त्रुटि मिलती है। ऐसा लगता है क्योंकि 'recl' ले जाने वाला अधिकतम मान 2147483648 (2 जीबी) है। – jitihsk