को संभाल नहीं सकता है मुझे 3 आयामों में लुकअप टेबल का उपयोग करने की आवश्यकता है। तालिका में 73x73x73 (38 9 017) डबल मान हैं।जीएचसी बड़ी लुकअप टेबल
module Hammer.Texture.Table3D where
import qualified Data.Vector as V
import qualified Data.Vector.Unboxed as U
import Data.Vector.Unboxed (Vector)
table3D :: V.Vector (V.Vector (Vector Double))
table3D = V.fromList [table0, table1, ... table72]
table0 = V.fromList $ map U.fromList [
[1.973921e+01, 0.000000e+00, ... 0.000000e+00],
.....
[1.973921e+01, 0.000000e+00, ... 0.000000e+00]]
.....
table72 = V.fromList $ map U.fromList [
[1.973921e+01, 0.000000e+00, ... 0.000000e+00],
.....
[1.973921e+01, 0.000000e+00, ... 0.000000e+00]]
समस्या यह है कि GHC वेक्टर डबल या [डबल] के इस आकार को संभाल नहीं सकता, GHC संकलन बहुत समय लेता है (~ 2 मिनट), जब तक, अंत में, स्मृति चल रही है। ऐसा लगता है कि जीएचसी या कुछ बग पर एक स्मृति रिसाव है क्योंकि यह बहुत बड़ी स्ट्रिंग ([चार]) के लिए ठीक काम करता है।
जीएचसी का उपयोग करके "बड़ी" लुकअप टेबल (डबल टाइप) बनाने के लिए कौन से समाधान, यदि कोई हैं, उपलब्ध हैं?
क्या आपने इसके बजाय 'Data.Array' या' Data.Array.Repa' जैसे सरणी का उपयोग करने का प्रयास किया है? ऐसा लगता है कि आपको एक निश्चित आकार के कंटेनर की आवश्यकता है, फिर एक वेक्टर –
तो ... यह एक तालिका की तरह पूरी तालिका के साथ 10 एमबी स्रोत फ़ाइल है, जैसे? आप ऐसा क्यों करेंगे? मुझे पूरा यकीन है कि रनटाइम पर ऐसे बड़े 'वेक्टर' उत्पन्न करने में कोई समस्या नहीं होगी, बाइनरी फ़ाइल से अधिक कुशलतापूर्वक पढ़ें। हालांकि मैं केवल स्रोत में डाल रहा हूं, 'आईओ' से आसानी से दूर रहने का एक अच्छा तरीका है। – leftaroundabout
यदि स्ट्रिंग के साथ ठीक चलता है ... हार्डकोड स्ट्रिंग क्यों नहीं (डबल्स नहीं)? (फिर निश्चित रूप से 'पढ़ा'), बदसूरत है लेकिन शायद ठीक चलाता है ... – josejuan