[фортран, windows] Какой компилятор поддерживает массивы больше 2гб?
Эээээ.... Никакой?
PS: Пояснение. Если адресное пространство в Виндах поделено как 2:2, то никакой. Если как 3:1, то может что-то и есть.
PS: Пояснение. Если адресное пространство в Виндах поделено как 2:2, то никакой. Если как 3:1, то может что-то и есть.
Я тут погуглил... Похоже в виндах можно это как-то переключить...
http://www.microsoft.com/resources/documentation/WindowsServ/2003/all/techref/en-us/Default.asp?url=/Resources/Documentation/windowsserv/2003/all/techref/en-us/W2K3TR_4GT_what.asp
http://www.microsoft.com/resources/documentation/WindowsServ/2003/all/techref/en-us/Default.asp?url=/Resources/Documentation/windowsserv/2003/all/techref/en-us/W2K3TR_4GT_what.asp
если не подводит память - то можно переключить на серверной версии виндов
и может даже только начиная с версии адвансед сервера.
и может даже только начиная с версии адвансед сервера.
А если 64-битная ось - разве тоже 2 гига максимум?
А если 64-битная ось, то это пока не Windows (см. subj).
P.S. Про итаниум знаю
P.S. Про итаниум знаю

А если 64-битная ось, то это пока не WindowsА АМД64 уже не считаются?
И версии виндов под них есть...
Где?
На сайте Микрософта написано, что
На сайте Микрософта написано, что
Windows Server 2003 x64 is currently under development, with delivery scheduled for the first half of 2005.
Win xp 64 beta - в сетке вроде уже появлялась.
А разве не 4 Гб адресное пространство XP?
А куда ось девается? У тебя на видюхе сколько памяти? Куда она отображается? В общем адресное пространство делится между ядром и процессом.
Не гнать!
У процесса виртуальное адресное пространство, а у видеокарты физические адреса, ничего общего кроме 4Gb
. Конечно процессу нужно несколько страниц для общения с ОС, но не более того.
У процесса виртуальное адресное пространство, а у видеокарты физические адреса, ничего общего кроме 4Gb
. Конечно процессу нужно несколько страниц для общения с ОС, но не более того.А ты думаешь что процесс когда пишет в видеопямять напрямую(directx, dga,... делает это через ОС? Нет, видеопамять отображается в адресное пространство процесса.
Зачастую и через ОС. Иногда действительно отображается. Как это мешает в другое иногда иметь массив 4 Gb? Ну ладно, 3.5 

О боже мой
Ну вот есть драйвер(работающий в режиме ядра) видеокарты. Ему для работы нужно иметь доступ к видеопамяти. Для этого ее нужно отобразить. В адресное пространство ядра.
Ну вот есть драйвер(работающий в режиме ядра) видеокарты. Ему для работы нужно иметь доступ к видеопамяти. Для этого ее нужно отобразить. В адресное пространство ядра.3.5G - теоретически можно, по крайней мере для Linux был (есть?) патч, чтобы все 4G мог использовать userspace.
Но всё равно ведь мало, и я не вижу причин, почему бы компилятору Фортрана не разбивать мега-массивы на сегменты,
которые отображать по очереди.
Но всё равно ведь мало, и я не вижу причин, почему бы компилятору Фортрана не разбивать мега-массивы на сегменты,
которые отображать по очереди.
Я слышал что можно делать 3 к 1. Про все - не слышал. А куда в этом случае ядро кладется? Или процесс может и код ядра модифицировать?
PS: но все равно это не совместимо с бинарными дровами.
PS: но все равно это не совместимо с бинарными дровами.
> компилятору Фортрана не разбивать мега-массивы на сегменты
Тормоза резко подскакивают при сегментной адресации.
также не понятно, где держать массивы, которые сейчас не отображены в память
ps
в конечном счете - это все-таки должна быть забота не компилятора, а внешних библиотек.
Тормоза резко подскакивают при сегментной адресации.
также не понятно, где держать массивы, которые сейчас не отображены в память
ps
в конечном счете - это все-таки должна быть забота не компилятора, а внешних библиотек.
В конечном счёте --- это забота человека.
Какая разница, если система всё равно будет подкачивать память с диска?
---
...Я работаю антинаучным аферистом...
Какая разница, если система всё равно будет подкачивать память с диска?
---
...Я работаю антинаучным аферистом...
> Тормоза резко подскакивают при сегментной адресации.
А кому легко? Всё же лучше, чем вообще без массивов.
btw, "сегменты" - это просто куски, ничего общего с сегментными регистрами x86 не обязанные иметь
> также не понятно, где держать массивы, которые сейчас не отображены в память
не отображены в адресное пространство процесса, но могут быть в памяти, если таковой достаточно (PAE36
или просто памяти 4G, а адресного пространства доступно 2G.
> в конечном счете - это все-таки должна быть забота не компилятора, а внешних библиотек.
Как библиотека перехватит операцию типа A[i] := b, чтобы подгрузить сегмент, содержащий A[i]?
Это дело компилятора и рантайма к нему.
А кому легко? Всё же лучше, чем вообще без массивов.
btw, "сегменты" - это просто куски, ничего общего с сегментными регистрами x86 не обязанные иметь
> также не понятно, где держать массивы, которые сейчас не отображены в память
не отображены в адресное пространство процесса, но могут быть в памяти, если таковой достаточно (PAE36
или просто памяти 4G, а адресного пространства доступно 2G.
> в конечном счете - это все-таки должна быть забота не компилятора, а внешних библиотек.
Как библиотека перехватит операцию типа A[i] := b, чтобы подгрузить сегмент, содержащий A[i]?
Это дело компилятора и рантайма к нему.
"Более двух" не означает "более четырёх."
---
...Я работаю антинаучным аферистом...
---
...Я работаю антинаучным аферистом...
Ну если сегодня не хватает двух, то очень может быть, что завтра не хватит четырёх.
А то и сегодня вечером.
А то и сегодня вечером.
Но это уже другая задача, отличающаяся от поставленной.
---
...Я работаю антинаучным аферистом...
---
...Я работаю антинаучным аферистом...
Это частный случай поставленной задачи.
Нигде не сказано, что 4G хватит точно.
А если бы и было сказано, то я в общем-то не нанимался решать именно поставленную задачу.
Нигде не сказано, что 4G хватит точно.
А если бы и было сказано, то я в общем-то не нанимался решать именно поставленную задачу.
Я слышал что можно делать 3 к 1. Про все - не слышал. А куда в этом случае ядро кладется? Или процесс может и код ядра модифицировать?Да-да! Я тоже хочу услышать ответ на поставленный вопрос. Что за такой "волшебный патч к Linux"?
Называется "4:4 split" или вроде того.
При входе в контекст ядра весь VM переключается полностью.
Медленно, говорят, (два tlb flush на сисколл но кому-то помогает.
При входе в контекст ядра весь VM переключается полностью.
Медленно, говорят, (два tlb flush на сисколл но кому-то помогает.
Вспомнил, кому помогает.
Это было придумано для того, чтобы дать ядру целых 4G lowmem,
для поддержки 32G и более памяти с PAE36. Обычно на таких конфигурациях
хронически не хватает памяти в lowmem-зоне, так как всё занимают структуры,
управляющие остальной памятью.
Сейчас, кажется, уже не актуально - научились хранить почти все структуры в highmem.
Это было придумано для того, чтобы дать ядру целых 4G lowmem,
для поддержки 32G и более памяти с PAE36. Обычно на таких конфигурациях
хронически не хватает памяти в lowmem-зоне, так как всё занимают структуры,
управляющие остальной памятью.
Сейчас, кажется, уже не актуально - научились хранить почти все структуры в highmem.
Оставить комментарий
stm7870384
Какой компилятор фортрана для винды поддерживает размер массивов более 2 Гб? <><>