Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|||||||||||
1 | |||||||||||
Прочесть вещественную матрицу из файла02.01.2010, 02:58. Показов 3273. Ответов 37
Метки нет (Все метки)
Задача прочесть матрицу из файла и просуммировать элементы каждой строки, а потом вывести в результирующий файл. Я никак не могу прочесть вещественные элементы.
Для ДОСа можно так как тут https://www.cyberforum.ru/asse... 74003.html А вот здесь я непойму как найти 1) точку, чтобы разделить целую часть и дробную 2) пробел, табуляцию, перенос строки. Матрица в файле записана по строкам через пробел.
0
|
02.01.2010, 02:58 | |
Ответы с готовыми решениями:
37
Определить вещественную динамическую матрицу Построить вещественную матрицу по образцу Построить вещественную матрицу A (10,10) по правилу Сформировать вещественную матрицу 5х5 |
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
03.01.2010, 04:01 | 21 |
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||||||
03.01.2010, 04:10 [ТС] | 22 | |||||
Хорошо. Вернемся к посту номер 12. Как же все таки это сделать?
Не по теме: Я могу и сам допереть, но я с сопроцессором почти не работал. Мне нужно будет потратить на это день. Поэтому и решился спросить) Добавлено через 5 минут
0
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
||||||
03.01.2010, 04:18 | 23 | |||||
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||||||
03.01.2010, 04:31 [ТС] | 24 | |||||
Массив для чисел 1, 10, 100 все таки будет, так что это дело ускорится
Спасибо. Выручили. Один только остался вопрос: Можно выгружать так?
0
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
||||||
03.01.2010, 04:37 | 25 | |||||
да можно, но можно и так.
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
03.01.2010, 04:46 [ТС] | 26 |
мне тут не нравится умножение. Если компилятор догадается сделать его сдвигом - то хорошо, а если нет - опять потери производительности. Мне ценен каждый такт
Вот еще была идея распараллелить вычисления, но так как у нас компы в универе одноядерные, то выход вижу такой: Одновременно вычислять на сопроцессоре, с помощью mmx, и еще задействовать графический процессор (он, скажем, хорошо приучен вічислять склярніе пр-я, так как єто надо для графики, и ему можно затолкать наборі вещественніх чисел, а он их перемножит). Как Вы думаете, стоит ли связываться? И это же будет нужна многопоточность? Добавлено через 3 минуты допустим первое моё задание - перемножить 2 матрицы большие. Тут у меня алгоритм, который блоками их перемножает, т. е. я могу разбить её на блоки, и скармливать одновременно ЦП(пусть читает следующее из файла), сопроцессору, ммх, и видеокарте. А потом все это собрать воедино уже, скажим, сопроцессором. Так можно?
0
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
03.01.2010, 04:50 | 27 |
Это не компилятора команда, а у процессора такой вид аддресации есть. Ес-но он сдвигом делать будет.
C CUDA (а именно так называется технология пользования в/картой nVidia для вычисления) я ниразу не сталкивался, но мне почему-то кажется, что из асма это будет очень немалый геморой делать. А mmx может работать только с целыми числами и деления у него нету. К тому же mmx и FPU пользуют одни и те же регистры, поэтому нельзя их использовать одновременно. Можно было бы попробовать на SSE командах сделать, но я опять же не имею возможности с ними экспериментировать.
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
03.01.2010, 04:57 [ТС] | 28 |
Спасибо. Ну уж не знаю, получиться ли у меня с видеокартой поработать, но в принципе это реально. И причем прирост наблюдается немалый. Скажем даже у старенькой 6600 процессор вроде был 300Mh А многопоточность из масма с помощью вин АПИ реально заюзать? создать новый поток вроде мне удавалось, вот поместить туда вычисления - нет.
0
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
03.01.2010, 05:01 | 29 |
Если время терпит вот тут человек что-то рассказывал про свой алгоритм вычисления матриц. Я особо не вчитывался что там, но может полезно.
Добавлено через 2 минуты А почему бы нет, только вот будет ли от этого прирост производительности на одноядерной машине, это совсем другой вопрос
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
03.01.2010, 05:11 [ТС] | 30 |
Спасибо. Насчет прироста - это кот в мешке. Ну на С++ я делал - прирост был. Там надо экспериментировать. Причем если слишком много потоков - тоже плохо.
Кстати, насчте того, что Вам хватает 192 метра ОЗУ. Вот даже в этой задаче мне чтобы эффективно считать файл, и потом без проблем работать с этой матрице нужно 10^5*10^5*4=4*10^10 байт или 4 гига памяти. Поэтому я буду хранить матрицу по частям. У меня как раз 4 гига ОЗУ, но моя 32 битная хрюша их всех не видит. Щас интенсивно юзают 64 битную Висту скажем.
0
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
03.01.2010, 05:18 | 31 |
Скажем так я вообще не понимаю практический смысл таких матриц. Единственное, что мне в голову приходит - это 3d графика, но с ними вроде как видеокарта должна работать, а не програмист.
Добавлено через 3 минуты Ну это проблема винды, а не процессора. Он-то как раз на 4 (с некоторые материнками и на 6) гигов расчитан. Писал кто-то из наших форумчан даже статейку на эту тему...
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|
03.01.2010, 18:09 [ТС] | 32 |
Ну это применятся в математической статичтике, для анализа систем, там для обработки статистических данных требуется найти решение или хотя бы псевдорешение большой системы. Ну 100000 это предел, обычно системы получаются на пару тысяч входов. Но даже для системы 4000 x 4000 для хорошей точности нужно 256 метров памяти. Что уже не мало. Ну там есть методы хранения хорошие, вообщем это все философия. Я думаю сделать прогу, чтобы она максимум тянула 10000 х 10000 матрицы. И хватит
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||||||
03.01.2010, 23:52 [ТС] | 33 | |||||
Реализовал я чтение, но что-то оно читает одни нули. Кстати выводит в фай оно правильно. Если в eax засунуть какое-нибудь число, то в файл оно его запишет. Выложу код и исходники, может кто заметит ошибку. Я пока не нашел. Даже с отладчиком.
0
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|||||||||||
04.01.2010, 01:57 [ТС] | 34 | ||||||||||
Goodwin98, а как мне к целому привести его? Ну вот скажем у меня в
Вот я доделал код, он успешно помещает в массив и целые и вещественные числа, но когда у меня в массиве часть целых часть вещественных, то после суммирования получается бред.
Переформулирую вопрос: как просуммировать элементы вещественного массива и затем поместить в eax целую часть этой суммы? Как поместить в массив вещественных чисел целое число? Т. е. как из 345345 сделать 345345.000...
0
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
04.01.2010, 02:08 | 35 |
А зачем в одном массиве смешивать разные типы чисел ? Если после точки идут только нули, то это означает, что просто делить не надо и все.
Команда FPU для сложения - fadd, а после сложения сохранить куда нужно округленное число можно просто fistp
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
|||||||||||
04.01.2010, 02:13 [ТС] | 36 | ||||||||||
Т. е.
0
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
04.01.2010, 02:15 | 37 |
да...
1
|
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
|
||||||
04.01.2010, 02:48 [ТС] | 38 | |||||
А суммировать так?
Оно не суммирует. В результате в eax получается 47996544
0
|
04.01.2010, 02:48 | |
04.01.2010, 02:48 | |
Помогаю со студенческими работами здесь
38
Квадратную вещественную матрицу А раз Заменить целочисленную матрицу на вещественную Получить вещественную квадратную матрицу порядка n Получить вещественную квадратную матрицу порядка n Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |