Jabber @udaff.com
i2008
i2008@conference.udaff.com
Четверг, 3 июля 2008< ^ >
Конфигурация комнаты

GMT+4
[00:31:30] gpfault вошёл(а) в комнату
[00:35:44] Fly вошёл(а) в комнату
[00:37:29] keguar вошёл(а) в комнату
[00:37:33] <keguar> а.
[00:37:39] <keguar> я здесь?
[00:38:13] <gpfault> Fly хочет узнать как пользовать TortoiseSVN, а я не знаю
[00:38:41] <keguar> Fly его поставил уже?
[00:38:54] <Fly> Да
[00:39:04] <keguar> создаешь пустую папку, на неё правой кнопкой -> svn checkout
[00:39:37] <keguar> вводишь в url строку http://svn.assembla.com/svn/i2008/
[00:39:45] <keguar> жмешь Ok :)
[00:39:58] <keguar> будут спрашивать login/пароль
[00:40:14] <keguar> можно поставить галочку на save passwd, на ассембля это даже работает.
[00:42:37] <keguar> в svn/images выложил результат работы первых 118 тыщ команд RNA (показан слой 1).
результат похож на правду.
[00:43:09] <Fly> Настроил.
[00:43:38] <keguar> правой кнопкой на папке -> svn update/svn commit - это основные функции.
[00:44:01] <gpfault> а добавлять новые папки в явном виде не надо равзе7
[00:44:05] <keguar> можно коммитить/обновлять подпапки и отдельные папки.
[00:44:17] <keguar> не надо конечно O.o
[00:45:07] <keguar> когда делаешь commit, надо внимательно изучить список предлагаемыз файлов и правильно расставить галочки - чтобы закоммитить то что хочешь и случайно не закоммитить многомегабайтных ненужных файлов.
[00:45:13] <keguar> аккуратнее с этим надо.
[00:45:55] <gpfault> а, вот к чему приводит то что явно добавлять файлы/папки не надо )))))
[00:45:58] <keguar> *можно коммитить/обновлять подпапки и отдельные _файлы_
[00:46:54] <keguar> ну это можно вылечить с помощью репобраузера.
[00:46:59] <Fly> Залил
[00:47:18] <Fly> Чтение из endo.dna
[00:47:27] <Fly> Вывод в endo.rna
[00:47:28] <keguar> там можно посмотреть и отредактировать список файлов, не закачивая их содержимого.
[00:47:45] <Fly> Пойду покушаю что ли.
[00:49:08] <gpfault> да, это здравая идея :)
[00:49:12] <keguar> оно выдает файл на 10 кб
[00:49:32] <keguar> это мало :)
[00:49:44] <gpfault> он залил, чтоб сравнить где статистика отличаеться начинается от моего
[00:50:32] <keguar> мде...
[00:51:03] <keguar> я вот думаю что сегодня я помочь делу ничем больше не смогу.
[00:51:17] <keguar> ^__ что-то не так в этом предложении.
[00:51:30] <gpfault> "сегодня" :)
[00:51:37] <keguar> и много я
[00:59:16] <keguar> вообще там кроме этих интерпретаторв дофигища работы "по существу" ;-)
[01:00:15] <gpfault> да, мы ещё префиксы не меняли. Но с ТАКИМИ тормозами как сейчас далеко не уедем.
[01:00:49] <keguar> как быстро оно выполняет все необходимые итерации, по твоим прикидкам?
[01:00:53] <gpfault> надо ускорять part1 а как - я хз
[01:01:31] <gpfault> если 98% в memmove, то на остальное можно не оьращать внимания
[01:01:43] <gpfault> в смысле, какие необходимые операции?
[01:02:22] <keguar> за сколько секунд оно генерирует весь RNA? твоя оценка?
[01:02:41] <gpfault> за ночь :)
[01:03:01] <keguar> 6 часов чтоле???
[01:03:06] <gpfault> может версию Fly быстрее будет, там видимо очень мало ошибок
[01:03:25] <keguar> надо быстрее на пару порядков.
[01:03:51] <keguar> если выполнять memmove на квантовом компьютере, то так и выйдет, наверное.
[01:04:55] <gpfault> надо поменть структуры данных
[01:05:17] <gpfault> круто. моя прога стала падать просто так, яничего не менял.
[01:06:22] <keguar> Денис проснулся?
[01:06:38] <keguar> явление явно кармического порядка!
[01:06:46] <gpfault> а я откуда знаю?
[01:07:04] <keguar> хочешь чтобы я позвонил? ;-)
[01:07:20] <keguar> гыгыгы
[01:08:58] <gpfault> можно пригласить его сюда и забанить
[01:09:57] <gpfault> Fly:мои логи в svn part1_g\first_logs.
[01:09:57] <keguar> а ты всемогузий одмин здесь?
[01:10:13] <gpfault> я "Владелец", это круче админа
[01:10:27] <keguar> забань меня до утра :)
[01:10:48] <keguar> так мы узнаем умеешь ли ты разбанивать )
[01:13:50] <gpfault> я научился.
[01:13:51] <gpfault> Fly: у нас отличается на 21-й итерации
[01:14:27] <gpfault> у меня:
dna = IIPIFFICII... (9607307 bases)
pattern (?{P})
template IIPIP|0|IICICIICICCCICCICFFFCFICCCFCPPCFCCICCICFCCCCCFCFFFCFCCFCFCCFFFICCCFCICCCCFFICCCFCICICFICCICICICCFCCFIPPPCCCCCCCCCCCCCCCCCCCCCCCICIICF 0_0
succesful match of length 5
e[0] = IIICP... (5 bases)
len(rna) = 1345
[01:14:43] <gpfault> у тебя:
dna = IIPIFFICII... (9607307 bases)
pattern (?{P})
template IIPIP|0|IICICIICICCCICCICFFFCFICCCFCPPCFCCICCICFCCCCCFCFFFCFCCFCFCCFFFICCCFCICCCCFFICCCFCICICFICCICICICCFCCFIPPPCCCCCCCCCCCCCCCCCCCCCCCICIICF 0_0
succesful match of length 5
e[0] = IIICP... (5 bases)
len(rna) = 1345
[01:14:52] <gpfault> e[0] разные.
[01:16:14] <gpfault> тьфу
[01:16:23] <gpfault> у тебя:DNA: IIPIFFICIICIICCCICCICIIPPCCFCFCC
Pattern: (?"P")
Template: IIPIP|0|IICICIICICCCICCICFFFCFICCCFCPPCFCCICCICFCCCCCFCFFFCFCCFCFCCFFFICCCFCICCCCFFICCCFCICICFICCICICICCFCCFIPPPCCCCCCCCCCCCCCCCCCCCCCCICIICFt(0,0)
E[0]: CCCIPIIPIPCIICIICCCIIICICCCCIIIC (5 bases)
RNA count: 1345
[01:16:57] <gpfault> мои логи в svn part1_g\first_logs.
[01:41:05] <Fly> Ща буду изучать
[01:42:15] <gpfault> keguar, ты ещё тут?
[01:43:12] <gpfault> что ты знаешь про структуру данных rope, приминительно к её реализации на C++?
[01:43:26] <Fly> Это кому?
[01:44:29] <gpfault> скорее keguar, но и тебе тоже. Та проблема в производительности в том, что происходит очень много копрований
[01:44:50] <Fly> Ну дак и не делай их.
[01:45:01] <Fly> У меня копирование вообще только в одном месте. :)
[01:45:09] <Fly> Зато памяти больше кушаю.
[01:45:37] <Fly> Кстати, динамические структуры stl тормозят безбожно
[01:45:47] <gpfault> значит ты или реализовал rope или что-то ещё придумал
[01:45:53] <Fly> из-за new и delete
[01:46:11] <Fly> Дак а что это за структура?
[01:46:41] <gpfault> когда строка представляется в виде объединения маленьких подстрок распределённых в памяти
[01:46:56] <Fly> Зачем это?
[01:47:10] <gpfault> и некоторые подстроки участвуют во многих строках
[01:47:33] <Fly> Я просто создал массив длиной 25000000 :)
[01:47:48] <gpfault> и тогда из строки s1 s2 s3 можно сделать строку s4 s2 s5 не копируя s2
[01:48:04] <gpfault> массивов в 25000000 я сделал 2
[01:48:15] <keguar> а, что, где?
[01:48:24] <Fly> У меня на самом деле их около пяти :)
[01:48:59] <gpfault> а насчёт
>Кстати, динамические структуры stl тормозят безбожно
>из-за new и delete
на эту тему мы обязательно пообщаемся, но не сейчас :)
[01:49:14] <keguar> а какие структуры вы используете?
[01:49:26] <keguar> *или планируете использовать
[01:49:38] <keguar> а, не сейчас)
[01:49:49] <Fly> gpfault, для ускорения достаточно переопределить глобальные операторы new и delete
[01:50:15] <keguar> Fly: пул?
[01:50:30] <Fly> Тупее.
[01:50:43] <Fly> new откусывает от статического массива.
[01:50:51] <Fly> delete ничего не делает.
[01:50:57] <Fly> Это просто летает.
[01:51:05] <Fly> Но памяти жрёт немеряно
[01:51:09] <keguar> сколько же?
[01:51:10] <gpfault> Java :)
[01:51:24] <keguar> и насколько летает?
[01:51:39] <Fly> В 10 раз быстрее обычного
[01:51:41] <gpfault> в таком контексте Fly конечно прав, это быстрее
[01:51:51] <gpfault> летает, но не долго :)
[01:51:56] <keguar> а где вы там используете new/delete?
[01:52:03] <Fly> Я - нигде :)
[01:52:09] <keguar> а Вася?
[01:52:19] <Fly> Ты посмотри его код
[01:52:23] <gpfault> я в vector.push_back()
[01:52:38] <gpfault> и даже явно несколько раз
[01:53:03] <gpfault> и даже где-то забываю удалить
[01:53:13] <gpfault> кстати, оно много памяти съело?
[01:53:21] <Fly> Можно и не удалять даже :)
[01:53:28] <Fly> Быстрее работать будет.
[01:53:40] <Fly> А после завершения проги всё само удалится
[01:53:53] <keguar> хм, ну зато похоже что у Васи работает. будет считать что у него reference-реализация.
[01:53:56] <Fly> Где съело?
[01:54:20] <keguar> а у вас одинаковые ответы получаются?
[01:54:26] <Fly> Неа
[01:54:31] <Fly> У меня косяк где-то
[01:54:38] <keguar> ну вот :)
[01:54:39] <gpfault> у меня. Это вопрос к keguar - он запустил мою прогу несколько часов назад
[01:54:50] <gpfault> сколько памяти оно съело?
[01:54:56] <keguar> мегабайт 100
[01:55:03] <keguar> не больше.
[01:55:04] <gpfault> значит слабо течёт
[01:55:13] <keguar> да, файрфоксе сильно жощще
[01:55:42] <keguar> ну сделайте автоматическое тестирование
[01:56:02] <keguar> чтоб после каждой итерации автоматически сравнивались результаты.
[01:56:22] <keguar> это не трудно?
[01:56:39] <gpfault> если сделать один формат вывода, то это можно за diff ать просто
[01:57:08] <keguar> ну вы уж смотрите что вам проще. я бы автоматику сделал.
[01:57:18] <gpfault> вернёмся к rope.
Проблема:
есть строка s1 s2 s3.
После преобразования она становится
s1 s4 s3
s1 и s3 большие, их долго копировать
[01:57:20] <keguar> т.к. данные имеют простейший формат.
[01:57:50] <keguar> хочешь мудрую структуру данных?
[01:57:59] <gpfault> не вижу вариантов
[01:58:02] <Fly> gpfault, добавь в вывод E границы (чтобы было видно, откуда откусывает
[01:58:06] <keguar> используй Haskell
[01:58:14] <keguar> :)
[01:59:04] <keguar> от чего зависит s4 и насколько оно большое?
[01:59:05] <gpfault> тебе для 21 итерации?
[01:59:12] <Fly> Хотя бы
[01:59:48] <gpfault> keguar:маленькое скорее, но вообще хз. Это просто частный наиболее яркий случай проблемы копирования
[02:00:17] <keguar> т.е. для него можно выделить независимый кусок памяти?
[02:00:44] <gpfault> да
[02:03:13] <gpfault> границы E считать от конца или от начала?
[02:03:33] <Fly> От начала днк
[02:03:48] <Fly> Ну, те самые c[0] и i
[02:03:52] <Fly> Что в условии
[02:03:56] <gpfault> а, ok
[02:06:34] <gpfault> Если я не налажал с подсчётом границ, то так
iteration 20
e[0] = IIPIFFICII... (170 bases)
e[0].begin = 0 e[0].end = 170
e[1] = IIPIPCII... (8 bases)
e[1].begin = 170 e[1].end = 178
iteration 21
dna = IIPIFFICII... (9607307 bases)
succesful match of length 5
e[0] = IIICP... (5 bases)
e[0].begin = 0 e[0].end = 5
[02:06:49] <gpfault> проверь границы по 20й итерации
[02:07:13] <Fly> Всё одинаково, кроме e0 :)
[02:07:25] <gpfault> ну собственно оно находит P в IIICP
[02:09:36] <gpfault> как раз оно там есть.
Могу открыть тебе страшную тайну - я не реализовывал ни КМП, ни алгоритм поика по хешам, а тупо взял std::search, который O(m*n) в худшем случае.
всё равно тормоза появляются не в этом месте.
[02:09:46] <Fly> Может у меня днк где-то неправильно сгенерилась. Где-нибудь на хрен_знает_каком шаге. :)
[02:10:06] <Fly> У меня kmp
[02:15:21] <Fly> А как вычисляется match of length 7512261?
[02:16:25] <keguar> Вася, у мну есть идея.
[02:16:49] <keguar> ты когда на профилировку мне отдавал код, ты CRT динамически прилинковал?
[02:17:26] <gpfault> Fly:это сколько отрезалось от dna в matchreplace. непосредственно перед replace
[02:18:09] <gpfault> keguar:я тупо замерял в проге время вокруг memcpy и увидел что 98% там
[02:18:19] <gpfault> поэтому профалить пока нечего
[02:41:26] keguar вышел(а) из комнаты
[04:52:19] <Fly> У меня ошибка в днк.
[04:52:22] <Fly> ппц.
[04:52:26] <Fly> Пойду спать.
[04:59:52] <gpfault> пока
[05:51:51] gpfault вышел(а) из комнаты
[06:58:06] Fly вышел(а) из комнаты: Replaced by new connection
[08:34:22] keguar вошёл(а) в комнату
[08:35:45] <keguar> о... вы тут до самого рассвета сидели...
[10:48:08] keguar вышел(а) из комнаты
[12:24:54] keguar вошёл(а) в комнату
[13:50:48] keguar вышел(а) из комнаты: Replaced by new connection
[15:51:21] gpfault вошёл(а) в комнату
[18:30:57] gpfault вышел(а) из комнаты
[18:31:30] gpfault вошёл(а) в комнату
[20:29:47] gpfault вышел(а) из комнаты
[20:30:40] gpfault вошёл(а) в комнату
[22:55:46] Fly вошёл(а) в комнату
[22:56:22] <Fly> Я только проснулся :)
[22:56:38] <gpfault> жжёшь :)
Во сколько лёг-то?
[22:57:27] <Fly> Не помю :)
[22:57:32] <Fly> Часов в 5
[22:58:08] <gpfault> вообще если задача ещё интересна могу описать наши текущие достижения. Их довольно много, просто мы обсуждали напрямую с keguar, а не тут
[22:58:19] <Fly> Давай
[22:58:29] <Fly> Может испторию просто кинуть.
[22:59:38] keguar-ru вошёл(а) в комнату
[22:59:45] <keguar-ru> я здесь
[23:00:12] <gpfault> В истории много не по сути и уже не актуального.
[23:00:48] <gpfault> так вот. Собственно с программной частью всё скорее работает и в серьёзных правках не нуждается
[23:01:20] <gpfault> теперь задача состоит в том, чтоб понять что удумали организаторы в пункте 6
[23:01:54] <gpfault> Вернее 5
[23:02:50] <gpfault> мы рассматриваем различные префиксы, добавляем их к началу и смотри на получающуюся/не получающуюся картику.
[23:04:13] <Fly> И что у вас уже получилось?
[23:04:41] <gpfault> но вероятно на некотром этапе получается картинка с которой не очень понятно что делать. Вернее вроде бы понятно, но возможно мы что не так поняли
[23:05:42] <gpfault> генерируются всевозможные картинки.
собственно пока их 4:
[23:05:59] <Fly> Они есть в свн?
[23:06:05] <gpfault> префиксы - да
[23:06:32] <Fly> Картинки
[23:06:59] <gpfault> картинки - только одна, но можно выложить, щас
[23:07:05] <Fly> Выложи
[23:08:28] <gpfault> да, щас
[23:10:55] <gpfault> выложил:
images\
daysun.JPG guide.png navigation.png selfcheck.png
[23:11:11] <Fly> Ща гляну
[23:14:25] <Fly> А что за selfcheck?
[23:14:42] <Fly> И guide
[23:14:49] <Fly> Это вы всё оттуда получили?
[23:15:11] <gpfault> да, всё оттуда
[23:15:19] <Fly> Прикольно :)
[23:15:32] <gpfault> префиксы лежат в *.txt в prefixes\
[23:15:48] <gpfault> selfcheck - это тот префикс, что в pdf был.
[23:16:05] <Fly> Я так и подумал
[23:16:19] <gpfault> guide - это тот, что ещё вчера нарисовался
[23:16:51] <gpfault> daysun, help это то, что нарисовано в guide
[23:17:00] <gpfault> там же лежат соответствующие rna
[23:17:12] <gpfault> help==navigation
[23:18:03] <gpfault> глядим мы на эти картинки уже не один час и что дальше неясно, хотя в navigation вроде написано
[23:18:21] <gpfault> но что-то не выходит, может тебе больше повезёт
[23:18:29] <Fly> Ок.
[23:18:34] <gpfault> относительно программ:
[23:18:43] <Fly> А как вы guide получили?
[23:19:36] <gpfault> текст префикса guide рисуется самой-самой первой частью rna, которая и у меня и утебя ещё вчера получились.
[23:20:16] <Fly> То есть это промежуточный шаг до картинки?
[23:20:28] <gpfault> да. Оно потом затиралось
[23:20:36] <Fly> Ясно
[23:20:45] <gpfault> part1_g\part1_prefix.exe
работает в 10-100 раз быстрее чем вчера, но всё равно вычисление занимает от 1сек до 5мин
[23:21:10] <Fly> Ща я глюк у себя найду и будет ещё быстрее.
[23:21:51] <gpfault> надеюсь, но я не уверен :)
Без rope там скорее всего никуда в не зависимости от реализации всего остального
[23:22:18] <Fly> ща посмотрим.
[23:22:56] <gpfault> вторая часть:
part2\Release\part2.exe
part2\Release\part2_slo.exe - то же, но иногда генерит много-много промежуточных картинок, её можно запускать на недоделанных dna
[23:25:04] keguar-ru вышел(а) из комнаты: Replaced by new connection
[23:25:08] <Fly> А какой формат входных данных?
[23:25:16] <Fly> одна строка из rna?
[23:25:18] <gpfault> синтаксис вызова второй части:
part2.exe -in somthing.dna
или чтоб не тормозило из-за отладочного вывода в консоль, перенаправить его в nul:
part2.exe -in somthing.dna 2>nul
она сохранит картинку в out.bmp
[23:25:38] <gpfault> формат данных somthing.dna - текстовый файл
[23:25:49] <Fly> ясно
[23:30:03] <gpfault> для моей первой части синтаксис таков:
part1_prefix.exe endo.dna out.rna prefix.txt
endo.dna - всегда исходный 7Мб файл endo.dna
out.rna - куда записывать выводимое rna
prefix.txt - файл с используемым префиксом, необязательно
[23:30:32] <gpfault> когда будешь тестировать своё, ожидай что потребуется более миллиона итераций
[23:30:53] <gpfault> и вывод rna будет более 2Мб
[23:31:32] <Fly> Я тут отладочный вывод вчера сгенерил наших программ, чтобы ошибки найти, каждый на 300 МБ :)
[23:31:38] <Fly> А пом fc запускал :)
[23:32:06] <gpfault> это я к тому, какого результата ожидать.
[23:34:18] <gpfault> если же дописать к endo.dna (проще в программе считывать из отдельного файла и приклеивать в памяти в начало) selfcheck.txt
то будет менее 200 итераций (на 4 порядка быстрее чем endo.dna без префикса) и размер вывода порядка 200 Кб.
Есл реализация не совсем работает, то там будет или кривая картинка или надписи типа FAILED.
[23:34:57] <gpfault> короче возможно, есть смысл отлаживать на endo.dna с префиксом selfcheck.txt
[23:46:46] Fly вышел(а) из комнаты
[23:47:04] Fly вошёл(а) в комнату
[23:53:03] Fly вышел(а) из комнаты
[23:53:20] Fly вошёл(а) в комнату
ejabberd/mod_muc logValid XHTML 1.0 Transitional Valid CSS!