2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1 ... 11, 12, 13, 14, 15, 16, 17 ... 47  След.
 
 Re: Модифицировать программу (практическая помощь)
Сообщение13.07.2015, 10:05 
Заслуженный участник


20/08/14
8126
Россия, Москва

(Оффтоп)

В некоторых случаях - очень даже удобно: например допроверить 10 маленьких дырок в одном большом интервале. Не ждать 10 раз пока проверится каждая из них и перезапускать программу для следующей дырки, а запустить сразу 10 копий и пусть медленно проверяют сразу все дырки, а самому пойти заниматься другими делами.
Или для теста правильности работы, или настройки удобной работы, или проверки автоматизации работы, да мало ли для чего (и я всё это провобовал в отличии от вас).
Вообще, если Вы не используете многопоточный режим, то не Вам и говорить об его (не)удобствах. А программа для использования в несколько потоков я считаю неудобна. Между прочим Begemot82 может и в 12 потоков её запускать, а уж если у него двухпроцессорная машина, то и в 24 потока ... Вот ему мороки постоянно следить какая копия какой интервал допроверила и перезапускать для следующих кусочков ... Сам с этим наелся зимой. А у maxal помнится и 40 потоков может быть ... Это не критика программы, просто не надо насмехаться про одеяло и потолок не попробовав как оно (не)удобно в реале.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение13.07.2015, 10:19 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
Dmitriy40 в сообщении #1036527 писал(а):
Вообще, если Вы не используете многопоточный режим, то не Вам и говорить об его (не)удобствах. А программа для использования в несколько потоков я считаю неудобна.

Так, стоп! В моём сообщении был ответ на это:

Цитата:
Запускать несколько копий можно и на одноядерном процессоре - но никакого полезного эффекта в плане скорости это не даст, будет лишь немного медленнее.

Где я говорила об удобствах/неудобствах многопоточного режима? :shock:

Насколько я знаю, Begemot82 крутит несколько копий программы (сколько именно - не знаю).
Никаких жалоб на неудобство я от него не слышала. Процессор у него, разумеется, не одноядерный!

Моя насмешка про потолок относилась к запуску нескольких копий на одноядерном процессоре.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение13.07.2015, 10:29 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Dmitriy40 в сообщении #1036527 писал(а):
Между прочим Begemot82 может и в 12 потоков её запускать, а уж если у него двухпроцессорная машина, то и в 24 потока

Исходник программы я выложил. Не сложно добавить к ней несколько потоков, в каждом из которых запустить свою копию функции primesieve::generate_primes() со своим интервалом проверки.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение13.07.2015, 11:36 


10/07/15
286
whitefox в сообщении #1036531 писал(а):
Исходник программы я выложил. Не сложно добавить к ней несколько потоков, в каждом из которых запустить свою копию функции primesieve::generate_primes() со своим интервалом проверки.
Файл start.txt общий?
Запускаю в данном проекте от 2 до 5 копий. "Неудобство" одно - нет финиша. Плюс - невольная двойная проверка на пересечении интервалов.
Nataly-Mak в сообщении #1036038 писал(а):
Begemot82
посмотрите, пожалуйста, свои результаты, может, найдёте более компактную 16-ку.
Самые маленькие 146-148. До 94 далеко.
Код:
23506450713468287: 0 6 24 36 42 50 54 66 80 92 96 104 110 122 140 146
Самая "широкая"
Код:
21023222896421803: 0 40 154 156 186 310 334 336 364 366 390 514 544 546 660 700

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение13.07.2015, 12:00 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Begemot82 в сообщении #1036554 писал(а):
Файл start.txt общий?
Это проектное решение. Можно в одном файле указывать отдельные стартовые точки для каждого потока, а можно для каждого потока завести свой файл, ещё можно указать только одну стартовую точку, а остальные вычислять по какому-нибудь правилу, также можно . . . и много чего ещё можно. :-)

Begemot82 в сообщении #1036554 писал(а):
Запускаю в данном проекте от 2 до 5 копий. "Неудобство" одно - нет финиша.
Друзья, исходник выложен для того, чтобы можно было модифицировать программу в любом нужном направлении. :-) Ввести в программу стоп-линию очень просто, кому-то это будет полезно, кому-то нет. Модифицируйте программу под свои нужды. У меня, к сожаления, нет времени на её поддержку. :|

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение13.07.2015, 16:12 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
Begemot82 в сообщении #1036554 писал(а):
Самая "широкая"
Код:
21023222896421803: 0 40 154 156 186 310 334 336 364 366 390 514 544 546 660 700

Эх как расползлась :-)

-- Пн июл 13, 2015 17:15:39 --

За 10 часов работы программа нарисовала 32 16-ки и одну 18-ку. А вот 17-ка упорно не хочет находиться.
Кто будет тот счастливчик, кому она попадётся? :wink:

-- Пн июл 13, 2015 17:38:19 --

А вот ещё шире :roll:

Код:
7318133876391223: 0 6 30 114 138 264 268 298 546 576 580 706 730 814 838 844

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение13.07.2015, 23:19 
Заслуженный участник


20/08/14
8126
Россия, Москва
Nataly-Mak в сообщении #1036529 писал(а):
Dmitriy40 в сообщении #1036527 писал(а):
Вообще, если Вы не используете многопоточный режим, то не Вам и говорить об его (не)удобствах. А программа для использования в несколько потоков я считаю неудобна.

Так, стоп! В моём сообщении был ответ на это:

Цитата:
Запускать несколько копий можно и на одноядерном процессоре - но никакого полезного эффекта в плане скорости это не даст, будет лишь немного медленнее.

Где я говорила об удобствах/неудобствах многопоточного режима? :shock:

Насколько я знаю, Begemot82 крутит несколько копий программы (сколько именно - не знаю).
Никаких жалоб на неудобство я от него не слышала. Процессор у него, разумеется, не одноядерный!

Моя насмешка про потолок относилась к запуску нескольких копий на одноядерном процессоре.


Я повторю, иногда есть вполне реальный смысл (и удобство) запустить одновременно несколько копий программы (в многопоточном режиме!) даже на одноядерном процессоре. Несколько таких случаев (думаю далеко не все) я привёл в следующем офтопике. Если вы такими режимами не пользовались или считаете их ненужными или не знаете о них - это не даёт вам права насмехаться над словами тех, кто их реально использовал (в том числе и несколько потоков на одноядерном процессоре!) и вынес собственное суждение. Вы утверждаете что это неудобно (как и "спать на потолке"), я же об удобстве вообще не говорил, я утверждал что это возможно, но в плане скорости бессмысленно. Вопрос удобства каждый решает для себя сам. И если лично вам что-то неудобно ("спать на потолке", запускать 3 копии программы или ещё что), то это вовсе не означает что это же неудобно и всем остальным.

Про (не)удобство многопоточного режима ни в моём исходном сообщении, ни в вашем сообщении с насмешкой нет ни слова, с чего это вы переводите стрелки? Это отдельная тема, я по ней высказался отдельно уже потом, в офтопике, имею право, я такой режим реально использовал и сформировал собственное суждение, которое, внимание, высказал в скрытом офтопике и уже после вашей насмешки. И продолжать обсуждать удобство многопоточного режима с вами не считаю перспективным. И ваше мнение в этом вопросе не интересует. Что однако всё равно не даёт вам права насмехаться над людьми по этому вопросу. И да, запуск нескольких копий программы одновременно - и есть многопоточный режим, даже на одноядерном процессоре, без всяких оговорок, так что насмехались вы именно над многопоточным режимом (но на одноядерном процессоре), даже если и не понимаете этого.
Вот попробуйте, а потом уже высказывайтесь, и не в виде насмешек. Я же не стал поправлять недосказанности в вашем описании использовании программы для потенциальных участников проекта или насмехаться над вашим восторгом программой, и не стал говорить как это "удобно" или "неудобно", на потолке или на полу, с одеалом или без. Я всего лишь дополнил вашу информацию для всех остальных, считаю довольно полезными фактами.

Никакого "ответа" в вашем сообщении не было, была лишь насмешка. От человека, который "книгу не читал, но мнение имею"(c).

PS. Прошу прощения у читающих за оверквоттинг, но это в виде исключения, специально, чтобы не нарываться на "вырывание фраз из контекста".

-- 13.07.2015, 23:42 --

whitefox
Я бы хотел пояснить свои слова, лично для Вас, но именно что на виду у всех, т.е. тут.
Неудобство использования программы в многопоточном режиме - это лично моё мнение, которое Вас ни к чему не обязывает, никоим образом не является претензией или очернением хорошей программы. И высказано лишь в скрытом комментарии к насмешке со стороны третьего лица. Пожалуйста не воспринимайте мои слова об неудобстве как наезд, это совершенно не так. Можете даже вот это моё сообщение считать официальным извинением за критику в адрес Вашей программы (что правда её не отменяет, т.к. это смесь фактов и личного впечатления). Я наоборот очень Вам благодарен что Вы выполнили ту работу, на которую у меня самого так и не хватило времени и сил. Программа хороша и, главное, реально полезна! И да, каюсь, я тоже её использовал (зимой), ею были найдены важные результаты. Т.к. Вы выложили её для всех желающих, то я посчитал себя вправе её использовать без дополнительного уведомления.
Повторю, программа хороша и полезна.
Её можно было бы сделать и ещё лучше, но это лучше обсудить в другом месте если будет такое желание.

-- 13.07.2015, 23:53 --

Nataly-Mak в сообщении #1036652 писал(а):
А вот ещё шире :roll:
Код:
7318133876391223: 0 6 30 114 138 264 268 298 546 576 580 706 730 814 838 844

А вот и ещё шире:
Код:
584594952562499: 0 32 68 158 170 228 260 350 510 600 632 690 702 792 828 860
3367680536652371: 0 36 168 186 200 212 302 408 440 546 636 648 662 680 812 848
9585616597901077: 0 76 90 130 142 186 364 412 474 522 700 744 756 796 810 886
12572752443521383: 0 54 114 124 364 390 400 406 444 450 460 486 726 736 796 850
19239181762421659: 0 168 252 264 310 384 390 414 448 472 478 552 598 610 694 862
Ну и рекордсмен:
Код:
13319464281880157: 0 42 140 272 294 360 372 440 486 554 566 632 654 786 884 926

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение14.07.2015, 00:13 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
Dmitriy40
когда вы начинаете лезть в бутылку, я стараюсь вам не отвечать. Так было много раз; и в этой теме было и давно, и совсем недавно. Но вам очень нравится лезть в бутылку, а посему заношу вас в игнор.
Вы можете обсуждать что угодно и где угодно (даже и в моих темах), но я ваши сообщения читать не буду и видеть их не буду.

Сейчас отвечу только на два пункта.

Dmitriy40 в сообщении #1036799 писал(а):
И высказано лишь в скрытом комментарии к насмешке со стороны треьего лица.

Позволю себе заметить, что "третье лицо", под которым вы, безусловно, имеете в виду меня, является автором темы и автором обсуждаемого проекта.

КПППЧ (Комплементарные Пары Последовательных Простых Чисел) - это понятие введено мной на форуме ПЕН. Я начинала искать КПППЧ очень давно, как только Jarek нашёл первый пандиагональный квадрат 4-го порядка из последовательных простых чисел. Потом узнала о генераторе простых чисел primesieve. Поскольку сама не могла прикрутить этот генератор к поиску КПППЧ, обратилась за помощью к whitefox. Он выполнил мою просьбу и выполнил её замечательно.
Кому не нравится его программа пусть делает свою. Тем более что whitefox выложил все материалы (исходники).

Dmitriy40 в сообщении #1036799 писал(а):
Повторю, программа хороша и полезна.
Её можно было бы сделать и ещё лучше...

Ну вот и сделайте! Что мешает? Как плохому танцору - ...
А критиковать вы мастер.

-- Вт июл 14, 2015 01:34:46 --

По алгоритму программа очень проста:

1. сгенерировали порцию простых;
2. проверили на наличие КПППЧ (проверка детская).

Программа сложна в реализации. Надо прикрутить генератор primesieve. Надо выбрать оптимальный интервал для разовой генерации простых и их проверки.
Многим хотелось бы, чтобы программа работала в многопоточном режиме. Это понятно.
whitefox объяснял выше, почему его программа не многопоточна.
whitefox в сообщении #939664 писал(а):
Библиотека primesieve работает в несколько потоков только при подсчёте числа простых в заданном интервале, а при поиске простых -- только в один поток. Но при желании можно запустить несколько экземпляров программы на разных интервалах (с разными стартовыми точками).

А чуть выше он пояснил, что при желании можно распараллелить программу на несколько потоков.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение14.07.2015, 01:12 
Заслуженный участник


20/08/14
8126
Россия, Москва
Nataly-Mak
Не надо защищать whitefox, на него я не нападал, да он и сам справится если что. Впрочем на вас тоже не нападал.
В бутылку полезли вы со своей насмешкой про потолок. Не писали бы чего не понимаете - не было бы всего последующего.
Даже если вы автор темы и автор сокращения - это не даёт вам права насмехаться над другими. Даже в своих темах.
Свою программу я сделал (и она плодотворно полгода работала). В отличии от вас. А вот запрещать мне что-то или затыкать рот или наоборот заставлять и принуждать к чему-то - не здесь.
Критику (точнее не критику, а личное мнение!) я высказал в ответ на вашу насмешку. До этого никакой критики не было, было уточнение важных моментов, вами не упомянутых. Виноваты в появлении критики - тоже вы. :mrgreen:
Алгоритм программы и я и уж тем более whitefox понимаем гораздо лучше вашего, объяснять с вашей колокольни не требуется.
Добавили в игнор? Так это ваши проблемы, спасибо что уведомили. Учитывая ваше отношение я и так не рвусь с вами общаться, пишу вам в ваших темах лишь голые факты. Но вы и к ним придираетесь и потом виноватым меня выставляете. А молча сносить ваши насмешки я не намерен.

Ну а для остальных добавлю что это вот был характерный пример, когда попытка помощи (например в данном случае добавление важной информации о требованиях к памяти при работе рекомендуемой программы в многопоточном режиме или возможности запуска и на одноядерных процессорах в многопоточном режиме) высмеивается и демонстративно отклоняется. Под надуманными предлогами. И бывает даже с ущербом для себя. Успехов вам в таких попытках, и терпения.

-- 14.07.2015, 01:18 --

PS. А в многопоточную программу превратить несложно, достаточно всего лишь сделать арбитраж доступа к файлам, чтобы программа корректно обрабатывала ошибки доступа к start.txt (ну и желательно и к файлам с КПППЧ тоже) и читала начало каждого проверяемого интервала из start.txt. И всё! В основную логику работы даже и лезть не нужно! Можно будет запускать сколько угодно копий из одной папки и все будут обрабатывать интервалы (практически) подряд. Дарю идею любому кто захочет реализовать.

PPS. Выскажу ещё одну идею по улучшению (надёжности), может кому пригодится. Если в start.txt обнаружено "явно неадекватное"(с) число, типа нуля или ещё какого ненормального, то пройтись по файлам kpppch_*.txt в текущем каталоге и выбрать в качестве стартового наибольшее число из этих файлов. А можно и даже наибольшее число только из kpppch_16.txt, разница будет невелика. Плюс 2 конечно же. Это в достаточной мере исключит возможные глюки с некорректной записью файлов (при неожиданном отключении электричества например). Насколько это нужно - думайте сами.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение14.07.2015, 16:05 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Внёс в программу ряд изменений. А именно:
  1. можно указывать стоп-линию, при достижении которой программа завершится;
  2. можно ограничить потребление памяти, что важно при одновременном запуске нескольких экземпляров;
  3. добавлены ключи командной строки, для автоматизации одновременного запуска нескольких экземпляров из пакетного файла, образец пакетного файла включён в архив.

Приведу текст файла readme.txt, включённого в архив:

(readme.txt)

Код:
Для запуска единственного экземпляра программы – запустите её исполняемый файл. Если планируете запускать одновременно несколько экземпляров, то исполняемому файлу каждого экземпляра присвойте уникальное имя и поместите их все в одну папку. Для одновременного запуска используйте пакетный файл, образец которого прилагается.

Файл со стартовыми данными называется <имя программы>_start.txt, например kpppch_start.txt. Если в папке с программой этого файла нет, то он будет создан со значениями по умолчанию. В случае прерывания программы (намерено, либо по внешним причинам) в этом файле будут сохранены стартовые данные для текущего интервала.

В стартовые данные входят:
1. стартовая точка;
2. стоп-линия (программа завершается при достижении верхней границей текущего интервала стоп-линии);
3. фактор уменьшения интервала (длина стандартного интервала равна 2 000 000 000, фактор определяет во сколько раз фактическая длина интервала меньше длины стандартного интервала, что позволит уменьшить потребность в памяти на один экземпляр программы при одновременном запуске нескольких).

Ни один из указанных элементов не является обязательным, и может быть опущен (даже все).

Пример записи в стартовом файле: 200000000 e400000000000 f5
Здесь префикс e(E) определяет стоп-линию, а префикс f(F) – фактор. Между префиксом и соответствующим элементом пробела быть не должно. Порядок элементов в стартовом файле несущественен.

Также элементы стартовых данных можно указать как аргументы командной строки, например: kpppch.exe 200000000 /e400000000000 /f5.
Любой аргумент может быть опущен (даже все), слэш перед префиксом обязателен, пробела между префиксом и элементом быть не должно, регистр букв несущественен, порядок элементов несущественен.

При одновременном использовании стартового файла и аргументов командной строки последние имеют преимущество.

Архив можно скачать отсюда: https://yadi.sk/d/o04RwW8hsxLWc
Исходный файл прилагается.

UPD: Ссылка на последнюю версию.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение14.07.2015, 16:57 
Заслуженный участник


20/08/14
8126
Россия, Москва
whitefox
Вот за параметры командной строки огромное человеческое спасибо! На это не смел и надеяться. :-) Начала и конца уже достаточно для полной автоматизации процесса многопоточного просеивания (даже bat-файлом, моя программа работала точно так же).
Ну а фактор полезен на компьютерах с ограниченной памятью.

(Оффтоп)

Потом чисто ради интереса проведу тест как изменяется скорость от увеличения фактора, может получится радикально уменьшить требуемую память не снижая сильно скорость проверки ...
Add. Мда, надежда не оправдалась, скорость падает значительно, уже при f2 упала с 2050 до 1800, при f3 упала до 1600. Ну, так и подозревал, это проблема primesieve.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение14.07.2015, 17:27 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
whitefox
как автор проекта объявляю вам благодарность с занесением в личное дело :wink:

Вопрос такой: влияет ли на скорость уменьшение разового интервала для проверки, скажем, в 2 раза?
Поняла, что это влияет на потребность в памяти. А на скорость влияет?

Если я кручу всегда одну программу, мне можно всё оставить по-прежнему?
(Стоп-линия мне не нужна.)
Спасибо.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение14.07.2015, 17:48 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Nataly-Mak в сообщении #1036995 писал(а):
Вопрос такой: влияет ли на скорость уменьшение разового интервала для проверки, скажем, в 2 раза?
Поняла, что это влияет на потребность в памяти. А на скорость влияет?

Мои эксперименты показали, что практически не влияет. Эта фича, в первую очередь, нужна для одновременного запуска нескольких экземпляров программы, так как при стандартной длине интервала в 2 000 000 000, памяти требуется порядка половины гигабайта на один экземпляр. Установив фактор 10, можно без проблем запустить 10 экземпляров.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение14.07.2015, 17:55 
Заслуженный участник


20/08/14
8126
Россия, Москва

(Оффтоп)

whitefox в сообщении #1036997 писал(а):
Мои эксперименты показали, что практически не влияет.
Хм, запускаю с в точке 2е16 с f10 и получаю скорость 900 вместо 2050 при f1. Практически не влияет?! Я что-то не так делаю? Про малые f писал выше.

 Профиль  
                  
 
 Re: Модифицировать программу (практическая помощь)
Сообщение14.07.2015, 18:33 
Заслуженный участник
Аватара пользователя


19/12/10
1546
Dmitriy40 в сообщении #1037001 писал(а):
Хм, запускаю с в точке 2е16 с f10 и получаю скорость 900 вместо 2050 при f1. Практически не влияет?!

Я писал "мои эксперименты". :-)
А их я проводил для существенно меньших чисел.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 695 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15, 16, 17 ... 47  След.

Модераторы: maxal, Toucan, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group