С Новым годом! Форум программистов, компьютерный форум, киберфорум
Разработка и тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 21.11.2009
Сообщений: 73

Программа вычисления

24.11.2020, 20:33. Показов 1822. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал консольное приложение (С++), с рекурсивным перебором.
Очень долго вычисляет (при средних запросах, несколько часов)/проц. i7 2.80GHz; ОЗУ 8 Гб./.
Хотел узнать, есть ли какие-нибудь сервера, куда можно загрузить программу, "прогнать" на лучшем железе и получить результат, за меньшее время вычисления?

ps: Сейчас, читаю про Azure, но пока не знаю, на правильном ли я пути )
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2020, 20:33
Ответы с готовыми решениями:

Программа вычисления интеграла методом Гаусса-Лежандра
Подскажите пожалуйста как сделать уравнение у= а*х^3 + b * x + c числа лежат в пределах от -1000 до 1000, число интервалов не более 500 ...

Программа для вычисления F с описанием и вызовом процедуры вычисления
исправить ошибки в программе t=(P^2+L^2)^2 Program lab9; {F = (A^2 + B^2)^2 + (C^2 + D^2)^2} var a,b,c,d,f,x: real; ...

Программа вычисления
Всем доброго времени суток! Помогите пожалуйста с написанием программы Составить программу вычисления: S=1/2-1/4+1/6-1/8+..+1/18-1/20 ...

8
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
27.11.2020, 14:51
если не секрет, что же это Вы такое считаете, откуда такие вычислительные нагрузки? может быть не вмещаетесь в ОЗУ?
возможно алгоритм крутится на одном ядре? OpenMP задействовано?

в сторону Cuda не смотрели?
1
116 / 106 / 51
Регистрация: 29.03.2016
Сообщений: 480
29.11.2020, 12:05
Цитата Сообщение от Unikum Посмотреть сообщение
с рекурсивным перебором.
тут вы скорее всего упираетесь в оперативную память и начинаете использовать файл подкачки, но в любом случае сначала лучше узнать в чем именно дело и последить за использованием ресурсов на вашей машине.
возможно есть более удачные подходы к решению задачи. Так же есть вероятность что и 32Гб оперативной памяти вам будет мало при использовании данного подхода
0
0 / 0 / 0
Регистрация: 21.11.2009
Сообщений: 73
29.11.2020, 18:43  [ТС]
Цитата Сообщение от vantfiles Посмотреть сообщение
если не секрет, что же это Вы такое считаете, откуда такие вычислительные нагрузки?
Не секрет.)
Моделирую набор "круговых" шаговых переключателей, причем у каждого переключателя свой предел кол-во шагов, т.е. есть переключатели, где всего 10 шагов, а есть переключатели, где 1 000 000 шагов. Требуется пройтись по всем вариациям (т.е. перебрать все варианты) при этом определять некий рейтинг варианта (т.е. на каждом варианте требуется некое вычисление).
Еще нюанс, количество переключателей задается только при запуске программы, как и предел кол-ва шагов для каждого переключателя.

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

а насчет cuda где-то слышал, и кажется там на ядра видеокарты "грузить" не простые вычисления противопоказаны. (Но, возможно, я ошибаюсь)

Добавлено через 13 минут
Цитата Сообщение от Serg_o_Grey Посмотреть сообщение
тут вы скорее всего упираетесь в оперативную память и начинаете использовать файл подкачки, но в любом случае сначала лучше узнать в чем именно дело и последить за использованием ресурсов на вашей машине.
возможно есть более удачные подходы к решению задачи. Так же есть вероятность что и 32Гб оперативной памяти вам будет мало при использовании данного подхода
Так как кол-во переключателей задается при старте программы, был сделан выбор "рекурсивный перебор". Глубина рекурсии, равна кол-ву переключателей, т.е. в реальных запросах, не более 20-40. Пока тестирую с 10-ью переключателями, и памяти используется, при выполнение, не больше 50%, но тем не менее вычисление идет очень долго.
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
29.11.2020, 19:31
Лучший ответ Сообщение было отмечено Unikum как решение

Решение

Unikum, судя по тому что вы говорите, то вы упираетесь в трудоёмкость алгоритма (аля 1000 вариантов * 1000 вариантов * ....). Прочитайте про О большое.
Возможно вам не обязательно перебирать все варианты.
Тогда могут помочь: генетические алгоритмы, метод отжига и т.п.
1
 Аватар для vantfiles
1018 / 1914 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
29.11.2020, 21:09
покажите исходник, возможно получится избавиться от рекурсии, да и пооптимизировать на скорость с разных сторон...
Сборку в студии делаете или gcc ?
1
2625 / 1636 / 266
Регистрация: 19.02.2010
Сообщений: 4,348
29.11.2020, 22:06
Цитата Сообщение от vantfiles Посмотреть сообщение
возможно получится избавиться от рекурсии
Очевидно возможно.

Похожая задача год назад на форуме возникала - и Unikum'у надо просто в алгоритме из этого поста 30 вложенных циклов вместо константы MAX_INDEX_VALUE использовать массив значений верхних границ (в котором значения элементов задаются для каждого переключателя), ну и число переключателей тоже должно задаваться вручную (вместо использования константы INDEX_COUNT).
Т.е. комбинация (вектор) значений индексов будет получаться без всякой рекурсии, вызовом функции Next(), в которой независимо от числа переключателей будет всего 1 цикл.
1
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
29.11.2020, 22:36
VTsaregorodtsev, а толку ему избавляться от рекурсии если INDEX_COUNT у него десятки, а MAX_INDEX_VALUE может быть
1 000 000 шагов.
Здесь надо отталкиваться от:
при этом определять некий рейтинг варианта (т.е. на каждом варианте требуется некое вычисление).
Для чего он это ищет. Если найти вариант с максимальным рейтингом. То это задача поиска экстремума.
Иначе в худшем случае ему надо перебрать https://www.cyberforum.ru/cgi-bin/latex.cgi?1\ 000\ 000^{40} комбинаций!!!
1
0 / 0 / 0
Регистрация: 21.11.2009
Сообщений: 73
30.11.2020, 10:06  [ТС]
Цитата Сообщение от AlexVRud Посмотреть сообщение
Тогда могут помочь: генетические алгоритмы, метод отжига и т.п.
Большое спасибо, за подсказку, кажется то что нужно!
Вчера изучал, метод "отжига". Попробую его реализовать.

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

(А в случае с быстрым остыванием, не будет ли ситуации, когда найденный минимум, будет "хуже", чем в предыдущем цикле остывания (наверное, нужно запоминать минимум "глобального" процесса). Да, еще и сами кол-ва повторений циклов "остывания" нужно регулировать (например, три цикла "глобальный" минимум не падает, то стоп программа)

Добавлено через 2 минуты
Цитата Сообщение от vantfiles Посмотреть сообщение
покажите исходник, возможно получится избавиться от рекурсии
Спасибо, за желания помочь, но кажется нашел направление, возможного решения.

Добавлено через 1 минуту
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Похожая задача год назад на форуме возникала - и Unikum'у надо просто в алгоритме из этого поста 30 вложенных циклов вместо константы MAX_INDEX_VALUE использовать массив значений верхних границ (в котором значения элементов задаются для каждого переключателя), ну и число переключателей тоже должно задаваться вручную (вместо использования константы INDEX_COUNT).
Т.е. комбинация (вектор) значений индексов будет получаться без всякой рекурсии, вызовом функции Next(), в которой независимо от числа переключателей будет всего 1 цикл.
Интересный метод. Спасибо, возьму на вооружение, на будущее!

Добавлено через 14 минут
Цитата Сообщение от AlexVRud Посмотреть сообщение
Для чего он это ищет. Если найти вариант с максимальным рейтингом. То это задача поиска экстремума.
Да, задача поиска экстремума. Только не одного, а двух, т.е. в задаче нужно, поймать максимально сильный сигнал и чтобы в этом сигнале было меньше шумов. Т.е. найти лучший вариант с максимальным уровнем "силы" и при этом с минимальным уровнем "шума".
Пока склонялся, отбирать лучший вариант, сравнивая, по одному общему параметру "качество=сила/шум".
(Но кажется, это не совсем правильно, в голове держу мысль, что нужно этот общий параметр вычислять более сложно, через нахождения экстремум дифференциальных уравнений. Но сам пока, даже не представляю как это сделать) )

Возможно, в методе "отжига", общий параметр и не нужно будет вычислять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2020, 10:06
Помогаю со студенческими работами здесь

программа вычисления пи
Здравствуйте, помогите составить программу вычисления ряда чисел Pi=2*((2/1)*(2/3)*(4/3)*(4/5)*(6/5)*(6/7)*.... и так далее) Где каждый...

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

Программа вычисления
Помогите решить эту задачу, выдаёт неправильные результаты, при x=-1 должно быть 0, при x=3 должно быть 6,95. У меня почему то при x=3...

Программа вычисления
Ребята, помогите сделать программу. Выполнить вычисления Х согласно заданного выражения. Корректность результата проверить в отладчик...

программа вычисления
Составьте программу вычисления суммы тех элементов одномерного массива A(N),что расположены перед последним нулевым элементом данного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru