Ru-Board.club
← Вернуться в раздел «Программы»

» Mathematica (математика)

Автор: 28111981
Дата сообщения: 11.10.2008 23:41
Griefin
не понял вопроса. уточните.

popkov
Разобрался с Бенчмарком. Содержимое собственно бенчмарка (исполняемые операции) можно посмотреть сделав такую штуку:
Needs["Benchmarking`"]
BenchmarkReport[]
В итоге сгенерится страничка с отчетом, в которой можно посмотреть все используемые в бенчмарке примеры. Кстати, в "математике 5" и в 6й содержание бенчмарка одно и то же вплоть до коэффициентов. Т.е. можно напрямую сравнивать производительность разных поколений движков математики.

Пробовал параллелить задачи на многоядернике с помощью PCT 2.0 - мечта
Автор: Griefin
Дата сообщения: 12.10.2008 02:51
28111981
Как создавать опции для функций я уже сам нашел. С бенчмарком сравнения 5-й и 6-й версий уже делались, см. предыдущие страницы. По бенчмарку все бы ничего, но на реальных численных расчетах 6-я версия значительно отстает от 5-й.

Если вам не трудно, напишите краткое руководство о том, как использовать PCT 2.0 локально на одной многопроцессорной машине.
Автор: 28111981
Дата сообщения: 12.10.2008 03:11

Цитата:
По бенчмарку все бы ничего, но на реальных расчетах 6-я версия значительно отстает от 5-й.

Хз, я вот для себя и своих задач вывел такую закономерность для 6й версии:
- 64 битная система опережает по скорости 32 битную процентов на 15 на том же железе (меняется только операционка).
- В линуксе (opensuse 11) математика шпилит на 10-15 % быстрее чем под виндой. Из чего растет разница (качество настроек системы или же превосходство начинки ОС) я не вникал. Это такое поверхностное наблюдение..

На моих задачах (операции с матрицами и задачи оптимизации) значительного отставания 6ки от 5ки я не видел. Хотя и задачи такой сравнительной для себя не ставил - 6ка покорила меня своими преимуществами в плане отображения информации
Автор: Griefin
Дата сообщения: 12.10.2008 03:22
А... все оказалось очень просто:

Needs["Parallel`Debug`"]
Needs["Parallel`"]

Для каждого из ядер процессора запускаем по slave:

LaunchSlave["localhost"]
LaunchSlave["localhost"]
LaunchSlave["localhost"]
LaunchSlave["localhost"]

Для проверки можно запустить что-то ресурсоемкое:

a = Table[Integrate[Sin[x]^5/x, {x, i Pi, Infinity}], {i, 0, 100}]; // Timing

{64.656, Null}

b = ParallelTable[Integrate[Sin[x]^5/x, {x, i Pi, Infinity}], {i, 0, 100}]; // Timing

{0.015, Null}

Результаты, мягко говоря, впечатляют! Как бы сделать так, чтобы ядра Mathematica по умолчанию запускались с пониженным приоритетом, и система не глохла при вычислениях?
Автор: 28111981
Дата сообщения: 12.10.2008 03:39

Цитата:
Если вам не трудно, напишите краткое руководство о том, как использовать PCT на многопроцессорных системах.

Хелп в PCT достаточно подробен, как и во всех математиках.
А если коротко, то смотрите пример:


Добавлено:

Цитата:
Результаты, мягко говоря, впечатляют! Как бы сделать так, чтобы ядра Mathematica по умолчанию запускались с пониженным приоритетом, и система не глохла при вычислениях?

вы меня опередили
для задания приоритета самый простой способ - запустить фронт-енд, задать приоритет ему, после чего все запущенные им дочерние процессы получат такой же приоритет, например, "ниже среднего"
Автор: Griefin
Дата сообщения: 12.10.2008 03:50
У меня хелп по PCT почему-то не отображается. Одни белые страницы.
Автор: 28111981
Дата сообщения: 12.10.2008 03:52
в мат. 6,0,3 + ПЦТ 2,0 - все путем.
Автор: Griefin
Дата сообщения: 12.10.2008 04:23
Да, я просто запускал его из версии 5.2. Сейчас запустил из 6.0.3, там действительно все путем. Однако, 5-я версия даже простой пример считает ощутимо быстрее 6-й.

b = ParallelTable[Integrate[Sin[x]^5/x, {x, i Pi, Infinity}], {i, 0, 1000}]; // AbsoluteTiming

В 5.2:
{79.1718750 Second, Null}

В 6.0.3:
{206.9843750, Null}
Автор: 28111981
Дата сообщения: 12.10.2008 11:09
Griefin
А сколько у вас ядер? в итераторе ParallelTable указывается число потоков в которые параллелизуется счет. У вас что 1000 ядер?
Имхо, у вас был какой-то глюк на этой почве, потому и показало, что М5 существенно быстрее М6. Она, конечно, местами быстрее, но не так резко...
Автор: Griefin
Дата сообщения: 12.10.2008 18:28
Четыре ядра. 1000 -- это верхний предел для бегущего индекса i. Потоков (threads) в Mathematica вообще нет. Параллелизм достигается засчет запуска четырех процессов (ядер Mathematica), каждому из которых планировщик ОС выделяет свое ядро процессора. Этот пример выбран, т.к. он очень удобен для распараллеливания: каждый кусок списка обрабатывается своим ядром. В вычислениях таких интегралов Mathematica 5 чуть быстрее, но самих интегралов много, и засчет этого выигрыш получается большим. На более серьезных расчетах в 6.0.3, даже с одним ядром, я вижу примерно такие же тормоза (в полтора-два раза медленнее, чем 5-е версии).
Автор: 28111981
Дата сообщения: 13.10.2008 20:43
Griefin
Да, я уже понял, что начудил в предыдущем посте..
В хелпе к ParallelTable написано, что распараллеливание идет по первом итератору, а так как я сейчас экспериментирую с тройным Феномом, то и стал автоматически приведенную вами тысячу делить на свои три..

Под потоками имел ввиду раздачу списка отдельным счетным ядрам.

Различие быстродействия 5-й и 6-й версий, честно говоря, мне глаза не резало. Может потому что в большинстве случаев имел дело с численными методами и обработкой экспериментальных данных.

Вы пробовали, ParallelCommads, а именно ParallelContourPlot? Что-то у меня они не пошли - какие-то ошибки выдаются там, где в одноядерном режиме все гладко..
Мне показалось, или при использовании нескольких кернелов память поедается математикой не так агрессивно, как если бы делалось все с одним ядром?
Автор: Griefin
Дата сообщения: 15.10.2008 21:14

Цитата:
Различие быстродействия 5-й и 6-й версий, честно говоря, мне глаза не резало. Может потому что в большинстве случаев имел дело с численными методами и обработкой экспериментальных данных.

В численных расчетах тоже отставание есть, но не такое большое. В 6.0, судя по тестам, замедлились элементарные операции. Это дает о себе знать.


Цитата:
Вы пробовали, ParallelCommads, а именно ParallelContourPlot? Что-то у меня они не пошли - какие-то ошибки выдаются там, где в одноядерном режиме все гладко..

Да, пробовал. PCT 2.0 только в Mathematica 5.2 полноценно работает. Для 6-ки нужен 2.1.
Автор: 28111981
Дата сообщения: 15.10.2008 23:34

Цитата:
PCT 2.0 только в Mathematica 5.2 полноценно работает. Для 6-ки нужен 2.1.

Я именно в 6.0.3 сейчас пытаюсь освоить. Затык был пока тока с этими графическими функциями... а так работает.
Автор: Griefin
Дата сообщения: 16.10.2008 21:12
В действительности, это небольшая проблема. Можно заменить ParallelContourPlot на ListContourPlot[ParallelTable[...]]
Автор: a1ekseo
Дата сообщения: 18.10.2008 18:41
Подскажите, пожалуйста, возможно ли в Mathematica видеть весь ход решения задачи? В моем случае - нахождение предела функции. Сразу прошу прощения за такой такой глупый вопрос, я совсем недавно начал работать в этой среде....
Автор: amorua
Дата сообщения: 18.10.2008 20:18
a1ekseo
Может Trace[] поможет. Хотя точно не уверен...
Автор: Griefin
Дата сообщения: 20.10.2008 03:55
Для корректного сравнения производительности Mathematica в одноядерной и многоядерной конфигурациях нужно перезапускать master-ядро. Если этого не делать, то она берет результаты из кэша. Этим и объясняются те нереальные ускорения параллельных процедур. Если сделать все по правилам, то выигрыш на том примере будет не так велик. 65 секунд с одним ядром и 21 секунда с четырьмя.
Автор: 28111981
Дата сообщения: 20.10.2008 12:51
Griefin
ясное дело, что перезапускались ВСЕ ядра
даже с т.з. освобождения памяти это уже имеет смысл.


Цитата:
В действительности, это небольшая проблема. Можно заменить ParallelContourPlot на ListContourPlot[ParallelTable[...]]

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

a1ekseo
халява-с бывает только в сказках.. получить ответ со всем решением и твоим почерком позволяла только одна компьютерная система - Электроник из одноименной книги/фильма
Автор: Griefin
Дата сообщения: 20.10.2008 23:19
28111981
В ListPlot есть возможность интерполяции сплайнами до 3-й степени, см. опцию InterpolationOrder. А адаптивный алгоритм, заложенный в Plot, очень часто оказывается медленнее, чем тупое построение по точкам.
Автор: 28111981
Дата сообщения: 23.10.2008 01:29
Griefin
так вот именно, что когда я скармливаю листплоту большой список, то уже генерация картинки из списка занимает существенно больше времени, чем генерация собственно списка. Это особенно заметно для ЛистКонтурПлот и матриц больше чем 100*100.
Если нужно сгенерить единичные картинки - можно потерпеть, но мне вот нужно ролик сделать.. и тут бы побольше кадров дать для наглядности и гладкости картинки.
А тут вроде есть возможность распараллелить это процесс... пока не идет. буду искать решение.
Автор: maaaxxx
Дата сообщения: 04.11.2008 12:57
Помогите плизз. Как в mathematica в одном Boxe отобразить сразу две поверхности, которые строится операциями
screw1 = ParametricPlot3D[{v Cos[u], v Sin[u], u}, {u, 0, 4 \[Pi]}, {v, 1, 2}]
screw2 = ParametricPlot3D[{v Cos[u], v Sin[u], u + 5}, {u, 0, 4 \[Pi]}, {v, 1, 2}]
Автор: vb2008
Дата сообщения: 04.11.2008 13:04
news about Mathematica 7. Release in nov 2008

--------------------------------------------------------------------

http://groups.google.com/group/sci.math.symbolic/msg/f9e5e3f3e8415474

--------------------------------------------------------------------

>How much does it cost you to build a human readable
>Mathematica 7 bug data base for each of 2700 functions?

Lets try to estimate: Assume it takes, on average, a week for one
programmer to write a regression test suite per function. Assume it costs
$1,000 per week for salary of this programmer.
Assume it takes 3 months to build the database and other supporting tools.

Hence it will cost about 2.7 million dollars ?

>How much time it would take for you, a human being?

About 2700/52 = 51 years?

-------------------------------------------------------

>How much does it cost us to build a human readable
>Mathematica 7 bug data base for each of 2700 functions?

Do not know.

>How much time it would take for the VM machine?

I do not know how your VM machine works, but may be 48 hrs? 72 hrs?

Nasser

--------------------------------------------------------------------

Best wishes,

Vladimir Bondarenko

Co-founder, CEO, Mathematical Director

http://www.cybertester.com/ Cyber Tester Ltd.
Автор: maaaxxx
Дата сообщения: 04.11.2008 13:23
нашел
Show[screw1, screw2]
Автор: Griefin
Дата сообщения: 04.11.2008 17:24
Т.е. люди из Wolfram Research таки поддались главному соблазну всех программистов: побольше быдлокодить и поменьше думать о качестве?
Автор: vb2008
Дата сообщения: 04.11.2008 18:54

Цитата:
Т.е. люди из Wolfram Research таки поддались главному соблазну всех программистов: побольше быдлокодить и поменьше думать о качестве?


Глагол сильный! Спасибо за обогащение моего лексикона!
Автор: Griefin
Дата сообщения: 04.11.2008 19:26
vb2008
Вы linux.org.ru, наверное, ни разу не читали. Там этот глагол постоянно используется.
Автор: vb2008
Дата сообщения: 07.11.2008 06:31
http://groups.google.com/group/sci.math.symbolic/msg/568f9e54feeb4374

"The Cyber Tester: Blending Human and Machine"

http://blog.futuretest.net/2008/10/cyber-tester-blending-human-and-machine.html

We already have the words to say on this issue.

It would be somewhat ahead of time to do it right now.

They say, actions speak louder than words.

Still, possibly, the time has come to convey the fact,
there is a Private directory at cybertester.com.

Best wishes,

Vladimir Bondarenko

Co-founder, CEO, Mathematical Director

http://www.cybertester.com/ Cyber Tester Ltd.

------------------------------------------------------

"We must understand that technologies
like these are the way of the future."

------------------------------------------------------
Автор: egorovshura
Дата сообщения: 15.11.2008 18:40
Прошу помощи у здешних специалистов.
Пытаюсь доказать простенькую теорему в Mathematica 6.0.3

следующая операция

Resolve[
ForAll[{a, b, c, d},
a >= 0 && b >= 0 && c >= 0 && d >= 0 && b >= a && d >= c && a >= c &&
b <= d,
Delta[{a, b}, {c, d}] == 0]]

зависает, но когда я решаю

Resolve[
Exists[{a, b, c, d},
a >= 0 && b >= 0 && c >= 0 && d >= 0 && b >= a && d >= c && a >= c &&
b <= d,
Delta[{a, b}, {c, d}] != 0]]

т.е. поменял ForAll на Exists и == на !=. Такая задача решается мгновенно.

Как мне кажется это эквивалентные формулировки одной и той же задачи, или я что-то упустил?
Автор: qweasdzxc2
Дата сообщения: 15.11.2008 19:04
Проблемы с Mathematica 4.0
Проблема в том, что не хочет читать обычные файлы.
Говорит

ReadList::"initstate": ReadList cannot be used during initialization

Даже созданные самою Математикой файлы потом не читает без этих увещеваний:

Export["out1.dat", {6.7, 8.2, -5.3}, "List"]

!! out1.dat

6.7
8.2
-5.3

Import["out1.dat", "List"]

ReadList::"initstate": ReadList cannot be used during initialization."

General::"stream": System`ConvertersDump`parseToFields[<>]is not a string, InputStream[ ], or OutputStream[ ]."

Версия Mathematica 3.0 раньше работала, правдо сейчас не хочет запускаться.
Что посоветует честной народ?

Автор: Partner1
Дата сообщения: 24.11.2008 08:36
a1ekseo
К сожалению в Mathematica нет вывода хода решения задачи,
как альтернатива можно в Maple:
> with(Student[Calculus1]):
> LimitTutor();

Страницы: 12345678910111213141516171819202122232425262728293031323334

Предыдущая тема: Идея несуществующей программы...


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.