-
- Дайте-ка ещё вопросов подкину. Сколько может зааллокатить 32-битное приложение под 64-битной системой? А если поставить нормальную систему, в смысле wine, там все 4 будут доступны? Николай Коровин(215 знак., 17.08.2016 10:36)
- Этот вопрос уже поднимался и ответ на него в интернете был найден - см. ссылку. Ксения(683 знак., 17.08.2016 14:52, ссылка)
- Флажок только в заголовке EXE не забудьте поставить, который /LARGEADDRESSAWARE. Ну и убедитесь, что ваш malloc умеет столько выделять. В OpenWatcom 1.9 malloc не умеет больше 2GB выделять, хоть тресни. - LightElf(17.08.2016 15:50)
- Флажок я ставить не умею :), а запрос на выделение памяти делаю средствами API операционной системы, а не языковыми средствами конкретных компиляторов. - Ксения(17.08.2016 17:23)
- Не прибедняйтесь :) Маска 0x20 на выделенный байт, на рисунке уже наложена. LightElf(17.08.2016 19:01)
- Не вижу я на вашем рисунке маски 0x20, а с MZ все экзешники начинаются. - Ксения(17.08.2016 19:19)
- Не прибедняйтесь :) Маска 0x20 на выделенный байт, на рисунке уже наложена. LightElf(17.08.2016 19:01)
- Флажок я ставить не умею :), а запрос на выделение памяти делаю средствами API операционной системы, а не языковыми средствами конкретных компиляторов. - Ксения(17.08.2016 17:23)
- Флажок только в заголовке EXE не забудьте поставить, который /LARGEADDRESSAWARE. Ну и убедитесь, что ваш malloc умеет столько выделять. В OpenWatcom 1.9 malloc не умеет больше 2GB выделять, хоть тресни. - LightElf(17.08.2016 15:50)
- Тоже менее 4Гбайт. - fk0(17.08.2016 11:15)
- Этот вопрос уже поднимался и ответ на него в интернете был найден - см. ссылку. Ксения(683 знак., 17.08.2016 14:52, ссылка)
- Почему этот топик ПОСТОЯННО РАСПАХИВАЕТСЯ у меня, я его постоянно сворачиваю... =(( - sav6622(16.08.2016 11:02)
- Памяти не хватает :)) - MBedder(16.08.2016 19:56)
- Память не той фирмы :) - scorpion(18.08.2016 00:22)
- Шо характерно. Программа на Паскале, способная решить эту задачу, займёт места приблизительно впятеро меньше, чем этот топик :-) - Крок(16.08.2016 11:08)
- Пытался поначалу читать, потом понял, что не в решение цель... - sav6622(16.08.2016 11:28)
- Охотно верю. Если знать, как выпросить у Windows эту память, то для реализации потребуется не более 10-ти строк на любом языке программирования. Т.е. это не проблема программирования, а вопрос на знание возможностей операционной системы. - Ксения(16.08.2016 11:13)
- "Знание возможностей ОС" как правило чревато проблемами при переносе программы с компа на комп. - Крок(16.08.2016 11:30)
- Программа не на тиражирование - достаточно будет, если заработает на машине заказчика, к которой у меня будет доступ. Ксения(178 знак., 16.08.2016 12:19)
- "Знание возможностей ОС" как правило чревато проблемами при переносе программы с компа на комп. - Крок(16.08.2016 11:30)
- Потому что он - ... животрепещущий! :) - Ксения(16.08.2016 11:07)
- Памяти не хватает :)) - MBedder(16.08.2016 19:56)
- Если Вам нужно именно такое решение, что называется в лоб, то может сразу использовать для хранения данных не массив в памяти, а файл на диске? Все равно Вы уже согласны использование свопа на диске, плюс исходные данные в файле, те уже ограничены Nikolay801_(24 знак., 16.08.2016 10:32)
- Я свопа уже не хочу :). После того, как мне дали ссылку (=>), где сказано: Ксения(950 знак., 16.08.2016 11:00 - 11:03, ссылка)
- Так все же, чего удалось добиться в реальном коде? - Evgeny_CD(16.08.2016 01:57)
- "... Когда вы запускаете утилиту Testlimit с параметром -s, она начинает занимать участки виртуальной памяти pagefile-backed до тех пор, пока не достигнет предела для выделенной памяти, но даже когда объем выделенной памяти превысит 29 Гб..." man(157 знак., 15.08.2016 08:09, )
- Ага, 5.65 Гб мегов дала! И это при объеме физической памяти 2 Гб. Причем, первому же процессу, а следующим ничего не дала. А за ссылочку особое спасибо - как раз та информация, что была нужна. - Ксения(15.08.2016 09:19 - 09:38)
- Угу. Под вайном 4 с хвостиком гига - озу тоже 2 гб - symbions(15.08.2016 18:54)
- Ага, 5.65 Гб мегов дала! И это при объеме физической памяти 2 Гб. Причем, первому же процессу, а следующим ничего не дала. А за ссылочку особое спасибо - как раз та информация, что была нужна. - Ксения(15.08.2016 09:19 - 09:38)
- Помнится, будучи школоло, на КВасике делал своп на рамдрайв %) Тупо в файле свой хлам хранил, а файл клал на рамдрайв во втором мегабайте (из двух всего). Граница 64 была успешно преодолена %) А если серьёзно... Николай Коровин(1444 знак., 14.08.2016 20:18 - 20:32)
- Мой вопрос был чисто программистский - о возможности аллокирования максимально большого блока памяти. Причем, я заранее согласилась на виртуальную память, с дисковой поддержкой. Нельзя аллокировать 3.5 Гб? - Подскажите, как можно аллокировать 3 Ксения(724 знак., 14.08.2016 21:37 - 21:41)
- Молодая, совсем ещё зелёная муха, жужжит напряжно, и долбится головой в стекло. =AlexD=(571 знак., 15.08.2016 10:59)
- ...это не делает её вопрос менее правильным -- ну, после того, как она его вдогонку дообъяснила. Суть не в том, как ей реорганизовать рабкряк, а как работает ипанутая аллокация в мастдае. Это в любом случае всем нам полезный вопрос. - Николай Коровин(15.08.2016 14:41)
- Нет, вопрос это совершенно неправильный, поскольку ответ на него уведёт в совершеннейшие дебри бесконечно далеко от начальной задачи. =AlexD=(282 знак., 15.08.2016 20:02)
- Вопрос о том, как это работает в Мастдае, уже выдаёт смелого человека. У людей попроще, вроде меня, попытка разобраться вызывала истерику и недельный запой. - Крок(15.08.2016 15:43)
- +100500 - De_User(15.08.2016 20:33)
- ...это не делает её вопрос менее правильным -- ну, после того, как она его вдогонку дообъяснила. Суть не в том, как ей реорганизовать рабкряк, а как работает ипанутая аллокация в мастдае. Это в любом случае всем нам полезный вопрос. - Николай Коровин(15.08.2016 14:41)
- Да сколько бы ни было физической памяти, граница от этого не зависит, своп автоматом добавляется вроде. Если разбить задачу на 4 приложения с гигабайтом каждое -- как миленькие запустятся. Так что вопрос надо было формулировать именно про средства Николай Коровин(153 знак., 14.08.2016 22:28)
- -> - Evgeny_CD(14.08.2016 22:35, ссылка)
- Вот же человек-Симпсоны :) Всё уже было в "Симпсонах"... %) - Николай Коровин(15.08.2016 11:02)
- -> - Evgeny_CD(14.08.2016 22:35, ссылка)
- Вы не сказали, какая у вас ОС. Для XP/2003 есть ключик в boot.ini называется /3GB. Точный синтаксис гуглится быстро. В семерке тоже есть такой ключик,но лежит где-то в других местах. Расширит виртуальное пространство процесса до 3GB. Думаю Lightelf(173 знак., 14.08.2016 21:46)
- Про ключик знаю. Странно другое - почему Win XP с памятью 2 Гб отдает блок 1.83 (т.е. дает очень приличное соотношение 2.00:1.83). Тогда как с памятью 4 Гб отдает лишь 1.73 Гб (совсем неприличное соотношение 4.00:1.83). Разницу между 1.83 и 1.73 Ксения(270 знак., 15.08.2016 02:19)
- Аллокируйте 1ГБ. И пишите свою программу под 1ГБ. Программа должна работать на любом компьютере. Ale3000(185 знак., 15.08.2016 07:33)
- Дык, 3 GB для программы тоже будет мало. Т.е. 32-битную ОС проехали, по этой части вопрос решен - переходим на 64-битную ОС. Но почему-то и она не хочет отдавать память свыше 2 GB, хотя в наличии 4 GB (машину с большим объемом памяти мне пока Ксения(19 знак., 16.08.2016 19:43)
- Для 32-битных процессов винда выделяет не более 2 ГБ. Поэтому и делают 64-битные версии серьёзных программных продуктов (КОМПАС, CorelDRAW и т.п). - FDA(17.08.2016 09:47)
- Кол-во установленной RAM на компьютере не имеет к этому никакого отношения. Вы программу компилируете как 64-битную ? - Ale3000(17.08.2016 04:00)
- -> - kaf1(16.08.2016 21:36, ссылка)
- +1 symbions(31 знак., 17.08.2016 19:43)
- Кстати, отличная защита от копирования получится :) - asd(16.08.2016 15:27, )
- Дык, 3 GB для программы тоже будет мало. Т.е. 32-битную ОС проехали, по этой части вопрос решен - переходим на 64-битную ОС. Но почему-то и она не хочет отдавать память свыше 2 GB, хотя в наличии 4 GB (машину с большим объемом памяти мне пока Ксения(19 знак., 16.08.2016 19:43)
- Аллокируйте 1ГБ. И пишите свою программу под 1ГБ. Программа должна работать на любом компьютере. Ale3000(185 знак., 15.08.2016 07:33)
- Про ключик знаю. Странно другое - почему Win XP с памятью 2 Гб отдает блок 1.83 (т.е. дает очень приличное соотношение 2.00:1.83). Тогда как с памятью 4 Гб отдает лишь 1.73 Гб (совсем неприличное соотношение 4.00:1.83). Разницу между 1.83 и 1.73 Ксения(270 знак., 15.08.2016 02:19)
- Молодая, совсем ещё зелёная муха, жужжит напряжно, и долбится головой в стекло. =AlexD=(571 знак., 15.08.2016 10:59)
- Мой вопрос был чисто программистский - о возможности аллокирования максимально большого блока памяти. Причем, я заранее согласилась на виртуальную память, с дисковой поддержкой. Нельзя аллокировать 3.5 Гб? - Подскажите, как можно аллокировать 3 Ксения(724 знак., 14.08.2016 21:37 - 21:41)
- А входные данные они насколько велики? Если все гигабайты счетчиков разбить на участки и за один проход входного файла заполнить элементы от 0 до 999 (образно), сбросить на диск в файл в нужном месте, на втором проходе заполнить счетчики от 1000 1111111(447 знак., 14.08.2016 18:03)
- Почитал обсуждения - и всплыл уточняющий вопрос - может всё окажется и проще :) symbions(401 знак., 13.08.2016 23:20)
- Девушка стройна - мы скажем: мощи! - Крок(14.08.2016 00:20)
- баян! - SciFi(13.08.2016 23:21, ссылка)
- Угу. Но вот если у заказчика версия с 640к - то покупка нового ПК всё только усложнит symbions(58 знак., 14.08.2016 15:01 - 23:21)
- только счас заметил, что фраза начинается прямо как в анекдоте про свечку, монашку и поручика Ржевского LordN(5 знак., 12.08.2016 18:26)
- Есть решение! Идеи следующие. Evgeny_CD(574 знак., 12.08.2016 15:21)
- Зачем так сложно? Отчего бы не расширить рабочее пространство процесса с помощью функции SetProcessWorkingSetSize(GetCurrentProcess(), dwMin, dwMax); - Ксения(12.08.2016 18:49)
- Вы опять ничего не поняли. Вы не можете использовать больше 2G виртуальной памяти. Никак. В принципе. Никакой функцией. Без исключений. Всегда. Точно-точно. Совсем. =AlexD=(84 знак., 13.08.2016 16:10)
- Непрерывным куском -- не может. А вообще может. - fk0(13.08.2016 17:22)
- Не смущай незрелый разум. - =AlexD=(13.08.2016 18:16)
- А почему именно 2 GB, а не 2 с половиной и не 2 с четвертью? Откуда это ограничение, если пямяти в машине 4 GB? В случае жесткого диска я причину такого ограничения понимаю - это ограничение файловой системы NTFS/MBR. Но на работу с памятью это не Ксения(103 знак., 13.08.2016 16:56 - 17:03)
- Так решили афторы ОСи. Прими это как данность. Просто смирись. Судьба. - =AlexD=(13.08.2016 18:15)
- О господи. "640k ought to be enough for anybody". - SciFi(13.08.2016 17:00)
- Непрерывным куском -- не может. А вообще может. - fk0(13.08.2016 17:22)
- Господа, вы звери ©. Задачку, решаемую в 30 строк Паскаля, вы раздувате до квартального отчета. - Крок(12.08.2016 19:52)
- Вы опять ничего не поняли. Вы не можете использовать больше 2G виртуальной памяти. Никак. В принципе. Никакой функцией. Без исключений. Всегда. Точно-точно. Совсем. =AlexD=(84 знак., 13.08.2016 16:10)
- да в любом случае, если не перестроить алгоритм так, чтобы он работал с ограниченным участком памяти, то программа будет "исполнятся из памяти винчестера". а значит при беготне по адресам памяти винт будет шуршать часами. Mahagam(382 знак., 12.08.2016 16:16)
- А что, у SSD на порядки больше скорости линейной чтения-записи больших кусков? blackprapor(66 знак., 12.08.2016 15:27)
- Для PCIe SSD - скорость линейного чтения будет 5-8 раз больше. Если у Ксении старая мамка, без M.2 PCIe, то пойдет вот такой вариант -> Я живу на таком (без доп платы, в мамке). Ощущания словами не передать. Он для мамки как sata ahci, проблем с Evgeny_CD(120 знак., 12.08.2016 16:58, ссылка)
- Ну и где там 5-8 раз, не вижу? blackprapor(745 знак., 12.08.2016 17:10)
- чтение: 1400 Мбайт/сек, запись: 600 Мбайт/сек. -> Я сам не измерял, но субъективно работает сильно быстрее (например, при копировании больших .iso) серверного SSD Intel с интерфейсом SATA - Evgeny_CD(12.08.2016 17:18, ссылка)
- мегабайт в секунду МБ/с blackprapor(24 знак., 12.08.2016 17:23)
- чтение: 1400 Мбайт/сек, запись: 600 Мбайт/сек. -> Я сам не измерял, но субъективно работает сильно быстрее (например, при копировании больших .iso) серверного SSD Intel с интерфейсом SATA - Evgeny_CD(12.08.2016 17:18, ссылка)
- Ну и где там 5-8 раз, не вижу? blackprapor(745 знак., 12.08.2016 17:10)
- Подозреваю что размер "куска" там равен размеру страницы, а они не очень большие, а во вторых при почти случайном доступе важнее становится скорость доступа, а не скорость потокового чтения. - =AlexD=(12.08.2016 15:43)
- Для PCIe SSD - скорость линейного чтения будет 5-8 раз больше. Если у Ксении старая мамка, без M.2 PCIe, то пойдет вот такой вариант -> Я живу на таком (без доп платы, в мамке). Ощущания словами не передать. Он для мамки как sata ahci, проблем с Evgeny_CD(120 знак., 12.08.2016 16:58, ссылка)
- Идея возникла после поста -> - Evgeny_CD(12.08.2016 15:24, ссылка)
- Зачем так сложно? Отчего бы не расширить рабочее пространство процесса с помощью функции SetProcessWorkingSetSize(GetCurrentProcess(), dwMin, dwMax); - Ксения(12.08.2016 18:49)
- Упрощаю вопрос. На картинке информация, которую сообщает farmanager (Ctrl+L) на моей WinXP c 2 GB оперативной памяти. Вижу, что у нее 3.767 GB Free Virtual Memory (Free!). Как мне ИЗ НЕЕ аллокировать нужные мне 3.5 GB? - Ксения(12.08.2016 03:05, картинка)
- О, Ксения фанат FAR :) -> решение. - Evgeny_CD(12.08.2016 17:00, ссылка)
- Я тоже на FAR сижу. И дело не в фанатизме, а не встречал ничего удобнее. И основной момент - поддержка консоли. И не надо сейчас развозить холивар консоль vs GUI. - Dingo(13.08.2016 08:47)
- Нортон командер удобней. - Крок(13.08.2016 09:02)
- С трудом с DosNavigator слазил.. Это как с PCAD 4.5 на 2000 :) - -AB-(13.08.2016 10:35)
- Нортон командер удобней. - Крок(13.08.2016 09:02)
- Я тоже на FAR сижу. И дело не в фанатизме, а не встречал ничего удобнее. И основной момент - поддержка консоли. И не надо сейчас развозить холивар консоль vs GUI. - Dingo(13.08.2016 08:47)
- 3.767 GB Free Virtual Memory - это для всех приложений, для одного приложения больше 2G выделить не получится. Переходи на Win7 64 сто раз тебе сказали. - =AlexD=(12.08.2016 07:44)
- Создать на рамдиске файл. И мапить его в память кусочками (банками) маленького размера. - fk0(12.08.2016 11:20)
- Хорошо. saifullin2(133 знак., 13.08.2016 06:38)
- Не понял вопроса. Зачем выделять больше 3Гб? Реально толстые БД могут обойтись сотней мегабайт. Гораздо больше нужно на дисковый кеш. Честно говоря не знаю, как оно в PAE-ядрах с этим, наверное как-то решается. - fk0(13.08.2016 11:50)
- Возьмём для примера ebay.com. saifullin2(247 знак., 13.08.2016 12:13)
- Не понял вопроса. Зачем выделять больше 3Гб? Реально толстые БД могут обойтись сотней мегабайт. Гораздо больше нужно на дисковый кеш. Честно говоря не знаю, как оно в PAE-ядрах с этим, наверное как-то решается. - fk0(13.08.2016 11:50)
- Хорошо. saifullin2(133 знак., 13.08.2016 06:38)
- Создать на рамдиске файл. И мапить его в память кусочками (банками) маленького размера. - fk0(12.08.2016 11:20)
- Пытались установить файл подкачки ,положим, 5ГБ? saifullin2(54 знак., 12.08.2016 05:47, ссылка)
- Проблему не решило, но идея хорошая. Спасибо! Ксения(1242 знак., 13.08.2016 01:07 - 01:17)
- На 32-битной машине в ОЗУ линейным куском столько не получить. Но можно получить в файле. И лазать в файл через узкое окно (в 1ГБайт, условно), в которое отображается кусок файла с рамдиска, повторюсь. Надо чтоб рамдиск поддерживал PAE (не знаю fk0(154 знак., 13.08.2016 11:53)
- Чуть выше вариант написал бывалый г-н fk0. - saifullin2(13.08.2016 06:36, ссылка)
- Проблему не решило, но идея хорошая. Спасибо! Ксения(1242 знак., 13.08.2016 01:07 - 01:17)
- В 32-разрядном приложении НИКАК. Ale3000(63 знак., 12.08.2016 04:10 - 04:47)
- О, Ксения фанат FAR :) -> решение. - Evgeny_CD(12.08.2016 17:00, ссылка)
- Что значит - воспитанные люди. Ни один не спросил: а на хрена столько? Когда я решал задачки в конечных элементах , обходился мегабайтами. А тут сразу гиги. - Крок(11.08.2016 22:01)
- Надо запоминать встречаемость 7-членных аминокислотных последовательностей в большой-пребольшой базе данных (GeneBank). Аминокислот там 21 штука, следовательно число всевозможных их комбинаций длиной 7 составит 21^7. И для каждой нужен счетчик Ксения(89 знак., 12.08.2016 00:41)
- Че та мне кажется это задача анализа кода ДНК. Весьма ресурсоемкая кстати. Помнится даже предлагали добровольцам проводить распределенные вычисления, так чтобы задействовать как минимум десятки тысяч бытовых компьютеров. - KT(17.08.2016 15:21)
- Тут буденовец (и не однократно!) книжку рекомендовал, "Керниган, Брайан У., Пайк, Роб. Практика программирования". Там много полезного по той проблеме которую Вы решаете. Возможно там я такую мысль слышал, что чрезмерные требования к объему Nikolay801_(422 знак., 16.08.2016 10:29)
- можно ехидный вопрос? а что если завтра вам скажут что последовательности теперь 8-ми членные? мало того что задача станет жирной для обычного домашнего (среднестатистического) компа. так ещё и она однозначно выползет за пределы 32-х разрядной Mahagam(126 знак., 15.08.2016 15:22)
- У "большой-пребольшой базы данных (GeneBank)" как будете данные забирать? Может она сразу их в нужном виде может отдать? И "большая-пребольшая" это сколько интересующих вас записей? - AlexBi(12.08.2016 11:09)
- Скорее всего у Ксении всего одна запись огромной длины. Вопрос в том "как складывать / как считать результат". Ну СУБД легко и относительно быстро решается с использованием индекса для БД результата. AU08(757 знак., 12.08.2016 19:04 - 23:06)
- Исходные файлы - текстовые, в PDB-формате. В них ищут секцию SEQRES, где белок записан в виде последовательности аминокислот в трехбуквенном коде. Код переводится в порядковые номера 0-20. Потом из этой последовательности выбирают участки, Ксения(331 знак., 12.08.2016 19:31)
- Кстати, дорогая редакция, для СУБД можно и нужно использовать поле из 7 (семи) символов. В цифры переводить не обязательно. AU08(816 знак., 12.08.2016 19:52 - 20:17)
- Кажется что понятно. Читаем последовательно файл, вырезаем/парсим комбинацию из 7 цифр и подсчитываем количество для каждого из уникальных сочетаний (номеров). Типичная задача для СУБД! AU08(420 знак., 12.08.2016 19:37 - 19:45)
- ну да, несколько раз. получим вместо 3-х недель всего неделю. а было бы памяти нормально - так за час результат был бы готов. - Mahagam(13.08.2016 00:47)
- В варианте 2 производительность при использовании SSD ожидается всего в 20...40 раз медленнее, чем с массивом в RAM. В однопользовательском режиме на "своём" ПК СУБД работают относительно шустро. AU08(216 знак., 13.08.2016 07:42 - 07:52, ссылка)
- линейную скорость сравнили, а теперь сравните latency. потому как запись будет по случайным адресам. думаю, что три порядка разницы наберётся влёгкую. - Mahagam(14.08.2016 17:22)
- Не учите дедушку кашлять. В варианте 2 крайне мало записи по случайным адресам. С учётом почти линейного заполнения БД время доступа в начале будет меньше, в конце больше. Надо просто уметь их готовить! AU08(295 знак., 14.08.2016 18:24)
- Это хорошо, что Вы БД знаете. Вопросик есть теоретический (на примере БД какую Вы бы выбрали) symbions(759 знак., 14.08.2016 23:34)
- Не учите дедушку кашлять. В варианте 2 крайне мало записи по случайным адресам. С учётом почти линейного заполнения БД время доступа в начале будет меньше, в конце больше. Надо просто уметь их готовить! AU08(295 знак., 14.08.2016 18:24)
- линейную скорость сравнили, а теперь сравните latency. потому как запись будет по случайным адресам. думаю, что три порядка разницы наберётся влёгкую. - Mahagam(14.08.2016 17:22)
- В варианте 2 производительность при использовании SSD ожидается всего в 20...40 раз медленнее, чем с массивом в RAM. В однопользовательском режиме на "своём" ПК СУБД работают относительно шустро. AU08(216 знак., 13.08.2016 07:42 - 07:52, ссылка)
- ну да, несколько раз. получим вместо 3-х недель всего неделю. а было бы памяти нормально - так за час результат был бы готов. - Mahagam(13.08.2016 00:47)
- Исходные файлы - текстовые, в PDB-формате. В них ищут секцию SEQRES, где белок записан в виде последовательности аминокислот в трехбуквенном коде. Код переводится в порядковые номера 0-20. Потом из этой последовательности выбирают участки, Ксения(331 знак., 12.08.2016 19:31)
- Скорее всего у Ксении всего одна запись огромной длины. Вопрос в том "как складывать / как считать результат". Ну СУБД легко и относительно быстро решается с использованием индекса для БД результата. AU08(757 знак., 12.08.2016 19:04 - 23:06)
- Большая-пребольшая - это сколько в терабайтах? Неужели нет групп последовательностей, которые точно не встречаются? Можно разбить задачу на 3 или 7 или 21 процессов, =AlexD=(136 знак., 12.08.2016 07:53 - 07:59)
- Так для того и затея, чтобы узнать частоту встречаемости. По сути программа состоит из единственной строки: Array[a1][a2][a3][a4][a5][a6][a7]++; А с конце "обучения" ищут максимум, минимум или что-то еще. А до того, как Array "обучится" никак Ксения(61 знак., 12.08.2016 19:17)
- a1..a7 -- не рандом же? Так что мешает хранить данные в файлах??? - fk0(13.08.2016 17:23)
- Сделайте программу для 6 вариабельных аминокислот и одной фиксированной, пусть это будет самая первая аминокислота, передавайте её тип в параметрах программы. После этого вызовите программу 21 раз, с параметром для каждой из аминокислот. - =AlexD=(13.08.2016 16:15)
- Если вы и это не можете сделать, значит у вас просто недостаточно квалификации для такой работы. - =AlexD=(13.08.2016 16:18)
- Можно разбить на несколько компьютеров, MPICH никто не отменял. - AlexG(12.08.2016 09:21, ссылка)
- Так для того и затея, чтобы узнать частоту встречаемости. По сути программа состоит из единственной строки: Array[a1][a2][a3][a4][a5][a6][a7]++; А с конце "обучения" ищут максимум, минимум или что-то еще. А до того, как Array "обучится" никак Ксения(61 знак., 12.08.2016 19:17)
- А просто разбить на диапазоны? Ну придётся по базе пройтись не один раз, а (21^7)/MEM? Я так понимаю, что исходные данные всё равно много больше этого числа, а значит есть проблема доступа и к ним тоже. А если нет - то не могут в принципе всё Dingo(84 знак., 12.08.2016 05:29 - 05:33)
- Вот всё тот же коллега подсказал -> , может спасти. Dingo(123 знак., 12.08.2016 05:23 - 05:31, ссылка)
- AWE не поможет разместить в адресном пространстве массив размером 3.5GB. Ale3000(182 знак., 12.08.2016 08:11)
- Я под персоналки не пишу, но английская страничка вики вот чего пишет. А вот как застолбить её - уже другой вопрос, я так полагаю - через PAE. Dingo(1140 знак., 12.08.2016 10:04, ссылка, ссылка)
- Ксении нужен один массив 3.5GB. Его в 3GB userland не впихнешь. - Ale3000(12.08.2016 10:09)
- Я под персоналки не пишу, но английская страничка вики вот чего пишет. А вот как застолбить её - уже другой вопрос, я так полагаю - через PAE. Dingo(1140 знак., 12.08.2016 10:04, ссылка, ссылка)
- AWE не поможет разместить в адресном пространстве массив размером 3.5GB. Ale3000(182 знак., 12.08.2016 08:11)
- Сколько последовательностей надо перебрать? И за какое время? - Ale3000(12.08.2016 04:40)
- Для такой задачи не грех воспользоваться Win10-64 и бесплатной MSVS-2015. На C++ или C#. - бомж(12.08.2016 00:48)
- Тогда все деньги с гранта пойдут на компьютер, а мне ничего не достанется :) - Ксения(12.08.2016 00:55)
- Вы - перфекционистка? :) Вопрос - два прохода или один, по моему. - Скрипач(12.08.2016 09:03)
- Все-таки решить задачу за N-проходов. Это займет времени максимум в 2N раз больше. - Крок(12.08.2016 08:51)
- С такими раскладами надо и решение попроще и побыстрее:) Чтобы не насиловать диск то собираем в оперативку N последовательных отсчетов индекс-счетчик, работая с ними или как с массивом или через базу которая разворачивается в оперативке. После 1111111(110 знак., 12.08.2016 02:42)
- Тогда все деньги с гранта пойдут на компьютер, а мне ничего не достанется :) - Ксения(12.08.2016 00:55)
- Я хотел спросить, но постеснялся, вдруг это окажется невежливо :) - asd(11.08.2016 22:50, )
- Надо запоминать встречаемость 7-членных аминокислотных последовательностей в большой-пребольшой базе данных (GeneBank). Аминокислот там 21 штука, следовательно число всевозможных их комбинаций длиной 7 составит 21^7. И для каждой нужен счетчик Ксения(89 знак., 12.08.2016 00:41)
- Вы описываете стандартный механизм виртуальной памяти, он конечно же в виндовсе есть и так. Проблема у вас имхо в том, что в 32-битной системе адресное пространство всего 4гб, из которых 1 или 2гб отданы кернелу. Так что решение "в лоб" ровно одно Lightelf(123 знак., 11.08.2016 13:49 - 13:56)
- Как вариант, разбейте на два массива. Сначала проходите по первому, затем по второму. - бомж(11.08.2016 11:11)
- MapReduce -> и его математические основы --> - Evgeny_CD(11.08.2016 21:44, ссылка, ссылка)
А можно "на домиках и крылечках"?читаю на хабре - Dingo(12.08.2016 05:56 - 06:23)
- MapReduce -> и его математические основы --> - Evgeny_CD(11.08.2016 21:44, ссылка, ссылка)
- Механизм Address Windowing Extenssions - man(11.08.2016 10:53, )
- О тема, которую я уже поднимал (замена хрюши другой ОС для расширения памяти) - но вот такая штука была замешана умельцами и да же работает: Make_Pic(1046 знак., 11.08.2016 10:44 - 10:49, ссылка)
- и один фиг - приложения все равно будут 32-х разрядными. соль винды х64 в том, что родные приложения могут жрать памяти неограниченно. - Mahagam(11.08.2016 13:06)
- Но меду приложениями войны за память не будет и этого достаточно - Make_Pic(11.08.2016 16:39)
- Попробовал, поймал BSOD и откатил обратно. Чувствую, что надвигается на меня переход на W7x64 - AU08(11.08.2016 11:30 - 11:36)
- Существует редкий подвид хрюши: Windows XP Professional x64 Edition. Обновления ей народ от сервера 2003 подсовывает. Но с драйверами на свежее железо всё равно засада. - 2dimka(11.08.2016 18:14, ссылка)
- после чего на blue screen наткнулся? - Я пока не поймал - тьфу тьфу тьфу! - Make_Pic(11.08.2016 12:07)
- сразу же после перезагрузки - AU08(11.08.2016 12:28)
- Ну не знаю- я на зверя поставил - работает, хотя есть предчувствие, что с партизанщиной могу подзалететь. - Make_Pic(11.08.2016 12:59)
- сразу же после перезагрузки - AU08(11.08.2016 12:28)
- и один фиг - приложения все равно будут 32-х разрядными. соль винды х64 в том, что родные приложения могут жрать памяти неограниченно. - Mahagam(11.08.2016 13:06)
- В нормальной операционке запросто отдаст. А с виндовсом -- все вопросы в микрософт. Только 3.5ГБайта если, то 64-бит операционка нужна. - fk0(11.08.2016 09:00)
- смотрим выше! - Make_Pic(11.08.2016 10:50)
- В паделках финских студентов PAE работает и без плясок с бубном. - fk0(11.08.2016 11:12)
- PAE, если не склероз, дает операционке доступ к 64 гигам физической памяти. Каждому приложению как было доступно 2/3 гига - так и остается. В хрюше включается ключиком /PAE в boot.ini Lightelf(87 знак., 11.08.2016 13:38)
- Дык
банкиmmap же. - fk0(11.08.2016 22:16)- Дык у Ксении по-любому нет столько памяти. PAE расширяет физический адрес, но виртуальное пространство процесса как было 4G так и осталось. Т.е. сделать один массив на >3GB не получится, а уж каким Макаром изгаляться - тут каждый себе буратина. - Lightelf(12.08.2016 14:13)
- Массив в файле. В файл можно смотреть через окно небольшого размера. Окно можно двигать по файлу (относительно быстро). Проблема возможна в неподдержке RAM-дисками для windows PAE (когда сам рамдиск ограничен в 3ГБ). - fk0(13.08.2016 11:55)
- Чем это лучше просто работы с кэшируемым файлом? Ну и самое простое: неужто на этот комп 64-битная ОС не встанет? - Lightelf(14.08.2016 14:53)
- Массив в файле. В файл можно смотреть через окно небольшого размера. Окно можно двигать по файлу (относительно быстро). Проблема возможна в неподдержке RAM-дисками для windows PAE (когда сам рамдиск ограничен в 3ГБ). - fk0(13.08.2016 11:55)
- Дык у Ксении по-любому нет столько памяти. PAE расширяет физический адрес, но виртуальное пространство процесса как было 4G так и осталось. Т.е. сделать один массив на >3GB не получится, а уж каким Макаром изгаляться - тут каждый себе буратина. - Lightelf(12.08.2016 14:13)
- Дык
- А конкретнее?! - Make_Pic(11.08.2016 13:01)
- PAE, если не склероз, дает операционке доступ к 64 гигам физической памяти. Каждому приложению как было доступно 2/3 гига - так и остается. В хрюше включается ключиком /PAE в boot.ini Lightelf(87 знак., 11.08.2016 13:38)
- В паделках финских студентов PAE работает и без плясок с бубном. - fk0(11.08.2016 11:12)
- Всегда интересовало, а если RAM-диск создать, то можно ли в 32-битной ОС использовать больше 4Гб физической памяти? Он мог бы пригодиться под своп. - Экспериментатор(11.08.2016 09:48, )
- RAM-диск - это обратная задача, когда память используют под файл. Мне же надо файл использовать как память. У меня бальшая матрица, и работаю я с ней как с массивом. Не хочу работать с матрицей как с файлом, читая с диска каждое слово и записыая Ксения(77 знак., 11.08.2016 16:53)
- RAM-диск под своп... Где-то я о таком уже слышал. - Скрипач(11.08.2016 09:50)
- Под хрюшей работает, но устойчив только "mix" - у меня 3,6 Gb swap на RAM диске и 512 Mb на обычном. Сейчас пишет: Free swap 2704 Mb, RAM in use 3435 Mb, free RAM 128 Mb - De_User(11.08.2016 09:53 - 12:46)
- Посмотрел статистику по дискам - с начала года ни одного занятого байта в свопе. Это с VirtualBox-ом, хромом и RDP. - Скрипач(11.08.2016 10:03)
- То есть все 8Gb удалось использовать? А в чем неустойчивость проявляется? Эта штука нужна при загрузке с flash памяти, чтобы не протирать ее напрасно. Без свопа иногда что-то не работает. - Экспериментатор(11.08.2016 10:00, )
- Под хрюшей работает, но устойчив только "mix" - у меня 3,6 Gb swap на RAM диске и 512 Mb на обычном. Сейчас пишет: Free swap 2704 Mb, RAM in use 3435 Mb, free RAM 128 Mb - De_User(11.08.2016 09:53 - 12:46)
- смотрим выше! - Make_Pic(11.08.2016 10:50)
- Массив точно нужен весь в памяти? Задача, кажется, на типичное применение СУБД похожа. AU08(68 знак., 11.08.2016 08:52 - 08:55)
- В short-массива размером 3.44 Гб - 1.77 млрд. элементов. Если я стану при обращении к каждому из них обращаться к CУБД, то получится невозволительно долго. Случай, когда память какая-то есть, а на диск свопятся только редко используемые ее блоки, Ксения(29 знак., 11.08.2016 21:48)
- +1 Используйте вместо массива таблицу базы данных, и пусть болит голова у движка DB, а не у Вас. На каком языке(в какой среде) Вы пишете приложение? - бомж(11.08.2016 10:39 - 10:42)
- тогда прямой доступ к элементам массива подменится запросами в биде. что-то мне подсказывает, что потерять порядок в производительности - легко. - Mahagam(11.08.2016 11:03)
- +1, только потери не порядок, а два порядка. - AlexBi(11.08.2016 11:06)
- Не спорю. Но иногда это совершенно не важно. - бомж(11.08.2016 11:09)
- +1, только потери не порядок, а два порядка. - AlexBi(11.08.2016 11:06)
- тогда прямой доступ к элементам массива подменится запросами в биде. что-то мне подсказывает, что потерять порядок в производительности - легко. - Mahagam(11.08.2016 11:03)
- +1. тем более, что в некоторых бд уже есть поддержка массивов. в scidb, например. - Царская Морда(11.08.2016 09:11)
- ОСь свопит автоматически, ничего кроме обычного маллока не требуется. Другое дело что есть системные ограничения в 32 битных осях, как тут уже писали, так что ставь Вынь7 64 бита. - =AlexD=(11.08.2016 08:27)
- Однако malloc() не дает мне столько памяти, не объясняя причину отказа. - Ксения(11.08.2016 16:45)
- Ещё могут быть проблемы с фрагментацией памяти, если ты пытаешься выделить один большой кусок, он может не влезть ни в один свободный блок, даже если свободной памяти достаточно. - =AlexD=(11.08.2016 17:43)
- Это в DOS-ские времена так было :), а с 2000-х годов реклама Микрософта все уши прожужжала про отражение физической памяти на виртуальную блоками по 4К. Т.е. рекламировала как раз возможность создания непрерывной последовательности блоков в Ксения(85 знак., 11.08.2016 21:41)
- Это работа для MMU. Он для этого и был создан - чтобы из физических кусочков гда угодно "соткать" непрерываное логическое пространство. - Evgeny_CD(11.08.2016 18:03)
- Фрагментация и у виртуального пространства бывает, ваш КО. - Lightelf(11.08.2016 19:04)
- Стартует процесс и запрашивает себе децл памяти. MMU выстраивает для процесса свое собственное адресное пространство. На этапе старта - откуда фрагментации взяться? В процессе работы, если процесс частично освободил память (несколько раз), а потом Evgeny_CD(74 знак., 11.08.2016 21:42)
- Есть еще такая штука, как address randomization. Ну и всякие DLL могут внутре чего-нить выделять. В общем при такой постановке задачи Ксении прямой путь к 64-битным операционкам. - Lightelf(13.08.2016 00:53)
- Мы же не знаем что там в программе реально делается. - =AlexD=(12.08.2016 07:42)
- Стартует процесс и запрашивает себе децл памяти. MMU выстраивает для процесса свое собственное адресное пространство. На этапе старта - откуда фрагментации взяться? В процессе работы, если процесс частично освободил память (несколько раз), а потом Evgeny_CD(74 знак., 11.08.2016 21:42)
- Фрагментация и у виртуального пространства бывает, ваш КО. - Lightelf(11.08.2016 19:04)
- Возможности malloc упираются в размер 32-битного указателя и устройство ОС. Максимум 2 гига стандартно или 3 с телодвижениями. - Lightelf(11.08.2016 16:51)
- Ещё могут быть проблемы с фрагментацией памяти, если ты пытаешься выделить один большой кусок, он может не влезть ни в один свободный блок, даже если свободной памяти достаточно. - =AlexD=(11.08.2016 17:43)
- Однако malloc() не дает мне столько памяти, не объясняя причину отказа. - Ксения(11.08.2016 16:45)
- Купить нормальный компьютер, они не такие уж и дорогие. Нищебродство - это вредная привычка. - SciFi(11.08.2016 08:24)
- А я на 64-разрядных компиляторах работать не умею :) - Ксения(11.08.2016 21:35)
- Пора на курсы повышения квалификации, значит. - SciFi(11.08.2016 22:59)
- и как же легко всем рекомендовать учиться! А они такие ленивые... - Лагунов(15.08.2016 06:30)
- Пора на курсы повышения квалификации, значит. - SciFi(11.08.2016 22:59)
- А я на 64-разрядных компиляторах работать не умею :) - Ксения(11.08.2016 21:35)
- Как вариант, создать три идентичных процесса и в каждом выделить буфер в 3.5/3ГБ. Четвёртый процесс управляющий этими тремя. Таким образом у вас будет образно говоря три гиговых ведра и четвертый наполняющий ведра. - man(11.08.2016 08:07, )
- Используйте обычный malloc(), но в 32битном приложении больше 2ГБ выделить все равно не получится. Ale3000(376 знак., 11.08.2016 07:12)
- Ксения, сейчас коллега подсказал - на 32 разрядных системах задаче априори доступно только 4 Гб адресного пространства, из них ~800 Мб отъедают системные вещи (остаётся < 3.5 Гб). То же самое в 32-бит приложении и 64-бит ОС. - Dingo(11.08.2016 06:42 - 06:45)
- Посмотрите в сторону Memory Maped File, там есть возможность выделять кусок памяти только в виртуальной памяти - man(11.08.2016 06:36, )
- Имею W7. saifullin2(626 знак., 11.08.2016 06:21)
- Дайте-ка ещё вопросов подкину. Сколько может зааллокатить 32-битное приложение под 64-битной системой? А если поставить нормальную систему, в смысле wine, там все 4 будут доступны? Николай Коровин(215 знак., 17.08.2016 10:36)