Робота з величезними масивами в fortran програмування


Якісь у Вас застарілі поняття про "титанічні"


Я розумію, що дослідники на сьогодні працюють і з терабайтами інформації :), але я просто говорив про «гігантському масиві» для Фортрана без застосування спеціальних методів.

Самостійно по своїх питаннях новачка мені вдалося визначити наступне:
1) Помилка, яка виникала при компіляції, виникала саме через те, що пам'ять виділялася при запуску програми «статично». Якщо виділяти її ж динамічно, то програма починає працювати.
2) В Windows XP 32bit є обмеження на виділення пам'яті для однієї програми: 2 ГБ. Його можна обійти, якщо при компіляції використовувати LARGEADDRESSAWARE (або після компіляції вбудувати цей параметр в EXE-файл). Також необхідно попросити Windows XP давати програмам 3 ГБ шляхом додавання параметра / 3GB в boot.ini.

Шляхом використання рішень з пунктів 1 і 2 вдалося запустити алгоритми, які потрібно.

3) У Windows XP 32bit і будь-який інший 32-бітної ОС неможливо використовувати більше 4 ГБ пам'яті для однієї програми. Тобто виходить, що якщо працювати з пам'яттю і намагатися виділяти більше 3 ГБ, то потрібно переходити на 64bit-ні ОС і компілятори.

Re: Робота з величезними масивами в Fortran


Я намагався реалізувати масиви на основі файлів, де кожен елемент масиву - окремий файл, але з цієї затії нічого не вийшло.

Необхідність кешування може вплинути і на вибір алгоритмів. Наприклад, градієнтні методи вирішення СЛР для звичайних матриць вважаються повільніше трикутних розкладів. Але для великих матриць вони простіше в реалізації і можуть бути швидше, тому що потрібно менше свопів.

Re: Робота з величезними масивами в Fortran


Дані функції я реалізовував, звичайно, в своєму сьогоднішньому «монстроподібні» алгоритмі виділення під кожен елемент одного файлу :). Підкажіть, будь ласка, чи не зустрічалися Ви з готовими бібліотеками, модулями або функціями, які реалізують подібне на Fortran?

Re: Робота з величезними масивами в Fortran

чи не зустрічалися Ви з готовими бібліотеками, модулями або функціями, які реалізують подібне на Fortran?

Ні, не зустрічався. І не впевнений, що такі універсальні бібліотеки існують. Зазвичай програми обробки матриць, що не поміщаються в пам'яті, дуже специфічні. Операції читання з матриці і записи в матрицю завжди виявляються "вузьким місцем" і оптимізуються для конкретного застосування.

Re: Робота з величезними масивами в Fortran

Re: Робота з величезними масивами в Fortran

Підкажіть, будь ласка, чи не зустрічалися Ви з готовими бібліотеками, модулями або функціями, які реалізують подібне на Fortran?

Ну, є така бібліотека HDF. Вона в общем-то універсальна, написана для роботи з файлами з великими масивами даних. У ній відносно нескладно (хоча треба звикнути звичайно) робляться всякі доступи по рядках, стовпцях, блоками.

Re: Робота з величезними масивами в Fortran

Дякую за інформацію про HDF!

Підкажіть, будь ласка, чи правильно я розумію, що якщо запустити додаток, скомпільований в Compaq Visual Fortran, в Windows XP 64bit, то воно запуститься як 32-бітове додаток? В Compaq Visual Fortran неможливо скомпілювати 64-бітове додаток, наскільки я розумію?

Якщо так, підкажіть, будь ласка, яким компілятором це можна зробити?

Re: Робота з величезними масивами в Fortran

Якщо так, підкажіть, будь ласка, яким компілятором це можна зробити?

Про Compaq нічого не знаю, підозрюю, що він 64 біта не підтримує. Так, 64 біта повинні поддердівать як система, так і компілятор.
Найкраще - Intel Fortran. Під виндой коштує грошей. Якщо не користуватися протизаконними методами.
Можна спробувати gcc (в якому є gfortran) наприклад звідси. Воно 64 біта підтримує.

Re: Робота з величезними масивами в Fortran

Перевірив на Windows XP 64bit, все вийшло з gfortran: тепер можна до 8 ТБ пам'яті використовувати :) (звичайно, це більше схоже на жарт, так як на звичайному PC ця пам'ять буде віртуальною, і обчислення йтимуть дуже довго, але в теорії рішення знайдено, і частково його можна використовувати на практиці).

Хто зараз на конференції

Зараз переглядають цей форум: Немає зареєстрованих користувачів

Ви не можете створювати нові теми у
Ви не можете відповідати на повідомлення
Ви не можете редагувати свої повідомлення
Ви не можете видалити свої повідомлення
Ви не можете додавати файли у цьому

Схожі статті