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

» CUDA - использование видеокарт для расчетов

Автор: akaGM
Дата сообщения: 30.05.2009 12:50
FuzzyLogic
ясн...
у нас уже больше года поднимают кластер начального уровня

Watersad

Цитата:
приведите, пожалуйста, пример принципиально нераспараллеливаемой задачи большей, чем на 10^15 флопов.

я не знаю, что ты такое просишь и не умею измерять задачи в попуг... во флопах

вот реально крутящаяся у меня сейчас задача:
поатомный рост кристалла на кластере-затравке: на начальный кластер присоединяются атом за атомом по определённым правилам. для акта присоединения нужно пробежать весь текущий кластер, кластер:=кластер+1атом
верхнего предела нет
а сам я в это время играю в "King's Bounty" гы
Автор: Watersad
Дата сообщения: 30.05.2009 16:30
akaGM
А я не понимаю в попугаях кластерах-затравках.
Моделирование роста чего на чем и по какой технологии?
Какой метод моделирования?
Сколько времени уходит на 1 цикл (т.е. 1 атом)? Принципиально ли, чтобы перед встраиванием атом пробегал по всей моделируемой поверхности? Каких размеров выращенный кристалл Вас устроит?
Сколько подгоночных параметров? Какова мощность актуального множества этих параметров (короче, сколько просчетов с разными параметрами Вам требуется)?
Ожидаете ли Вы какие-либо действительно "reliable" результаты, или все как с моделированием зонной структуры кристаллов - что заходим, то и намоделируем, благо подгоночных параметров больше, чем подгоняемых величин?


Цитата:
я не знаю, что ты такое просишь и не умею измерять задачи в попуг... во флопах

Честно говоря, это больше похоже на речи студентов, когда у них зачет какой-нибудь или экзамен принимаешь . Вроде бы более четкой формулировки придумать сложно. Хорошо, может быть так:

Код: А че ваще как нащет чортовских тасков щоб на неделю комп грузили а на грид не перегружались в натуре?
Автор: akaGM
Дата сообщения: 30.05.2009 16:38
Watersad
ok
Автор: FuzzyLogic
Дата сообщения: 30.05.2009 20:32

Цитата:
приведите, пожалуйста, пример принципиально нераспараллеливаемой задачи большей, чем на 10^15 флопов.

Нахождение факториала большого числа (отбросим проблему хранения чисел такой величины). Ну и в общем любая в которой много не ёмких итераций каждая из которых зависит от предыдущей.


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

Если честно, сколько работаю с вычислениями в ряде областей - в флопах задачи никто не меряет. Это снова возвращаемся к вопросу akaGM о @Home, вот те задачи действительно можно измерить в флопах. Когда у вас 10^N маленьких подзадач, каждая из которых занимает фиксированное число операций. А у меня скажем модель гидродинамическая, матрица дурная, прямыми методами решать бесполезно, потому пользуюсь итерационными, а кол-во итераций очень сильно зависит от начальных условий.
А ещё новая модель, так та ещё и сетку на которой всё считается перестраивает в зависимости от результатов предыдущего временного шага и если в какой-то области происходит что-то интересное то матрица может вырасти неожиданно процентов эдак на 20-30, а может и на все 100. Нет ветра и штормов - может посчитаться за час, подуло сильно, волны разгулялись - может затянуться и на все десять. Ну и посчитайте ка мне, сколько флопов получится? И дело не в том что я не знаю что такое флоп, а в том что в принципе считать бесполезно. Так что зря вы так на akaGM есть причины по которым в ряде областей эта терминология не используется.


Цитата:
у нас уже больше года поднимают кластер начального уровня

Что-то как-то долго... Вообще реально, я поднимал локальный кластер из 30 машин (лет этак 5 назад) за 3 дня и это вместе с установкой оси на все машины. Правда не было никакой хитрой аутентификации и тому подобного. Просто кучка линух машин связанных отдельной подсетью с установленным MPICH. Да и сейчас не вижу ничего сверхсложного. Даже глобус со всеми его заморочками ставится ну за неделю. А потом уже все баги вылавливаются в процессе использования. А год это как-то лихо.
Автор: akaGM
Дата сообщения: 30.05.2009 21:01
FuzzyLogic

Цитата:
А ещё новая модель, так та ещё и сетку на которой всё считается перестраивает в зависимости от результатов предыдущего временного шага...

во-во...


Цитата:
Что-то как-то долго...

как в том анекдоте: "а кому это на фиг надо?"
сначала думали своими силами, потом кулцхакеров пригласили, потом ещё каких-то "сертифицированных", которые зато успели фирмочку какую-то организовать с нашим физическим адресом...
естественно, решения принимались ни_в_зуб_ногойной администрацией, обычное дело у нас бюджетников...
одну только серверную комнату строили две разные команды гастарбайтеров
зато гранты у нас умеют делить:
60% (!) администрации, 40 -- исполнителям и из этих сорока только 39 на з/п можно...
2000руб в _квартал_ -- ус#№&@%# !
Автор: Watersad
Дата сообщения: 30.05.2009 21:27
akaGM

В том то и дело, что нафиг никому не надо, в этом Вы совершенно правы

Glueck
15.09.2006, 11:51
по поводу второй касты (к которой я отношусь), тут дело не в идиотизме админов, а в недопонимании боссами значимости серверных перед обычными десктопными процессорами, ведь дешевле купить двухпроцессорный конроэ чем ксеон, по этому поводу случай из жизни: работал я в пожарной охране (06.2005-06.2006) сисадмином, для обеспечения парка из 35 компов, там в качестве Домена и файл-сервера (1С и подгрузка рабочих столов пользователей) трудилась машинка: Pentium III Mendocino(кажется так правильно) 500! :о), для тех кто не в теме, проц слотовый, шина памяти у него 100 Мгц, 256Мв памяти, райдом 4 40 Gb дятла(кто знает улыбнется) мать правда от Гигабайта(хорошо хоть не элитгруп воткнули) зато SUMA GF2 MX 400 64 Mb, кароче либо LOL либо плакать, а в бухгалтерии, для обеспечения комфортной!, стабильной!, а главное !быстрой! работы трудились 2Ггц Целики 512 Mb памяти мамки все на 865 чипсетах, бухгалтерская операция занимала от 15-20 минут рабочего времени, до 4-х! часов. Когда я пришел к начальнику меня просто отфутболили, сказали работай! В конце года мне милостиво(после 3-х месячного моего оббивания порога начальства и капания всем и вся что работа тормозит только из-за сервера) разрешили выписать сервак, когда конфигурация была готова(всего 80 тысяч) мне сказали типа нам краевой центр все предоставит, так что жди, после моего увольнения, уже где-то в августе пришел наконец то сервер! Край с нами "поделился" так сказать: два слотовых 500(т.е. те же 100 МГц на шине), 256Мв памяти и в довершение две Сказевых 10 Читахи :о) приправлено это было цирус лоджиком. Вот так-то.

Добавлено:
Прошу прощения, случайно недописанное отправилось.
Привел цитату с одного из форумов, к вопросу об эффективности использования железа.
Так вот в наших с Вами бюджетных организациях ровно как в этой самой пожарной охране.
Неэффективно используются не только компьютеры, разумеется, но и люди.

Вот что Вы мне пишете?

Цитата:
я не знаю, что ты такое просишь и не умею измерять задачи в попуг... во флопах

Оба Ваших утверждения содержат негатив. И это неслучайно. Потому что Вы привыкли именно так к делу подходить. Ведь зарплата Ваша не зависит от того, сделаете Вы расчет за неделю или за месяц, понадобится для этого один ПК или мощный кластер. Такое положение вещей ведет к потере профессионализма. Ну а зачем он (профессионализм) нужен, если бюджетная зарплата в несколько раз меньше коммерческой, и не меняя места работы Вы ничего с этим поделать не можете?
А прикинуть гигафлопы очень легко, для этого нужно разделить время исполнения Вашей программы в секундах на тактовую частоту.

FuzzyLogic
Приведенный Вами ответ,
Цитата:
Нахождение факториала большого числа
абсолютно не верен. Эта задача прекрасно распараллеливается на неограниченное количество компьютеров. Кроме того, я подразумевал прототип задачи, имеющей хоть какой-то прикладной смысл, миллиарды знаков числа пи не из этой оперы. По поводу итераций - это переформулировка вопроса, я же прошу предоставить конкретный пример.

Хорошо, в гигафлопах никто не меряет, тогда в чем меряют?

Если в одном месте шторм - значит в другом месте его нет (в Бразилии тоже кому-то прогноз погоды нужен, правда?). В любом случае погоду больше чем на 3 дня Вы не предскажете, сколько полупроводников Вам не дай. Не так ли?
Как подсчитать гигафлопы "черного ящика" описано выше, для Вашего примера - 3.6*10^4*F*N, где N - число ядер, F - тактовая частота в гигагерцах.
Смысл в пересчете на гигафлопы несомненно есть, другое дело, что такая терминология действительно не принята. Расчеты на видеокартах тоже не очень приняты, но это же не означает, что они неэффективны, правильно?


Цитата:
Что-то как-то долго...

Солдат спит - служба идет.

P.S. Можно же вообще ничего не считать, не только гигафлопы. Например полагаться в предсказании погоды на собственную интуицию, ну или в бубен постучать, иногда это помогает.
Автор: FuzzyLogic
Дата сообщения: 31.05.2009 05:23

Цитата:
абсолютно не верен. Эта задача прекрасно распараллеливается на неограниченное количество компьютеров. Кроме того, я подразумевал прототип задачи, имеющей хоть какой-то прикладной смысл, миллиарды знаков числа пи не из этой оперы. По поводу итераций - это переформулировка вопроса, я же прошу предоставить конкретный пример

Я вам и привёл конкретный пример, гидродинамическая модель. У неё есть T временных состояний, скажем с шагом в 1 секунду. Каждое следующее состояние зависит от предыдущего, т.е. паралеллить в эту сторону смысла нет. Предсказывают погоду обычно минимум на неделю вперёд. Но дело не в предсказаниях, самое трудоёмкое это моделирование прошлого. У моих коллег модель качества воды работает скажем на промежуток в 10 лет с шагом в минуту. И на каждом этом шагу всё те же обращения матриц, которые тоже параллелятся с трудом всё по той же причине ограниченности памятью итд. Причём скажем самый эффективный из методов что я пробовал параллелится приблизно так (на OpenMP) - скорость счёта возрастает в 4.5 раза при счёте на 8 процессорах по сравнению со счётом на одном, т.е. шина памяти в общем-то не выдерживает. А если пользовать MPI, то там совсем мрак, потому как зависит от загруженности сети. И гигафлопы мне в общем-то по барабану, потому как взяв и поделив их кол-во на кол-во процессоров/флоп на проц, я отнюдь не получаю время требуемое мне на счёт. Посчитать я конечно могу, только вопрос, а зачем? Что я знаю? Я знаю среднее время требуемое мне на обсчёт конкретной задачи на конкретном железе или кластере доступном мне.


Цитата:
Оба Ваших утверждения содержат негатив. И это неслучайно. Потому что Вы привыкли именно так к делу подходить. Ведь зарплата Ваша не зависит от того, сделаете Вы расчет за неделю или за месяц, понадобится для этого один ПК или мощный кластер. Такое положение вещей ведет к потере профессионализма.

Вы только не учитываете что ваш профессионализм и его и мой это разные вещи. Просто у меня есть выбор между тем чтобы заниматься своей непосредственной научной работой или оптимизацией счёта. На данный момент мне доступно достаточно вычислительных ресурсов чтобы я не успевал обрабатывать результаты того что я могу посчитать, и ресурсы в общем-то простаивают. Надо ли мне заниматься переносом моего счёта на CUDA? Пока это не приоритет. Именно поэтому я у вас изначально спросил о задаче. Дело в том что мне проще загрузить компьютер который обходится в несколько процентов от моей зарплаты чем потратить полгода на переписывание чего-то что сэкономит флопы которых у меня и так море. Если задача разовая - т.е. вам надо сколько то ресурсов на обсчёт проблемы которая в обозримом будущем снова не возникнет, то может проще обсчитать её чем есть нежели тратить кучу времени на переписывание того что потом уйдёт в стол? Это эффективность труда против эффективности счёта. Если что-то можно выкопать за день лопатой есть ли смысл учиться три месяца на экскаваторщика чтобы потом выкопать эту яму за 15 минут?
Автор: akaGM
Дата сообщения: 31.05.2009 14:04
FuzzyLogic

Цитата:
Вы только не учитываете что ваш профессионализм и его и мой это разные вещи

более чем верно... я бы даже сказал это три большие разницы...

Watersad

Цитата:
Оба Ваших утверждения содержат негатив

ну конечно же! прям с первого слова из единственного абзаца на форуме в глаза бросается... Особенно в проекции на своё окружение в качестве паттерна "модуса вивенди" таких "негативоносителей"...
да, вместо того чтобы разложить свою программу/счёт на байтики/флопики, я предпочту
корректно учесть следующий порядок теории возмущений...
(кстати, отсюда уже непонятый тобою мой вопрос о моделях в начале), бо она (программа) для меня всё-таки вторична, это тул, а не самоцель...
в качестве "улучшательств" же этой своей программы я лучше VCL дельфийский освою (и освоил в той или иной мере)
-----
во, не поленился, нашёл чем тут же в фортран-топике и хвалился


(120 KB)

фигня конечно, но мне ндра...
заодно и FuzzyLogic там заскриншотился в 2007 году... гы
-----
в тебе же говорит или профессионал обсуждаемого вопроса, кот. и допустить не может, чтобы что-то делалось не как _должно_, или же непреклонный перфекционист
хотя одно другому, конечно же, не мешает и ни в коей мере не является оскорблением с моей стороны...

в общем, всё что мне сказалось бы, так или иначе сказано уже за меня FuzzyLogic
Автор: Watersad
Дата сообщения: 31.05.2009 14:21
FuzzyLogic
Прежде всего .
Однако несколько уточнений.
"Абсолютно не верен" - относилось исключительно к примеру с факториалом. Просто потому что с этим примером Вы действительно были не правы.
Относительно 10 лет с шагом 1мин: это 5*10^6 циклов. Что довольно много. Потому что если модель устойчива к начальным условиям, то столь малого шага обычно не требуется, если неустойчива, как в случае с предсказанием погоды, то и 10^10 циклов не спасут. Правда ли, что производился аккуратный анализ устойчивости решения по отношению к начальным условиям и шагу сетки? Видно ли из этого анализа, что моделировать надо именно с шагом 1мин, а не 1 сек или 1 час?
Теперь обратно к попугаям гигафлопам. Задача явно больше, чем 10^15 флопов, при этом число циклов порядка 10^7. Получается, что 1 цикл ~ 10^8 флопов (или больше, скажем 10^10). Этот цикл - обращение матрицы, как я понял. Каков размер матрицы и ее структура? Каким методом находится обратная матрица?
Относительно лопаты. С имеющимися у меня ресурсами (4 ядра) расчет займет порядка 10^9 сек, 1 день - это 10^5 сек. Поэтому экскаватор не помешал бы. Разумеется переносить задачу на кластер или CUDA должен не я (физик), а программист, только где его найдешь за 10тр/мес?
Можно попробовать вот что сделать - распареллелить вместо OPEN MP передачей денных между ядрами через виртуальный винчестер - RamDrive. Таким образом Вы сможете контролировать частоту пересылки данных между ядрами, осуществляя трансфер данных реже, чем это делает OPEN MP. По крайней мере в случае с моей матрицей такой способ должен быть эффективным (т.е. потери <10%). Думаю, что заставив эффективно работать комплекс из 8 ядер Вы обнаружите, что эффективно связать между собой несколько таких комплексов с помощь гигабитной сетки тоже можно. Другое дело, что для этого нужно трудиться, думаю, что встроенные решения типа MPI просто неэффективны (подозреваю, что соотношение между скоростями передачи данных между ядрами одной материнской платы и по сети просто не учитывается). Кроме того, Ваш результат для MPI как раз показывает ублюдочность кластерной архитектуры.
Впрочем, если у Вас трехдиагональные матрицы, то ничего не поможет. Поэтому я и спрашиваю про структуры матрицы.


Добавлено:
akaGM

Цитата:
более чем верно... я бы даже сказал это три большие разницы...

Говорить то можно разное. А где конкретика?

Почему Вы считаете, что я не понял Ваш вопрос? Я попросил Вас сформулировать вопрос более конкретно, чтобы я смог на него конкретно ответить. Используемая модель описана в публикации, ссылку на которую я предоставил. Для того, чтобы обсуждать ее недостатки надо с ней ознакомится, не так ли?

Относительно Вашей задачи я задал ряд конкретных вопросов, которые остались без ответа. Точнее был получен ответ "ok".


Цитата:
ну конечно же! прям с первого слова из единственного абзаца на форуме в глаза бросается... Особенно в проекции на своё окружение в качестве паттерна "модуса вивенди" таких "негативоносителей"...

Что бросается? Какое "свое окружение"? О чем Вы вообще говорите? Какой-то набор эмоций.

Дельфи осваивайте в свое удовольствие, штука приятная, особенно для баз данных. Я с этим завязал в 11 классе, решая на ней двумерную нелинейную задачу в частных производных диффузионного типа (x,y,t). Ну красиво, но консоли+Array Viewer мне вполне достаточно, все равно в файл выводить для рисования в Origin. А вот с физикой у вас на скриншоте не все понятно - в районе 4e-1 не очень как-то...

Следующий порядок теории возмущения - не панацея, поскольку это лишняя сумма, а учитывать надо много слагаемых, если уж Вам нужна хорошая точность. Не забывайте, что ряды теории возмущений как правило имеют нулевой радиус сходимости . Обычно уж стараются заниматься пересуммированием диаграмм в духе самосогласованного борновского приближения, а не расписывать 4-5й порядок.

Да, я идеалист. Да, у меня в жизни ничего другого, кроме науки нет. И что?
Насчет FuzzyLogic Вы абсолютно правы, им представлены наиболее достойные аргументы Вашей точки зрения. Ну так если человек за 3 дня может наладить кластер - это о чем-то говорит. У нас вот тоже WiFi Hub год валялся, потом я его наконец не нашел и включил. А Вы про флешку пишете в качестве Control Bus...
А вообще я за то, чтобы как в этой самой пожарной охране не было .
Автор: FuzzyLogic
Дата сообщения: 01.06.2009 04:19

Цитата:
"Абсолютно не верен" - относилось исключительно к примеру с факториалом. Просто потому что с этим примером Вы действительно были не правы.

Согласен, пример неудачный, я почему-то подразумевал рекурсивный алгоритм нахождения оного, ну в общем виноват, исправлюсь Я вообще периодически чушь пишу откровенную, особенно когда устаю, а на руборд я обычно забредаю как раз перед сном. Правда потом всегда признаюсь что написал ерунду, ну с кем не бывает... Но мысль вы мою поняли, есть задачи которые параллелятся не сильно просто. Хотя не сомневаюсь что и в эту сторону найдутся методы, последнее время видел решения в этом направлении к сожалению пока там всё ограничено линейными процессами, ну да ладно мы тоже не стоим на месте.


Цитата:
Относительно 10 лет с шагом 1мин: это 5*10^6 циклов. Что довольно много. Потому что если модель устойчива к начальным условиям, то столь малого шага обычно не требуется

Это обусловлено тем что для изучаемой области есть разные данные на период около 10 лет с шагом от 6 до 30 минут (кажется так, точно не помню уже), а также каждый год есть кучки по несколько дней разбросанных по году с "эпизодическими" данными, там данные с частотой от 30 секунд до 5 минут.
Матрицы имеются разные, в гидродинамике у них вроде 9-ти диагональная плюс несколько трёхдиагональных для транспорта. Благо сетка структуризованная.
Остальных деталей сейчас уже точно не помню, врать не буду, коллег периодически консультирую но не настолько часто чтобы всё держать в памяти.


Цитата:
Кроме того, Ваш результат для MPI как раз показывает ублюдочность кластерной архитектуры.

Результат то как раз был для OpenMP, как бы ни было это печально.

Цитата:
Таким образом Вы сможете контролировать частоту пересылки данных между ядрами, осуществляя трансфер данных реже, чем это делает OPEN MP

Вы кажется путаете OpenMP с MPI, или я недопонимаю. OpenMP - один процесс, даёт доступ всем ядрам (процессорам) к общей памяти. MPI (message passing interface) - пересылка данных, разбиение задачи на части, итд итп. OpenMP гораздо проще и эффективней, но к сожалению ограничен кол-вом процессоров (ядер). Так вот именно OpenMP не выдерживает, то есть ядра обсчитывают быстрее чем они могут получать доступ к необходимым данным из памяти. Видимо надо оптимизировать методы решения с учётом имеющихся размеров кэша. MPI в данных условиях вообще пухнет, насколько я знаю в нашей области больше 512 процессоров в MPI не использует никто (обычно уже порядка 64/128 вызывают затык сети, после чего добавление процессоров приводит к более медленному счёту) - пока нет эффективных реализаций которые позволяют это делать.


Цитата:
Разумеется переносить задачу на кластер или CUDA должен не я (физик), а программист, только где его найдешь за 10тр/мес?

Вот вот ... у вас ещё р. а тут у.е. и приличного кого-то найти при ограниченном кол-ве тех самых уе не сильно просто. В общем как всегда ... реалии оказывают своё влияние, а политика и экономика как оказывается играют далеко не последнюю роль
Автор: Watersad
Дата сообщения: 01.06.2009 13:15
FuzzyLogic
Хоть 3х-диагональные, хоть 9ти, это не для кластера задача. Ну а векторные суперкомпьютеры кончились в 2008г. У меня же ширина кодиагонали порядка 10^3-10^4 (2*M), поэтому распараллеливание должно быть эффективным, по крайней мере до 10^3 OPEN MP и 10^2 MPI. 10^3 - не описка, это "если бы их было столько на одной плате". А почему бы не разместить? Какие на это технологические ограничения?

4.5 вместо 8 - для OPEN MP. И это еще приемлемо. А я написал, что MPI никуда не годится, ну и ясно почему. Так что OPEN MP и MPI я не путаю. Именно MPI показывает, что кластер - это не просто плохо, а ужасно . В принципе для 9ти диагональной матрицы на 2-4 ядрах затык и должен наступить, тут без модернизациия алгоритма ничего не получится. Вы в эту сторону не думали? Какой алгоритм обращения 3-9 диагональной матрицы Вы используете?

Про политэкономию абсолютно согласен, поэтому я исхожу из принципа, что если кто-то что-то где-то плохо делает и получает в 10 раз большую зарплату - это еще не повод поступать так же.

P.S. Пример идиотического использования ресурсов и оптимизации под SSE: http://distributed.ru/wiki/pro:gimps
Автор: rain_sx
Дата сообщения: 12.02.2010 10:10
Жаль, что нет сообщений в этой теме. На данный момент пишу дипломку с OpenCL, графические карты имеют действительно огромнейший потенциал для параллелизируемых алгоритмов.

К примеру на данный момент мной достигнут фактор 50 в скорости, сравнивая GeForce9800 и AMD x2 4400..
Автор: Igorr
Дата сообщения: 22.01.2013 02:08
Нужен совет практика:

Имеется:
1) комп на i7 2600K c 8 ГБ ОЗУ и установленной x64 виндой;
2) написанная на Фортране (IFC) расчетная x32 dll, занимающая в ОЗУ (по Task Manager) 35 МБ и использующая (по OpenMP) все 8 потоков процессора.
Время расчета этой dll-кой одной точки (численное интегрирование с использованием IMSL 7.0 x32) - 120 секунд.

Какие минимально-комплектованные (игры не нужны) видеокарты (конкретные модели) можно ставить, чтобы время расчета с использованием CUDA сократить в раз ~10 и ~20?

Страницы: 12

Предыдущая тема: Перевод кода из C++ в Delphi


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