![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Ronin08 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 16.2.2008 Где: г.Москва Репутация: 1 Всего: 1 |
Вопрос следующего характера:
Нужно перемножить 2 матрици; пользователь вводит размерность матрицы и число потоков, с последующим построением программой графика с зависимостью кол-ва потоков от времени просчета премножения двух матриц. Как это можно организовать? С матрицей все понятно, но как там втулить изменяющееся количество потоков? Заранее благодарен Это сообщение отредактировал(а) Ronin08 - 23.3.2008, 01:49 --------------------
Зачем вставать рано или поздно? Надо вставать вовремя |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
наверно, наоборот
Ronin08, какими средствами Вы намерены пользоваться? Например, .NET 3.5 Parallel Extensions или создание потоков будет происходить вручную (...и интересует, как именно с ними работать) или что-то другое? Это сообщение отредактировал(а) marcusmae - 23.3.2008, 01:59 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| Ronin08 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 16.2.2008 Где: г.Москва Репутация: 1 Всего: 1 |
Логично
Создание потоков вручную; Меня интересует как привязать к функции перемножения матриц неопределенное число потоков, которое задаеться пользователем; Это сообщение отредактировал(а) Ronin08 - 23.3.2008, 02:07 --------------------
Зачем вставать рано или поздно? Надо вставать вовремя |
||||
|
|||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Ronin08, я не вижу проблем созданию N (задано пользователем) потоков путём создания массива экземпляров System.Threading.Thread в количестве N штук. К каждому из них можно было бы привязать одну и ту же функцию с параметрами. Если достаточно разбиения по потокам лишь по одной из размерностей матрицы, то этой функцией могло бы быть скалярное произведение -перемножение строки первой матрицы на столбец второй (получится чиcло) или перемножение строки первой матрицы на всевозможные столбцы второй (получатся вектора-строки результирующей матрицы). Как только выбор сделан и функция потока написана, останется в основной функции перемножения в цикле запустить необходимое число потоков - один за одним. Есть ряд других тонкостей, связанных с совместным использованием памяти.
Это сообщение отредактировал(а) marcusmae - 23.3.2008, 02:30 -------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| Ronin08 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 16.2.2008 Где: г.Москва Репутация: 1 Всего: 1 |
Функция перемножения матриц выглядит так:
есть предположения как сделать n или n*n потоков, если размерность матрици n но видимо это мысли не в ту сторону. Надо чтобы можно было задавать любое число потоков marcusmae , не совсем представляю как должна выглядеть функция потока! Если небольшая можешь наброски сделать! Кстати благодарю, за почти on-line ответы --------------------
Зачем вставать рано или поздно? Надо вставать вовремя |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
все, что должно быть в коде потока, так это тело вложенного цикла, которое Вы выложили
-------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
| Ronin08 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 16.2.2008 Где: г.Москва Репутация: 1 Всего: 1 |
у меня два вложенных цикла. Не понятно как потом связать функцию перемножения матриц и функцию потока --------------------
Зачем вставать рано или поздно? Надо вставать вовремя |
|||
|
||||
| marcusmae |
|
|||
![]() stravaganza ![]() ![]() Профиль Группа: Участник Сообщений: 874 Регистрация: 26.3.2006 Репутация: 22 Всего: 39 |
Два вложенных цикла - две разные стратегии разделения по потокам (писали о них). Имхо, лучше положить в поток средний цикл. А связь потоков с функцией перемножения заключается в старте потоков с параметрами и указанием того, куда получать возвращаемые значения (см. ParameterizedThreadStart).
-------------------- ἀπὸ μηχανῆς θεός |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |