Fortran (Форум)
При спробі зібрати стару програму gfortran відійшов у вічний цикл. Після редукції тексту вдалося отримати 8 рядків компілятор, що вішають.
Перевірено на 6 та 7 версіях gfortrana. Та й на MINGW. Нічого не змінилося за зміни -std=
Хотів відписатися до багтрекера GCC, але там реєстрація закрита.
Стала сегфолт MPI-програма
Шляхетні дони, пробачу поради з наступного питання: є кластер від SGI, на якому крутиться якийсь модифікований SLES. Є самописана програма, яка використовує fftw і mpi (розраховується дифракція при проходженні світла через телескоп).
Програма успішно працювала (майже цілий рік), але відносно недавно SLES проапгрейдили. Я не впевнений, що саме це є причиною, але здається особисто жодних інших змін не вносив у вихідний код. Сама прога на фортані.
Зараз вона сегфолтиться на дуже простому місці, типу
Спочатку вона компілювалася за допомогою ifort 15, як mpi використовувалася mpt/2.12 (реалізація mpi від SGI).
Пробував знижувати -O, різні комбінації версій компілятора та mpt. Ефект той самий.
Прога успішно працює на іншому комп'ютері простіше з gfortran/openmpi. Але саме їх на кластері немає. Хто що порадить? Як виявити джерело проблеми?
Буду вдячний за поради.
Чому пише що немає такого? : gfortran graphics.lib FGRAPH.FI FGRAPH.FD
В інтернеті написано що ця бібліотека стандартна у фортран пакеті, але при копіляції помилка:
Підсвічування синтаксису Fortran
Будь ласка, додайте підсвічування синтаксису мови Fortran у тезі [code]. Використовуваний highlight.js його підтримує за допомогою або «fortran».
maxcom
Fortran 2003: user-defined io у GCC
Як відомо, у GCC-7.1.0 з'явилася підтримка "user-defined io" стандарту Fortran 2003. На сайті Intel є кілька прикладів. З більшістю з яких все зрозуміло, і вони навіть збираються gfortran-7.3.0 і працюють.
Проблема спостерігається з третім прикладом:
, або замість «B = 0» може бути довільне число, тобто немов «B» залишилася неініціалізованою.
Якщо у вхідному файлі замість рядка "/B = 200" залишити лише "B = 200" і додати в кінці порожній рядок, тоді у виводі буде "B = 200".
Але цікавить початковий варіант вхідного файлу (якщо він правильний, звісно).
Чи є хтось, з тих у кого є intel fortran compiler (2016 і новіший, здається), перевірити що виводить приклад у результаті відпрацювання? І головне, як цей приклад взагалі працює? Поки що я це не дуже розумію. Тобто, наприклад, не зовсім зрозуміло, як він зчитує значення «20» і «30» вдруге і куди? І куди він зчитує решту тексту чи там у вхідних даних уже якийсь стандартний «текстовий шаблон» убитий і він його підставляє? Якщо щось у «текстових рядках» змінити, то під час виконання приклад впаде. А якщо змінити значення «X» і «Y», то вони ні на що не впливають (на висновок, тобто немовби вони і не потрібні).
Плагіни в CodeBlocks для розробки на Fortran
У зв'язку з тим, що в Gentoo оновили Code::Blocks до версії 17.12 і там був доданий USE-прапор "fortran", що активує збірку FortraProject plugin окремо від інших "contrib" плагінів (якщо цей плагін є ще в якомусь дистрибутиві linux, буду радий про це дізнатися), то я хотів би уточнити досвідчених розробників на Фортрані, які основні плагіни Code::Blocks ви використовуєте в процесі розробки?
В першучерга приходить думка про SmartIndent (Fortran). Наскільки актуальними є у використанні інші, наприклад, Doxygen? Запитую тому, що на основі побіжного погляду мені здалося, що найбільша частина цих плагінів потрібна для розробки на C++.
Fortran виведення з файлу
Як просто надрукувати на екрані вміст файлу?
Не подужав компіляцію fortran-проекту на федорі
Є одна пара британських вчених, яка випустила друге видання книги з прикладами коду. Писав код виключно для книги, підтримувати його вони не збираються. Спроба скомпілювати звернулася болем: встановлення додаткових либ, шаманство з коліями, баги федори. SCons якось мізерний на документацію (або це в мене проблеми), тому потрібна слушна порада: як це все зібрати.
Fortran String до Array of Int
Є рядок з = «[23,87,43,987,1,543]»
треба її перетворити на масив цілих чисел.
Як це можна зробити у фортані?
Яка максимальна довжина аргументів (довжина рядка аргументів) при виклику прогами з командного рядка віндовз?
Fortran: Char to Int
Не можу зрозуміти як перетворити рядок «113» на ціле число 113
Отримую через get_command_argument отримую аргумент командного рядка і мені треба його в інтеджер перетворити
для випадку, коли cmd_arg=«113» мені повертає число 49
Fortran Python
Є крута прога для інженерних розрахунків, ця прога видає великий файл (близько 200Гб, а то й пару терабайт) з результатами (бінарник).
Ця прога має API для роботи з файлами результатів. На Фортрані.
Є сучасна прога на Пітоні, яка має опрацювати всі результати та видати свої результати для результатів.
Коротше, треба якось із пітона викликати фортан.
Я вигадав фортраном витягувати результати в бінарник і потім працювати з ними. Ось
Вважати масив з бінарного файлу
Є код на фортані, він створює бінарний файл, в якому міститься двовимірний масив із реальних значень.
Потрібно вважати цей файл пітоном і завантажити цей масив у пам'ять програми на пітоні. А краще кожен елемент масиву послідовно завантажувати та обробляти у пітоні.
Можу додатково виводити розмір файлу в бінарний файл.
Як це можна зробити?
Fortran дивно складає числа
Є великий і довгий код, а в ньому фрагмент:
Останній рядок видає наступне: -4.47171865E+010 4.45362655E+010 1.80922022E+008 -1.04464889E+003 7.98239194E-006
Тобто сума набагато менша за одну. Якщо ті ж числа скласти окремо, використовуючи той же компілятор, то в сумі виходить 6.51351074E+002. Що, ясна річ, і є правильна відповідь. Перевіряв gdb, дійсно t1, t2, t3, t4 рівні тому, чому й мають бути рівні, а сума їх і справді менше одного. Як таке у принципі можливе? Чому та сама сума, порахована у різних місцях, дорівнює різним числам? Я вже навіть не уявляю, куди дивитись у пошуках помилки.
n-dimensional arrays: column-major -> row-major offset
Є N-мірний масив розміщений у пам'яті у вигляді вектора в порядку column-major (наприклад, з фортрану або там матлаба).
Якщо відомі розмірності цього N-вимірного масиву та зміщення в ньому, яка формула для конвертування в row-major зміщення (як у Сі)?
Чи є на ЛОР користувачі цього дива? Якщо є, де вони беруть описи матеріалів?
Документація до мов програмування
Різні підручники та книги - це добре, але зазвичай їх пропонують купити і часто неДуже дешево, навіть якщо вони описують базовий рівень. Безкоштовним рішенням очевидно є офіційна документація. Коли я відкрив документацію до python, я був приємно вражений, що вона написана практично як підручник. Для Java начебто теж все відносно непогано в цьому плані, хоча хотілося б окремий офлайновий pdf.
Ні, це не тред «підкажіть книгу по Сям», таких для початківців я і сам можу гору порадити.
Питання наступне: чи існує нормальна доступна безкоштовна документація, за якою можна вивчати C, C++? Офіційна документація з інших мов була б також цікавою.
C, C++Online-ресурси та навчальні посібники для початківців: