2014 dxdy logo

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

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




На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13 ... 47  След.
 
 Re: Модифицировать программу (практическая помощь)
Сообщение30.03.2015, 17:52 
Nataly-Mak в сообщении #998028 писал(а):
Dmitriy40 в сообщении #998026 писал(а):
Я менять не стал чтобы не изменилась логика работы и чтобы программа осталась максимально похожа на Вашу исходную.
А вот это что-то не дошло. От использования такой функции логика программы никак не может измениться. Ну никак!
Хорошо что Вы это понимаете. Но рисковать и потом доказывать Вам что это именно так я не стал. Ну и вероятность моей ошибки чуть больше чем при простом копировании Вашего текста. А так как заметного положительного эффекта на работу программы это не окажет, то оставил как есть. Тем более и Вы изначально просили "не вникая и ничего не изменяя.", вот я особо и не вникал.

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение30.03.2015, 18:00 
Аватара пользователя
Dmitriy40 в сообщении #998045 писал(а):
Тем более и Вы изначально просили "не вникая и ничего не изменяя.", вот я особо и не вникал.

И всё же не преминули упрекнуть в том, что программа несовершенна, и вы из-за этого потратили на её переписывание ... (см. цитату)

Цитата:
Комментировать стиль не буду ибо бесполезно, но отмечу, что неиспользование функций для проверки допустимости вычисленного значения увеличило время переписывания втрое.

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение30.03.2015, 18:10 
Nataly-Mak в сообщении #998053 писал(а):
И всё же не преминули упрекнуть в том, что программа несовершенна, и вы из-за этого потратили на её переписывание ...
И что? И не "несовершенна", этого я не говорил, а потратил больше времени, да. И сказал об этом. Что опять не так?! Это во-первых объективный факт, во-вторых моё личное мнение, которое, секундочку, я имею право высказать, в-третьих, если Вы видите в этом упрёк - Ваши проблемы.
Вот для чего Вы написали последнее своё сообщение про упрёк, а? Я свои причины не исправлять Вашу программу озвучил, по вашей же просьбе, зачем продолжать диалог про какие-то упрёки? Могли бы и не комментировать дальше. Вы сами флудите, а потом мне рот затыкаете, когда я отвечаю на Ваши "наезды".

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение30.03.2015, 18:18 
Аватара пользователя
Dmitriy40
а вот для чего вы программу переписывали, а?
Спасибо, больше не надо. И пользоваться я вашей программой не буду.
Допроверю по своей.

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение30.03.2015, 18:31 
Nataly-Mak
Обиды? Ну обижайтесь. Мне как-то всё равно, будете Вы пользоваться, не будете ... Я вроде бы никаких условий использования переписанной программы не выдвигал, от Вас ничего не требовал, благодарностей не ждал.
Разумеется использовать или нет - полностью Ваш выбор.

Но если Вы после своей просьбы помочь потом не пользуетесь результатами этой самой помощи, предоставленной Вам без всяких требований и условий, по каким-то своим надуманным причинам - думаете много будет других желающих Вам помогать? Посмотрим.

Для чего я переписывал программу - чисто моё дело.

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение01.04.2015, 18:03 
Аватара пользователя
Nataly-Mak в сообщении #993407 писал(а):
У меня всего 2 ядра в процессоре, при этом одно занимала ваша программа, а на другом я работала по своим программам.

Я совсем не представляю себе, как это у вас чисто технически реализовано -
на одном ядре одна задача, на другом остальные задачи.
В какой технологии это реализовано?
Каким способом вы это можете проверить, что одно ядро занято именно 1-ой задачей,
а другое ядро обрабатавыет нп. 2-ю задачу?

А может мои вопросы вызывают затруднение?

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение01.04.2015, 18:21 
Аватара пользователя
NT2000 в сообщении #998983 писал(а):
Я совсем не представляю себе, как это у вас чисто технически реализовано -
на одном ядре одна задача, на другом остальные задачи.
В какой технологии это реализовано?

Э-э-э...
Я абсолютно не представляю, в какой технологии это реализовано.
Давайте спросим у знающих форумчан.

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

Но вот третью программу уже не запускаю. Думаю, что уже не потянет. У меня сейчас Диспетчер задач показывает 100%-ую загрузку процессора, а когда работает одна программа, он показывает только 49-50%.

Это всё, что я знаю :?

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение01.04.2015, 18:38 
Аватара пользователя
Nataly-Mak в сообщении #998989 писал(а):
У меня сейчас Диспетчер задач показывает 100%-ую загрузку процессора, а когда работает одна программа, он показывает только 49-50%.
Я повторю вопрос:
Каким способом вы можете проверить, что одно ядро занято именно 1-ой задачей,
а другое ядро обрабатывает 2-ю задачу?

Вопрос обращен к знающим людям.
Полного ответа разумеется не ожидаю.

Upd. Собственно вопрос зародился как попытка просвещения ТС и себя в первую очередь.
Kогда бросают фразы - "у меня одна задача реализуется на одном ядре, другая на другом", то это вызывают некоторое недоумение.

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение01.04.2015, 22:04 
NT2000
Ну раз вопрос обращён ко всем, то вставлю пару слов.
Посмотреть распределение нагрузки по ядрам можно в Диспетчере задач на вкладке Быстродействие, если выбрать в меню Вид - Загрузка ЦП - По графику на каждый ЦП.
Количество потоков в каждом процессе (задаче) сообщается в нём же в столбце Счётчик потоков на вкладке Процессы. Возможно придётся включить показ данного столбца в меню Вид - Выбрать столбцы ...

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

(Сколько же запускать?)

Вообще, запускать желательно столько "тяжелых" (в плане нагрузки на процессор) задач, сколько есть суммарно процессоров/ядер/потоков в системе. При меньшем количестве будут простои процессора, при большем не будет выигрыша в скорости. Но убеждать в этом и поддерживать споры не хочу.

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение01.04.2015, 22:18 
Аватара пользователя
NT2000 в сообщении #998996 писал(а):
Upd. Собственно вопрос зародился как попытка просвещения ТС и себя в первую очередь.
Kогда бросают фразы - "у меня одна задача реализуется на одном ядре, другая на другом", то это вызывают некоторое недоумение.

Спасибо за просвещение.

Впрочем, сильного вреда от подобного своего невежества я не вижу.
Тема вообще-то не о многопоточном программировании и/или параллельном выполнении заданий на многоядерных процессорах. Если, конечно, вы читали тему с самого начала, а не выхватили отдельную фразу в конце темы и поставили её на вид, подчёркивая неграмотность ТС.

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение23.04.2015, 21:38 
Dmitriy40 в сообщении #999086 писал(а):
При двух запущенных задачах они займут оба ядра на 100% (суммарно до 100% процессора), но какая задача на каком ядре выполняется неизвестно. И они могут и будут меняться (на миллисекундных интервалах, глазу незаметно).


Да, одна и та же задача будет выполняться не только на одном ядре. Это так, если не задавать соответствие функцией SetAffinityMask(). Это можно проделать и в диспетчере задаче. Узнать, на каком ядре данный кусок кода начал выполняться на момент этого измерения, можно, используя фрагмент кода на C/C++ ниже:
Код:
__declspec(naked) int __stdcall GetCoreNum()
{
   __asm
   {
      push ebx
      mov eax, 1
      cpuid
      mov eax, ebx
      pop ebx
      shr ebx, 0x18
      retn
   }
}


 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение23.04.2015, 23:03 
DenCoder, несколько моментов:
а) я не говорил что невозможно узнать где какая задача исполняется;
б) реальной пользы от этого не будет даже если и узнать - слишком быстро переключается;
в) я то в курсе про Affinity;
г) из-за недетерменированности для самой задачи моментов переключения толку от Вашего кода немного, только если индивидуально назначать каждой задаче своё ядро, а тогда ничего узнавать и не нужно - всё и так назначено.
За код спасибо, я не помнил что cpuid выдаёт номер потока, но зачем он в этой теме не представляю. Мне кажется тут вопрос был больше по [грамотному употреблению] терминологии, чем по написанию кода.

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение24.04.2015, 19:49 
Dmitriy40, да, всё верно, по всем пунктам... кроме a)
Dmitriy40 в сообщении #999086 писал(а):
но какая задача на каком ядре выполняется неизвестно

:)

Код в подавляющем большинстве случаев бесполезен, написать его было дело плёвое, для кругозора )
Ошибка там, если что - в инструкции shr регистр ebx заменить на eax )

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение24.04.2015, 20:54 
DenCoder, да достаточно было сказать что cpuid c eax=1 выдаёт в ebx:24..31 номер потока и всё, дальше код любой напишет сам. ;-) А так пришлось смотреть что откуда получается.
Разумеется я как проверил по доке что выдаёт там cpuid - сам и написал, даже не заметил ошибки у Вас. :-)
Кстати, я всё равно остался чуть в сомнениях что APIC ID всегда равно номеру потока, вроде бы это лишь для достаточно новых процессоров, в старых с APIC были какие-то проблемы, но когда (и для каких процессоров) я не помню. У меня работает и ладно. :-)

 
 
 
 Re: Модифицировать программу (практическая помощь)
Сообщение10.07.2015, 12:29 
Сегодня утром пришло сообщение о нахождении первой в истории КПППЧ длиной 24!
Begemot82 писал(а):
Программа записала в assocprim24.txt
22930603692243271: 0 70 76 118 136 156 160 178 202 222 238 250 378 390 406 426 450 468 472 492 510 552 558 628
Проверил, правильность подтверждаю.
ЗДОРОВО! Поздравляю! :-)

 
 
 [ Сообщений: 695 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13 ... 47  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group