Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Есть такая задача, умножить одну матрицу на другую , делаю я эту в БД занимает оно 24 часа, думаю если вот перемножать матрицы на С++,а не SQL даст ли оно выигрыш в производительности, в каждой матрице где то 500 тысяч записей ну и 5 столбиков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:36 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
А разве неквадратные матрицы способны перемножаться?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:42 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimmf28, ты точно матрицы умножаешь? Или другую операцию над ними делаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:43 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovА разве неквадратные матрицы способны перемножаться?.. да. одна NxM, другая MxN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:44 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропил, ну да матрицы просто они в виде табличек у меня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:48 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Тогда уж NxM на MxK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:48 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
А по теме - вытянуть матрицы да перемножить самому всяко быстрее выйдет чем чисто через sql. Возможное исключение - какое-нибудь нативное расширение на сервере для таких задач, но в общем случае о таком лучше даже не думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:52 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
wst, то есть в с++ это быстрей будет получаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:53 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimmf28wst, то есть в с++ это быстрей будет получаться? да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 14:58 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропилда. Сильно зависит от кривизны рук перемножающего. Если он их в БД 24 часа перемножает... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 15:08 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovИзопропилда. Сильно зависит от кривизны рук перемножающего. Если он их в БД 24 часа перемножает... теперь не уверен.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 15:20 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
По-любому в БД такое делать точно нельзя. Даже не по соображениям производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 16:07 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
MasterZivПо-любому в БД такое делать точно нельзя. почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 16:22 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропилпочему? Наверное, Зив считает, что СУБД плохо справляются с перемножением и сложением множеств... [src=SQL]select a.x,b.y,sum(a.value*b.value) from a join b on a.y=b.x group by 1,2[/src] Как-то так по-моему... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 16:41 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, ага вот так вот почти я и делал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 17:01 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimmf28ага вот так вот почти я и делал так как Сибиряков написал должно работать секунду, а не сутки. Покажи свое "почти так", т.е. текст запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 18:12 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima Tтак как Сибиряков написал должно работать секунду, а не сутки. а может он всё-таки каждую из 500к умножает на 500к ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 21:21 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропил, потому что мир перевернется и наши потомки будут смеяться нам нами, а предки будут плакать в могилах и спрашивать : "за что же мы боролись?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2016, 22:41 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimmf28Есть такая задача, умножить одну матрицу на другую , делаю я эту в БД занимает оно 24 часа, думаю если вот перемножать матрицы на С++,а не SQL даст ли оно выигрыш в производительности, в каждой матрице где то 500 тысяч записей ну и 5 столбиков? Скорее всего ты - большой выдумщик и фантазер. Написать код который быстро считает на С++ это означает что нужно предварительно ПОДГОТОВИТЬ данные для процессинга. Тоесть расположить в памяти строки 1-й матрицы и столбцы второй в таком порядке чтобы они считывались последовательно, были компактны были friendly для кешей L1/L2. А теперь самое интересное. Тебя интересует КАКОЕ время. Время умножения? Или время ПОДГОТОВКИ + время умножения? Не спеши с ответом. Подумай. Это бесконечной длины боян который я всегда спрашиваю у любителей сортировать массивы целых чисел длиной 4Гб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 00:04 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
mayton, 2x500000x5 float - это 20 мегабайт - слёзы. преждевременная оптимизация, как обычно, не нужна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 00:09 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропил, точно-точно не нужна? А может быть 5xfloat расширить до 8x ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 00:56 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
mayton, точно не нужна. достаточно хранить в памяти вторую матрицу транспонированной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 01:04 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропилmayton, точно не нужна. достаточно хранить в памяти вторую матрицу транспонированной Загадками говоришь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 01:08 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
tip78кстати, вот самый лучший алгоритм на данный момент: O(n2.3727) точно секунда? не путайте алгоритмы умножения квадратных матриц и прямоугольных. Пусть у нас есть две прямоугольных матрицы xy и yz. Тогда, асимптотика поиска матрицы r=xy mpl yz составит O(xyz). Алгоритм будет примерно такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. может что-то с индексами напутал, Dimmf28 проверьте самостоятельно. У меня нет времени(код набирал тут) Таким образом в вашем случае необходимо либо 0,125*10^13, либо 0,125*10^8 операций (поскольку операция умножения в пространстве матриц некоммутативна). Думаю что за 30 минут, в крайнем случае за 60 минут, максимальное из этих двух значений число операций должно быть выполнено на не самой мощной вычислительной машине ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 02:21 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
дожили - матрицы умножать разучились ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 09:23 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропил, тыб не вбрасывал - а код написал. Тут - каждый философ. P.S. Show me your ....en code! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 09:45 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
SashaMercurytip78кстати, вот самый лучший алгоритм на данный момент: O(n2.3727) точно секунда? не путайте алгоритмы умножения квадратных матриц и прямоугольных. Пусть у нас есть две прямоугольных матрицы xy и yz . Тогда, асимптотика поиска матрицы r=xy mpl yz составит O(xyz). там такие и обсуждаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 09:54 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
tip78SSпропущено... не путайте алгоритмы умножения квадратных матриц и прямоугольных. Пусть у нас есть две прямоугольных матрицы xy и yz . Тогда, асимптотика поиска матрицы r=xy mpl yz составит O(xyz). там такие и обсуждаются Что в таком случае значит n ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 10:02 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
maytonИзопропилmayton, точно не нужна. достаточно хранить в памяти вторую матрицу транспонированной Загадками говоришь. если вторую матрицу хранить траспонированой, то вместо скалярного произведения строки на столбец нужно считать скалярное произведение строк если матрицы хранятся по строкам - строки располагаются в непрерывных участках памяти со всеми профитами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 10:09 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
У меня как-то изначально не возникало сомнений по поводу транспонирования. Сложно знаешь ли представить себе табличку в БД в 500 тыс колонок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 17:24 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
maytonСложно знаешь ли представить себе табличку в БД в 500 тыс колонок я о представлении в памяти и последующих вычислениях ЗЫ жаль, топикстартер SQL код не предоставил до сих пор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 18:34 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Да тут возможности SQL все просадят нахер. По хорошему надо бить 500 тыщ строк на 2х250 или 4х125 и пускать в двух или четырех процессах но кто посоветует как для generic-dbms обеспечить хотя-бы константное время подготовки этих данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 18:40 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропиля о представлении в памяти и последующих вычислениях Тут как-раз нет проблем: обе матрицы 500000х5, т.е. всего 5000000 элементов. А результат 500000х500000 - его сразу на диск писать. Параллелить тоже не сложно. Можно даже кластером считать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 18:54 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Дима, дорогой мой чел. SQL курсор в общем случае неумеет найти с 250000 по 500000 элемент. Нету у него Seek. Для этого нужно делать партишионинг что в общем случае усложняет задачу и вообще ставит под вопрос смыслы. Для чего? Только для умножения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 18:59 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Я бы не стал сходу утверждать, что люди, делающие разбор и оптимизацию SQL-запросов в движках SQL-серверов зря едят свой хлеб. И рассуждения о секционировании и прочих продвинутых техниках - та самая преждевременная оптимизация. P.S. Тупой запрос поиска "счастливых билетов" отработал "практически мгновенно". Apache Derby без всякого "тьюнингования". Для семизначных чисел, да - заметно медленнее, но в "предел терпиливого ожидания" всё равно уложился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 19:09 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
maytonДима, дорогой мой чел. SQL курсор в общем случае неумеет найти с 250000 по 500000 элемент. Нету у него Seek. Для этого нужно делать партишионинг что в общем случае усложняет задачу и вообще ставит под вопрос смыслы. Для чего? Только для умножения? Я про алгоритмическое решение. SQL тут мало уместен, он на реляционные модели заточен, а тут чистое декартово произведение с сохранением полного результата. Я выше не совсем понял о чем речь, матрицы давно изучены ... и забыты за ненадобностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 19:14 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovЯ бы не стал сходу утверждать, что люди, делающие разбор и оптимизацию SQL-запросов в движках SQL-серверов зря едят свой хлеб. Буквально на днях, написал запрос (MS SQL), разовый, писал лишь бы правильно ситаксис написать, молотило 18 минут. Вторых 18 минут не было, глянул план, чуть поправил - отработало за несколько секунд. Может не зря хлеб едят, но масло я бы им на хлеб не ложил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 20:17 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Люди знающие хлеб и масло это DBA. Это узкие люди. Они свою технологию шарят а шаг влево шаг вправо - уже плывут и руки вверх. Я говорю так потому что я - такой-же. Бывший ДБА. Вобщем надо знать что такое HashTables и B+Tree и основы дисковой оптимизации а все остальное - приложится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 20:22 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
maytonЛюди знающие хлеб и масло это DBA. Это узкие люди. Они свою технологию шарят а шаг влево шаг вправо - уже плывут и руки вверх. Это говорит о том что нынешние технологии далеко не идеальны. Нужны знающие люди чтобы эффективно использовать технологии, а знающих всё досконально людей не бывает. Нельзя быть опытным во всем. Это хорошо - иначе профи будут просто не нужны, любой бред студента исправит компилятор или оптимизатор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 20:30 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonЛюди знающие хлеб и масло это DBA. Это узкие люди. Они свою технологию шарят а шаг влево шаг вправо - уже плывут и руки вверх. Это говорит о том что нынешние технологии далеко не идеальны. Нужны знающие люди чтобы эффективно использовать технологии, а знающих всё досконально людей не бывает. Нельзя быть опытным во всем. Это хорошо - иначе профи будут просто не нужны, любой бред студента исправит компилятор или оптимизатор. Это сложный и глубокий вопрос. Сложный и глубокий. Вот я раньше считал что дев обязан знать весь стек... а сегодня я уже устал. Я не знаю как устроено облако Amazon S3. Но я его юзаю. Я - пользователь облака. Хотя и разработчик. Когда я звоню по мобиле я внутренне представляю себе роутинг сот и ретрансляторов хотя... нахер оно надо если ты просто звонишь. Нафиг знать вообще весь стек технологий если тебе достаточно тех знаний что есть чтобы заработать котлету в несколько К зелени. Как то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 20:37 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
maytonНафиг знать вообще весь стек технологий если тебе достаточно тех знаний что есть чтобы заработать котлету в несколько К зелени. Как то так. все верно, почти, например я давно забыл про умножение матриц, Саша разъяснил 19045164 , но вообще все знать невозможно, слишком много придумано. PS котлеты из мяса вкуснее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 20:50 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
maytonЭто сложный и глубокий вопрос. Сложный и глубокий. У меня напарник любитель все подряд изучать. Поверхностно знает все. Дай ему любую модную хрень, он на следующий день скажет что тут можно то и это. А спроси можно ли "это вот так" ?, не ответит, т.к. вопрос в глубь. Так и живем - он в ширь, я в глубь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 21:01 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima TИзопропиля о представлении в памяти и последующих вычислениях Тут как-раз нет проблем: обе матрицы 500000х5, т.е. всего 5000000 элементов. А результат 500000х500000 - его сразу на диск писать. Параллелить тоже не сложно. Можно даже кластером считать. я предположил другой порядок умножения и матрица на выходе 5x5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 21:34 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima T... и забыты за ненадобностью. как это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2016, 21:37 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропилmaytonпропущено... Загадками говоришь. если вторую матрицу хранить траспонированой, то вместо скалярного произведения строки на столбец нужно считать скалярное произведение строк если матрицы хранятся по строкам - строки располагаются в непрерывных участках памяти со всеми профитами Асимптотика останется прежней. Как я понимаю выигрыш в том, что данные на АЛУ будут поступать быстрее. Какая примерно оценка выигрыша по времени будет за счёт этого ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 04:59 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Лучше конечно оценка снизу. Например время выполнения без транспонирования второй матрицы t, а если будем транспонировать то (1-a)*t, где а in [0, 1). Ещё нужно учесть время которое мы потратим на транспонирование матрицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 06:05 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЛучше конечно оценка снизу. Например время выполнения без транспонирования второй матрицы t, а если будем транспонировать то (1-a)*t, где а in [0, 1). Ещё нужно учесть время которое мы потратим на транспонирование матрицы матрица у него и так транспонированная как уже сказали а вот то, что для получения одного числа результирующей матрицы нужно 5 млн. пар чисел перемножить и сложить с учётом возможных переполнений и пр. - забыли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 07:18 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
И ещё забыли спросить зачем это нужно. Неужели систему линейных алгебраических уравнений решает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 07:23 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Вообще-то главная изюминка алгоритма умножения матриц - это что он хорошо распараллеливается. На языках типа С++, Java это делается легко. На SQL добиться этого будет достаточно сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 07:39 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЕщё нужно учесть время которое мы потратим на транспонирование матрицы Нисколько не потратим. Просто поменять в коде Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 07:59 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryЕщё нужно учесть время которое мы потратим на транспонирование матрицы Нисколько не потратим. Просто поменять в коде Код: plaintext 1. а это поможет? ведь элементы не будут находить рядом с другом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 08:25 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
SashaMercuryа это поможет? ведь элементы не будут находить рядом с другом как раз будут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 08:30 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
ИзопропилSashaMercuryа это поможет? ведь элементы не будут находить рядом с другом как раз будут Не будут. Элемент результата это произведение строки одной на столбец второй. Саша прав, для оптимизации подкачки в кэш проца вторую лучше транспонировать, чтобы столбец стал строкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 08:45 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima TСаша прав, для оптимизации подкачки в кэш проца вторую лучше транспонировать, чтобы столбец стал строкой. 19045116 87 миллисекунд без оптимизации SSE/AVX перемножаются эти матрицы на несчастном ноутбуке. Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 09:04 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропил, а какая на выходе матрица ? Размерность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 09:06 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
SashaMercury, 5x5 . 500000x500000 - полагаю менее вероятной, топикстартер молчит как партизан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 09:11 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
ИзопропилSashaMercury, 5x5 . 500000x500000 - полагаю менее вероятной, топикстартер молчит как партизан значит у вас выполняется около 10^6 операций, это и должно быть быстро, если не ошибаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 09:16 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Около 10^7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 09:19 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
SashaMercuryэто и должно быть быстро вот я и говорю о бесполезности преждевременной оптимизации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 09:32 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропил87 миллисекунд без оптимизации SSE/AVX перемножаются эти матрицы на несчастном ноутбуке. Что я делаю не так? если результат 5*5, то 25 * (500000 умножений + 500000 сложений) т.е. 25 млн. простейших операций. Добавим служебный код, пусть еще 25 млн. операций. Условно дадим твоему ноуту 2 ГГц проц. Итого: 50 млн. / 2ГГц = 25 мс тормозной у тебя код, есть куда оптимизировать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 09:36 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
ИзопропилSashaMercuryэто и должно быть быстро вот я и говорю о бесполезности преждевременной оптимизации Скорее у него в другом порядке матрицы умножаются, потому так долго. Но в любом случае исполнение алгоритма должно уложиться в 60 минут, как мне кажется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 09:36 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima TИтого: 50 млн. / 2ГГц = 25 мс тормозной у тебя код, есть куда оптимизировать :) Дима что-то твоя формула у меня вызывает искреннее изумление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 09:44 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропил500000x500000 - полагаю менее вероятной, топикстартер молчит как партизан Что-то я затупил в начале, про 5*5 не подумал, 500000x500000 даже по четыре байта на значение займет 1 Тб. Нереальная какая-то табличка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 09:47 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima T1 Тб. Нереальная какая-то табличка. предположим - реальная. Затык в диске будет. Что опять же свидетельствует о бессмысленности преждевременной оптимизации вычислений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 10:37 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Затестил SQL и правда задачка не для него. Представил матрицы в виде таблиц (x, y, value) Соответственно расчет Код: sql 1. 2. 3. умирает уже при матрице 5000*5 Скрипт на MS SQL Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. надо хранить в виде (x, value1, value2 ...) и (y, value1, value2 ...) и выборка как-то так Код: sql 1. 2. вроде правильно, но коряво и не универсально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 10:54 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima Tвроде правильно, но коряво и не универсально. зато быстро, а насчёт универсальности и корявости - код сгенерить можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 11:04 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima TСоответственно расчет Код: sql 1. 2. 3. Условие связи таблиц ты куда-то пропил. Вместе с индексами. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 11:42 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDima TСоответственно расчет Код: sql 1. 2. 3. Условие связи таблиц ты куда-то пропил. Вместе с индексами. Нет условия, это декартово произведение, все со всеми. Индексы тут не помогут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 11:58 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima TНет условия, это декартово произведение, все со всеми. Тогда на выходе у тебя совсем не произведение матриц, а матрица скалярного произведения. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 12:02 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDima TНет условия, это декартово произведение, все со всеми. Тогда на выходе у тебя совсем не произведение матриц, а матрица скалярного произведения. Точно. При такой структуре похоже вообще селектом не посчитать. Сломал мозг в попытках придумать условие объединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 12:53 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima TЗатестил SQL и правда задачка не для него. Представил матрицы в виде таблиц (x, y, value) Соответственно расчет Код: sql 1. 2. 3. умирает уже при матрице 5000*5 наверное всё-таки SQL это хранение и поиск данных, а расчёты это C, GO, Fortran может... что если в памяти хранить по столбам например? перемножил столб на значение из другой матрицы, на его место взял другой а результаты складировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 13:01 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dima TПри такой структуре похоже вообще селектом не посчитать. Сломал мозг в попытках придумать условие объединения. Мой запрос с первой страницы пробовал? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 13:03 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
tip78что если в памяти хранить по столбам например? первую матрицу хранить по строкам, вторую по столбцам(транспонированую) полезно что для SQL рассчётов, что C вуаля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 13:22 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
В этой задаче SQL нужно вообще вынести за скобки. Иначе мы никуда не уедем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 13:25 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропилпервую матрицу хранить по строкам, вторую по столбцам(транспонированую) полезно что для SQL рассчётов, что C Пофиг. Просто создать правильные индексы. Нормальная БД вообще в таблицу не полезет, будет брать данные из упорядоченного индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 13:29 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Изопропилtip78что если в памяти хранить по столбам например? первую матрицу хранить по строкам, вторую по столбцам(транспонированую) полезно что для SQL рассчётов, что C а чем полезны эти пляски? (спрашиваю для просвещения, как НЕ математик) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 13:39 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDima TПри такой структуре похоже вообще селектом не посчитать. Сломал мозг в попытках придумать условие объединения. Мой запрос с первой страницы пробовал? Сейчас попробовал. Подходит. Оказалось я в тестовых данных накосячил. В итоге совсем запутался. Матрицы 500000*5 с индексами 4 сек. работает. Без индексов - 5 сек. скрипт Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 13:44 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
tip78а чем полезны эти пляски? (спрашиваю для просвещения, как НЕ математик) вычисляем скалярное произведение строки первой на столбец второй если вторая матрица хранится по строкам как и первая - придётся обращаться к несмежным ячейкам памяти - выборка и работа кэша процесссора станут неэффективными и лишимся возможности на полную катушку задействовать SSE/AVX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 13:45 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
Dimmf28Есть такая задача, умножить одну матрицу на другую , делаю я эту в БД занимает оно 24 часа, думаю если вот перемножать матрицы на С++,а не SQL даст ли оно выигрыш в производительности, в каждой матрице где то 500 тысяч записей ну и 5 столбиков? не читал всю тему, отвечу, что есть формулы для квадратных матриц, которые делают перемножение не за N * N * N, а за N ^ 2.7 (примерно), выигрыш ощущается. Твои матрицы можно свести к квадратным, дописав нули. А можно, наверное, и для неквадратных ускоряющие формулы вывести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2016, 00:07 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
log_hereDimmf28Есть такая задача, умножить одну матрицу на другую , делаю я эту в БД занимает оно 24 часа, думаю если вот перемножать матрицы на С++,а не SQL даст ли оно выигрыш в производительности, в каждой матрице где то 500 тысяч записей ну и 5 столбиков? не читал всю тему, отвечу, что есть формулы для квадратных матриц, которые делают перемножение не за N * N * N, а за N ^ 2.7 (примерно), выигрыш ощущается. Твои матрицы можно свести к квадратным, дописав нули. А можно, наверное, и для неквадратных ускоряющие формулы вывести. и что получится, если умножить на 0? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2016, 17:24 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
log_hereDimmf28Есть такая задача, умножить одну матрицу на другую , делаю я эту в БД занимает оно 24 часа, думаю если вот перемножать матрицы на С++,а не SQL даст ли оно выигрыш в производительности, в каждой матрице где то 500 тысяч записей ну и 5 столбиков? не читал всю тему, отвечу, что есть формулы для квадратных матриц, которые делают перемножение не за N * N * N, а за N ^ 2.7 (примерно), выигрыш ощущается. Твои матрицы можно свести к квадратным, дописав нули. А можно, наверное, и для неквадратных ускоряющие формулы вывести. Предлагаешь матрицу 5*500000 привести к 500000*500000, т.е. сделать ее в 100000 раз больше и думаешь ускорить потом это какими-то алгоритмами? Похоже ты даже то что процитировал не почитал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2016, 19:54 |
|
||
|
Насчет производительности
|
|||
|---|---|---|---|
|
#18+
В науке и технике для представления толстых матриц (больше тыщи строк или столбцов) используется механизм Sparse matrix (разреженные). Представить себе матрицу порядка 50 на 50 тыщ которая-бы несла ценную и полезную инфу весьма сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2016, 20:16 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2018547]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
120ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 238ms |

| 0 / 0 |
