2014 dxdy logo

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

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




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


20/08/14
11067
Россия, Москва
Nataly-Mak в сообщении #998028 писал(а):
Dmitriy40 в сообщении #998026 писал(а):
Я менять не стал чтобы не изменилась логика работы и чтобы программа осталась максимально похожа на Вашу исходную.
А вот это что-то не дошло. От использования такой функции логика программы никак не может измениться. Ну никак!
Хорошо что Вы это понимаете. Но рисковать и потом доказывать Вам что это именно так я не стал. Ну и вероятность моей ошибки чуть больше чем при простом копировании Вашего текста. А так как заметного положительного эффекта на работу программы это не окажет, то оставил как есть. Тем более и Вы изначально просили "не вникая и ничего не изменяя.", вот я особо и не вникал.

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


22/03/08

7154
Саратов
Dmitriy40 в сообщении #998045 писал(а):
Тем более и Вы изначально просили "не вникая и ничего не изменяя.", вот я особо и не вникал.

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

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

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


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

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


22/03/08

7154
Саратов
Dmitriy40
а вот для чего вы программу переписывали, а?
Спасибо, больше не надо. И пользоваться я вашей программой не буду.
Допроверю по своей.

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


20/08/14
11067
Россия, Москва
Nataly-Mak
Обиды? Ну обижайтесь. Мне как-то всё равно, будете Вы пользоваться, не будете ... Я вроде бы никаких условий использования переписанной программы не выдвигал, от Вас ничего не требовал, благодарностей не ждал.
Разумеется использовать или нет - полностью Ваш выбор.

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

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

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


28/01/12
467
Nataly-Mak в сообщении #993407 писал(а):
У меня всего 2 ядра в процессоре, при этом одно занимала ваша программа, а на другом я работала по своим программам.

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

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

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


22/03/08

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

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

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

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

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

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


28/01/12
467
Nataly-Mak в сообщении #998989 писал(а):
У меня сейчас Диспетчер задач показывает 100%-ую загрузку процессора, а когда работает одна программа, он показывает только 49-50%.
Я повторю вопрос:
Каким способом вы можете проверить, что одно ядро занято именно 1-ой задачей,
а другое ядро обрабатывает 2-ю задачу?

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

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

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


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

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

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

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

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


22/03/08

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

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

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

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


16/05/14
11
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 
Заслуженный участник


20/08/14
11067
Россия, Москва
DenCoder, несколько моментов:
а) я не говорил что невозможно узнать где какая задача исполняется;
б) реальной пользы от этого не будет даже если и узнать - слишком быстро переключается;
в) я то в курсе про Affinity;
г) из-за недетерменированности для самой задачи моментов переключения толку от Вашего кода немного, только если индивидуально назначать каждой задаче своё ядро, а тогда ничего узнавать и не нужно - всё и так назначено.
За код спасибо, я не помнил что cpuid выдаёт номер потока, но зачем он в этой теме не представляю. Мне кажется тут вопрос был больше по [грамотному употреблению] терминологии, чем по написанию кода.

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


16/05/14
11
Dmitriy40, да, всё верно, по всем пунктам... кроме a)
Dmitriy40 в сообщении #999086 писал(а):
но какая задача на каком ядре выполняется неизвестно

:)

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

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


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

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


20/08/14
11067
Россия, Москва
Сегодня утром пришло сообщение о нахождении первой в истории КПППЧ длиной 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  След.

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



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

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


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

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