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

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

Автор: Watersad
Дата сообщения: 25.05.2009 04:12
Использовал ли кто-нибудь видеокарточку для расчетов?
Насколько я понимаю, уже пора...
Поскольку дальше скатываться по кривой скаляризации вроде бы уже некуда:
http://www.top500.org/overtime/list/32/procarch
Очень интересно, что народ по этому поводу думает.
Автор: FuzzyLogic
Дата сообщения: 25.05.2009 07:35
Зависит от того какие конкретно расчёты вы будете делать. У видеокарт своя специфика. Да, вы получаете в своё распоряжение пару сотен потоков, но вот только кол-во памяти которое доступно весьма ограничено и вот тут начинаются танцы с бубном. Из тех приложений с которыми работаю я лично - да мы любим когда много процессоров, но нам также надо и много памяти (ну скажем 512 процессоров и гиг эдак 100 памяти) при таком варианте память получается опять же расбросана по машинам и вот тут начинается затык. Т.е. получить три-четыре сотни "процессоров" видеокарты проблем нет, но учитывая кол-во памяти (сколько сейчас максимум? 2 гига) толку от этих процессоров не так много. Помножив на относительную сложность разработки софта и абсолютную непортируемость кода получаем то что получаем.
Автор: Watersad
Дата сообщения: 25.05.2009 10:29
2 FuzzyLogic & Co

1) Прежде всего правильно ли я понял: видеокарту для расчетов Вы не использовали?

2) Какого типа те 512 процессоров, которые Вы используете? Какова цена одного терафлопса?

3) Конкретная задача - хочется найти ~sqrt(N)~10^3 собственных векторов эрмитовой матрицы, соответствующих минимальным по модулю собственных числам. Размер матрицы N~10^7, ширина кодиагонали ~2sqrt(N)~10^4. Тактика - модификация обратного степенного метода со сдвигом, для чего нужно разложение Холецкого (причем R^H D R, а не R^H R) и решение треугольной системы. Комплексная арифметика с двойной точностью. Можете подсчитать, какого объема винчестер необходим для хранения такой матрицы .

4) У процессоров Intel скоростной памяти тоже немного: 32KB. Правильно? Значит "танцы с бубнами" называются кэшированием? Замечу, что это самое кэширование необходимо на любом уровне - например у винчестеров тоже есть свой кэш, около 32MB, как я понимаю. Нужно ли для векторных операций 200MB памяти на процессор? Вроде бы смысл распараллеливания, в частности BLAS, и состоит в том, чтобы разбить большую задачу на маленькие. Честно говоря, сомневаюсь, что есть не поддающиеся распараллеливанию задачи, требующие недели и месяцы для получения результата.

5) А насколько сложна разработка софта? Вы пробовали? Куда Вы хотите "портировать" код и зачем? Ясно же, что для отладки хватит обычного компьютера с видеокартой нужной фирмы, ну а для реальных расчетов нужно соответствующее железо покупать. Сравните цены на "домашний суперкомпутер" от нвидео и крея. Есть разница? Уже сейчас на видеокартах будет топ-100, видимо через годик и топ-1 соберут. А причина одна - у 486 было 10^6 транзисторов, а Corei7 их 10^9. Да, последний - 4х ядерник, еще 2.5 дает великий и ужасный SSE. Ну а где оставшиеся 10^2? Это как раз тот фактор, который рекламируется нвидяхами.

Итак, резюме.
1) Ищем опытных КУДАбилдеров.
2) Буду сильно благодарен любым комментариям по поводу моей задачи.
3) Монополия - это плохо. Двуполия (типа интел-амд, винда-линукс) тоже не спасает. Ситуация, когда считать приходится на геймерских видеокартах, мне кажется анекдотом.

P.S. Придет лараби и всех спасет (лол).
Автор: FuzzyLogic
Дата сообщения: 25.05.2009 17:55
1. Использовал
2. Не очень важно, так как писано всё на фортране, и если следовать стандартам то компилится всё на чём угодно. Используемый код работает и на древних DEC и на SGI и на Intel/AMD. Цена .... а кто её считал?
4. Танцы с бубнами называются MPI и иже с ними, когда ваша память разнесена по нескольким компьютерам, и там уже не только скоростью кэша не пахнет ... но и даже обыкновенной памятью, потому как всё летает туда-обратно по сети. Разбить большую задачу на маленькие это конечно хорошо, но вот получится ли разбить на маленькие независимые друг от друга это уже другой вопрос, и насколько они будут независимы друг от друга ...
5. Сложность разработки когда я пробовал (пару лет назад) была сильно замешана на глючность софта для разработчиков (этакие релизы в стадии пре-альфы) сейчас по словам некоторых всё стало несколько лучше, в остальном всё вполне доступно.
Цены - да, разнятся, но если подумать а нужна ли вам постоянно та мощность о которой вы говорите для расчётов или это разовая задача, да и там где работаю я за труд людей платят вполне пристойно, а посему деньги потраченные на переписывание софта под конкретное железо лучше вложат в это самое железо, а люди будут заниматься своим делом. Да и как я уже сказал портабабельность никакая, т.е. код который я пишу для Intel спокойно компилится и работает на AMD, SGI, и чём угодно ещё. А вот с NVidia->AMD(ATI) такое уже не проходит, т.е. та самая монополия о которой вы говорите.
Автор: Watersad
Дата сообщения: 25.05.2009 22:19
2 FuzzyLogic

1) Значит понял неправильно . Использовали, и решение себя не оправдало - теперь ближе к истине?

2) Вопрос мой относился к тому, какие 512 процессоров Вы используете сейчас. Цену терафлопа вроде подсчитать несложно, собственно с неэффективностью современных пентиумообразных процессоров Вы вроде соглашаетесь. Правильно ли я понимаю?

4) Если Вам нужно перемножить две матрицы размерности N, на это требуется N^3 операций, а на загрузку матриц N^2 операций. Скорость оперативной памяти и винчестера/сети отличается где-то на 3 порядка, значит при N~10^3 распараллеливание становится возможным. Соответствующий объем данных порядка N^2~10^6, т.е. 10-20MB. Это на порядок меньше, чем указанные Вами 200MB на ядро. В случае видеокарты вместо сети имеем PCI-express, значит разница не 3 порядка, а 2. Таким образом N~10^2, N^2~10^4, т.е. около 100KB на ядро. Пусть я ошибся на порядок, к тому же возьмем число ядер 10^3. Итого необходимый объем памяти 1GB. Вроде бы все сходится, где затык??
В целом я исхожу из двух фактов. Во-первых, видеокарты вполне справляются с играми, там же элементарные операции как раз и есть умножение одной и той же матрицы на множество разных векторов. Во-вторых, уже существует куча проектов, где быстродействие возрастает больше, чем на порядок.
По поводу MPI: само его существование есть следствие глобальной скаляризации (кластеризации, если угодно, фрагментации!), обратите, пожалуйста, внимание на эту ссылку http://www.top500.org/overtime/list/32/procarch.

5) Естественно, что к новым решениям приходится адаптироваться. Но сложнее ли CUDA написания оптимального ассемблерного кода SSE? А вот прирост не 10% (100%?) как в случае с SSE, а 10 (100?) раз.

Логики по поводу "разовости" задачи я не понял: если стремиться ее решить, нужно идти к дяде, у которого дома есть суперкомпьютер, например сюда http://www.parallel.ru/cluster. Чтобы с ним разговаривать, надо выучить его язык, тот самый MPI (а может Open MP?) И как-то делать этого не хочется, тем более понимая всю ублюдочность архитектуры зеоно-феномов. Согласны ли Вы со мной, что она таковой является?

Поскольку мой труд является низкооплачиваемым, то возразить мне Вам как "холодному производственнику" конечно нечего, кроме цифр. Месяц работы бригады из 10 программистов - порядка 10^6 руб, стоимость комплекса из 100 четырехядерников в несколько раз выше. С другой стороны, а кто действительно ее считал, цену терафлопса, когда есть такие приятные вещи как нефть и газ. В Вашу пользу говорит и низкая, насколько я знаю, загруженность кластеров в нашей стране. Да и в целом мировая статистика использования компьютеров, ведь видеокарта - это 3D ускоритель, иные ее применения являются извращением ин май хамбл опинион.

P.S. О монополии в лице нвидяхи я бы говорить не стал, поскольку монополия - это когда покупатель вместе с ноутбуком вынужден .NET образную среду брать.

P.P.S. Вы говорите о "портабельности". А насколько портабельно стандартный фортрановский код (77,90) компилится на Core2Quad? На все 100% или на 25? Может быть пора понять, что уход от векторных процессоров, произошедший в 90х годах (еще раз: http://www.top500.org/overtime/list/32/procarch), был большой ошибкой?
Автор: FuzzyLogic
Дата сообщения: 26.05.2009 02:30
Watersad
Обращение матриц например дело относительно мутное, использование памяти в частности сильно зависит от того какова матрица. Ну да это отдельный разговор.
В общем и целом я абсолютно согласен по поводу ухода от векторных процессоров, но мне в этом плане проще, я по образованию математик, достаточно занимался программированием. Практика к сожалению зачастую идёт в разрез с моими желаниями и зачастую и здравым смыслом. Вот в группе нашей из порядка 10 докторов наук остальные это химики, экологи итд, которые занимаются численным моделированием. Если бы вы посмотрели что они пишут .... какая там CUDA ... Нанимать кучу программистов чтобы переписали всё начертанное за годы для решения какой-то конкретной задачи дело недешёвое. Обычно проще взять в аренду процессорное время, которое ныне стоит копейки, так как задачи для которых нужно действительно много оного встречаются не сильно часто. А зачастую удаётся и договориться практически нахаляву, так как все эти монстры из TOP500 строят часто, а вот пользуются ими обычно процентов на 20.
Стандартный фортрановский код компилится на Quad Core при помощи Intel Fortran вполне пристойно, ещё и для OpenMP автоматом распараллеливается.
А вообще тема интересная, у меня лето несколько загружено, а вот осенью если не поменяю место работы, я хотел попробовать CUDA ещё раз.
Автор: Watersad
Дата сообщения: 26.05.2009 11:59
2 FuzzyLogic

Насчет обращения матриц - а что конкретно мутного? Вроде бы стандартные методы тривиальны. К тому же это имеет прямое отношение к пункту 3 .


Цитата:

3) Конкретная задача - хочется найти ~sqrt(N)~10^3 собственных векторов эрмитовой матрицы, соответствующих минимальным по модулю собственных числам. Размер матрицы N~10^7, ширина кодиагонали ~2sqrt(N)~10^4. Тактика - модификация обратного степенного метода со сдвигом, для чего нужно разложение Холецкого (причем R^H D R, а не R^H R) и решение треугольной системы. Комплексная арифметика с двойной точностью. Можете подсчитать, какого объема винчестер необходим для хранения такой матрицы.


По поводу докторов наук: не ожидал, что они сами коды пишут . По крайней мере в НИИ вряд ли. Ну а так вообще голод не тетка . Насчет кривизны софта - согласен на 100%, причем не обязательно чтоб экологи писали . В частности при увеличении размеров матрицы у меня отказались работать стандартные BLAS программы разложения Холецкого и умножения ленточной матрицы на вектор! В частности Холецкий стал неправильно работать при размере матрицы N=sqrt(2^31)=46000 (лол). Вторая процедура отказала еще раньше, написав про переполнение стека. Реализация алгоритма Холецкого, написанная своими руками, занимает 17 строчек (это R^H D R) и работает быстрее стандартной (лол2).

По поводу многоядерности - спасибо за наводку, попробую OPEN MP хотя бы на 2 ядра распараллелить для эксперимента, четырехядерников ни на работе, ни дома нет. В любом случае OPEN MP - это уже не F77, поэтому строго говоря "портабельность" стандартного кода на многоядерные процессоры не полная.

Правильно ли из Ваших слов я заключил, что имеет смысл с моей задачей постучаться на один из российских кластеров, например http://www.parallel.ru/cluster? Видимо в бубен можно научиться стучать по ходу перформенса, раз 20% загрузки. А с КУДОй хочется все же попробовать, поскольку если отставить в сторону консерватизм и лень, то дело кажется стоящим. Да и Вы вроде этого не отрицаете, просто пару лет оно уж больно сырым было. Правда двойной точности у них и сейчас нет.
Кстати, не могли бы Вы объяснить, почему перемножение комплексных чисел в фортран-программах происходит в 2, а не в 4 раза медленнее вещественных? А одинарная и двойная точность отличаются всего на 10-20%?
Автор: FuzzyLogic
Дата сообщения: 26.05.2009 23:01

Цитата:
Насчет обращения матриц - а что конкретно мутного? Вроде бы стандартные методы тривиальны. К тому же это имеет прямое отношение к пункту 3

Мутная часть это размеры и свойства этих самых матриц. Размеры порядка 10^9 и более. Всё готовое что я до сих пор пробовал работает ну скажем так ... неспеша. Ну это в общем-то перекликается с вашими экспериментами с BLAS'ом.

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

CUDA и иже с ними на мой взгляд вещь перспективная, особенно учитывая цены, я наверное действительно не сильно объективен из-за того что попробовал их ещё в бетаобразном состоянии.


Цитата:
А одинарная и двойная точность отличаются всего на 10-20%?

Не совсем понимаю что значит на 20%....

Код:
real*4 :: v1
real*8 :: v2
v1 = 0.666666666666666666666D0
v2 = 0.666666666666666666666D0
print *, v1,v2
Автор: ItsJustMe
Дата сообщения: 27.05.2009 05:03
Watersad

Цитата:
По поводу докторов наук: не ожидал, что они сами коды пишут

Пишут, и весьма неплохо. Сам видел, причем даже не одного.

Цитата:
а вот пользуются ими обычно процентов на 20

Какие 20, 5 - от силы.

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


Цитата:
...и договориться практически нахаляву

Нахаляву он и простаивает неплохо, хоть и электричество жрет и воздух гоняет. Вы лучше скажите, как бы его заставить работать с пользой. А то, млин, расчеты в этой стране никому не нужны, а там - местные кластеры не нужны, ибо своих - выше крыши. Вот и простаивают.
Автор: Watersad
Дата сообщения: 27.05.2009 20:03
ItsJustMe

Значит не с теми докторами общался. У нас в поликлинике все больше академики да членкоры, видимо .

5% загрузки - это про Москву или про Россию? У нас вот кластер то ли из 30, то ли из 40 процессоров в институте, одна коллега пыталась на нем считать пару лет назад, в результате выяснилось, что на домашнем двухядернике быстрее, поскольку очередь поскромнее .

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

Если у Вас есть конкретная рекомендация, куда лучше обратиться с моим расчетом - буду рад услышать.

FuzzyLogic

Размеры порядка N=10^9 - это жесть, конечно. Даже трехдиагональная матрица и несколько векторов двойной точности - это уже 100GB. Что еще хуже - умножение матрицы на вектор, как и нахождение обратной матрицы, требует O(N) операций. Т.е. Вам нужно, чтобы загрузка данных шла с той же скоростью, что и арифметические операции. Другое дело, что O(N) - это порядка минуты. Сколько же независимых прогонов требуется для Вашей задачи и как Вы успеваете формировать входные данные, это же тоже требует O(N)?


Цитата:

Цитата:
А одинарная и двойная точность отличаются всего на 10-20%?

Не совсем понимаю что значит на 20%....
Код:
real*4 :: v1
real*8 :: v2
v1 = 0.666666666666666666666D0
v2 = 0.666666666666666666666D0
print *, v1,v2
ZZZ:~> ifort test.f90 && ./a.out
0.6666667 0.666666666666667


20% разницы в скорости перемножения двух чисел! Что такое терафлоп?


Цитата:

Не знаю как реализовано умножение, вполне возможно что зависит от компилятора.


Процессор не умеет перемножать комплексные числа, поэтому компилятор делает следующее: (a+b*I)*(c+d*I)=(ac-bd)+I*(ad+bc) - итого 4 умножения.
Как компилятор это делает на аппаратном уровне - напишу в следующем послании, равно как и про одинарную и двойную точность.

Буду очень признателен, если действительно сможете закинуть. Проблема в том, что у меня опыт использования MPI нулевой, а без этого ничего не получится, как я понимаю. Попробую освоить, в принципе его ведь на обычной сетке из двух компов можно отлаживать?
Автор: Watersad
Дата сообщения: 28.05.2009 06:03
2 FuzzyLogic & Co

Небольшой тест плавающей точки


Плавать точка будет на Core Duo @ 1.66 (1 ядро), компилятор IFC 9.1.

Попробуем использовать SSE для страшного убыстрения расчета скалярного произведения - профилирующей операции линейной алгебры. Протестируем общее время исполнения 10^10 циклов и число тактов процессора на один цикл программы, т.е. пару операций умножение+сложение.


Код:
DO I=1,1000
DO J=1,10000000
A=A+B(J)*C(J)
ENDDO
ENDDO
Автор: akaGM
Дата сообщения: 28.05.2009 09:02
Watersad

Цитата:
Плавать точка будет на Core Duo @ 1.66 (1 ядро), компилятор IFC 9.1.

под какую архитектуру собиралось и какая ось?
ia64 под 64-битными виндами -- сингловая точность нервно курит в сторонке...
и не будет особой разницы между SSE / без_SSE
Автор: Watersad
Дата сообщения: 28.05.2009 13:43
2 akaGM

Core Duo - это ia64?? Не путайте Core Duo и Core 2 Duo плз .

Разумеется ia32. Ось WinXP SP3 (32 bit ).

Относительно настроек оптимизации:
Optimization    Maximize Speed    
Global Optimizations    Yes    
Inline Function Expansion    Only INLINE Directive    
Favor Size or Speed    Favor Fast Code    
Omit Frame Pointers    Yes    
Optimize For Intel(R) Processor    Pentium(R) 4 and additional Intel processors (see docur    
Use Intel(R) Processor Extensions     None/P4/P4 with SSE3
Require Intel(R) Processor Extensions    None    
Loop Unroll Count        
Parallelization    No    
Threshold For Auto-Parallelization    100    
Prefetch Insertion    Yes    
I/O Buffering    No    

Что еще? Ассемблер выложен, тест элементарный, может повторить любой желающий. Да, ассемблер брался из .asm файла, контролировался IntelDebugger.
В общем то разницы между SSE/NO SSE и так вроде гигантской нет, особенно для дабла .
В любом случае спасибо за вопрос .
Автор: dmka
Дата сообщения: 28.05.2009 13:56
Watersad
Не путайте ia64 (Itanium) с x86-64 aka emt64 aka amd64 (Core2, etc) .
Автор: akaGM
Дата сообщения: 28.05.2009 14:17
да, конечно, это itanium, я имел ввиду intel64 (это в IF начиная c 11.0 появилось), спасибо, dmka

миль пардонов...
Автор: Watersad
Дата сообщения: 28.05.2009 18:50
dmka
Да я не путаю (сам, других могу запутать ), просто господина akaGM я понял именно в том смысле, какой он вкладывал в свое сообщение, как показало дальнейшее расследование. Надеюсь, на данный момент все четко прописано, включая опции оптимизатора IFC9.1.
Автор: akaGM
Дата сообщения: 28.05.2009 19:03
Watersad
я извинился...

можно, кстати, поинтересоваться предметной областью таких могучих расчётов?
Автор: Watersad
Дата сообщения: 28.05.2009 20:09
akaGM
А за что извиняться то? Просто господин dmka проявил известный педантизм . Вас же я понял именно в том смысле, какой Вы вкладывали в вопрос, вроде бы недоразумений не было.

Область знаний - 01.04.10
http://jetp.ac.ru/cgi-bin/r/index/r/134/3/p577?a=list
Автор: akaGM
Дата сообщения: 28.05.2009 20:39
Watersad
01.04.07
надо полагать, что с физ. и мат. моделью всё в порядке, раз дело дошло до счёта?
Автор: FuzzyLogic
Дата сообщения: 29.05.2009 00:49

Цитата:
20% разницы в скорости перемножения двух чисел! Что такое терафлоп?

Теперь понял, я видимо уже спал в тот момент


Цитата:
Буду очень признателен, если действительно сможете закинуть. Проблема в том, что у меня опыт использования MPI нулевой, а без этого ничего не получится, как я понимаю. Попробую освоить, в принципе его ведь на обычной сетке из двух компов можно отлаживать?

Конкретику давайте в пм. Отлаживать можно и на одном компе, даже на одном процессоре, просто будут висеть скажем два процесса. Если без MPI, то можно начать с OpenMP, тем более что Intel сам делает код под него без всякого вмешательства, не знаю насколько он эффективен но попробовать можно. В данном случае могу только предложить 8 процессоров на задачу. У меня есть несколько двухпроцессорных quad core (3.0Ghz xeon), т.е. максимум это 8 CPU на процесс, но могу одновременно посчитать несколько штук таких. Если с MPI то зависит от времени счёта, в принципе процессоров 40-50 на несколько дней думаю найду.
Автор: Watersad
Дата сообщения: 29.05.2009 09:17
akaGM
01.04.10 по сути своей часть 01.04.07. А вот оба оппонента оказались 01.04.02.
Вопрос про модель не очень понял, может быть на более конкретную формулировку найду что ответить.


Добавлено:
FuzzyLogic

Цитата:

Конкретику давайте в пм. Отлаживать можно и на одном компе, даже на одном процессоре, просто будут висеть скажем два процесса. Если без MPI, то можно начать с OpenMP, тем более что Intel сам делает код под него без всякого вмешательства, не знаю насколько он эффективен но попробовать можно. В данном случае могу только предложить 8 процессоров на задачу. У меня есть несколько двухпроцессорных quad core (3.0Ghz xeon), т.е. максимум это 8 CPU на процесс, но могу одновременно посчитать несколько штук таких. Если с MPI то зависит от времени счёта, в принципе процессоров 40-50 на несколько дней думаю найду.


Отлично, 8 ядер это уже что-то. А правильно я понимаю, что 8 процессов смогут использовать общие участки памяти или нет? В любом случае пока с этим затыка быть не должно, хотя все ненулевые компоненты матрицы в 2GB помещаться уже перестали, но это и не нужно - в последней версии программы вся матрица помещается на винчестер и считывается блоками по несколько десятков MB. Постараюсь оперативно отладить OpenMP и напишу в пм.


Добавлено:
ShIvADeSt
Я вроде два независимых сообщения отправлял, а второе как "Добавлено:" к первому приаттачилось. Можно ли сие подкорректировать?
Автор: akaGM
Дата сообщения: 29.05.2009 14:39
Watersad

Цитата:
Вопрос про модель не очень понял

ок
это не для этого форума/топа...

Цитата:
А вот оба оппонента...

в последний раз у меня их было трое ;)
---

Цитата:
Я вроде два независимых сообщения отправлял.Можно ли сие подкорректировать?

нельзя...
это против флуда (overposting) и набивания постов, лучше прочитай правила форума (вверху) и редактируй свои послания или борда это сделает за тебя...
Автор: Watersad
Дата сообщения: 29.05.2009 16:23
akaGM
Ну что же, немного пофлудим/оверпостим дабы компенсировать досадное недоразумение.
Читать правила форума это круто, я понимаю. А также конституцию РФ, уголовный кодекс или любой другой f-мануал .
Неужели не ясно, что обеих целей можно добиться, заведя мультиаккаунты?
Только зачем?
А вопрос "Можно ли сие подкорректировать?" был обращен к конкретному киборгу - ShIvADeSt, что сам флудер/оверпостер поправить не может - это я понимаю.

И главное что у каждого из трех оппонентов тоже когда-то было три оппонента. Так что деревья не только двоичными бывают .

В общем то КУДАбилдеров не сыскалось, остается довольствоваться ФЛУДорайтерами. В том смысле, что ветка гнилая, конечно. Ну а какой с dummy newbie спрос ? В принципе если кому интересно - можно обсудить в алгоритмической ветке вопрос о том, сколько нужно флопов для вычисления P собственных пар матрицы N*N с толщиной кодиагонали M. Мои изыскания показывают, что меньше, чем это принято считать.

P.S. А в это время сингловая точность нервно курила в сторонке .
Автор: akaGM
Дата сообщения: 29.05.2009 17:39
Watersad
а что тебя, собственно, не устраивает?
-слово Добавлено? -- его можно убрать редактированием + переоформить кодами...
-ты хочешь два поста вместо одного? -- подожди час, защита от флуда отключится и можешь писать второе...
-то что я отвечаю вместо модератора? -- а какая тебе разница от кого это выслушать...

такой вот тут монастырь, и не я его, кстати, основатель...
Автор: Watersad
Дата сообщения: 29.05.2009 19:09
akaGM
Собственно меня не устраивает только одно, но это в Ваш список не попало и попасть не могло.
Меня устраивает и слово "Добавлено", и два поста вместо одного я не хочу, и вашем строкам я рад не меньше, чем модераторским.

Автор: akaGM
Дата сообщения: 29.05.2009 19:33
Watersad
тогда я исправляюсь и вношу непопавшее в список:

-увы, я не знаком и не использовал CUDA

---
кстати, чтоб уж совсем не оффтопить, вопрос всем:

а возможно ли для таких вот больших расчётов своими малыми силами организовать распределённые вычисления что-то типа MyCalc@home, существует вообще какое-либо клиентское ПО для неоднородных сред как альтернатива кластерам?
Автор: FuzzyLogic
Дата сообщения: 29.05.2009 20:41
Watersad

Цитата:
А правильно я понимаю, что 8 процессов смогут использовать общие участки памяти или нет? В любом случае пока с этим затыка быть не должно, хотя все ненулевые компоненты матрицы в 2GB помещаться уже перестали

Да все ядра имеют доступ к общей памяти. На машинах по 16GB памяти, скомпилив под 64-bit получаем доступ ко всем 16, не вижу смысла тормозить всё использованием диска если уложитесь в пресловутые 16GB.

akaGM

Цитата:
а возможно ли для таких вот больших расчётов своими малыми силами организовать распределённые вычисления что-то типа MyCalc@home, существует вообще какое-либо клиентское ПО для неоднородных сред как альтернатива кластерам?

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

А ну и ещё вот решение: http://www.grid-appliance.org/
С этими мы работаем, вся эта ерунда уже достигла довольно приемлемого состояния и вот с помощью неё уже можно решать что-то похожее на наши задачи, это что-то вроде самонастраемого распределённого кластера. Но тут уже всё упирается в надёжность клиентов. Так как если кто-то вдруг выключает свой компьютер в MPI-задаче то всё что было посчитано до этого сливается в унитаз.
Автор: akaGM
Дата сообщения: 29.05.2009 21:09
FuzzyLogic
про разбивку на подзадачи это ты очень прав...
и вообще такое разбиение всегда оправдано, у меня самого три разные машины в конторе считают, а я -- control bus с флешкой...

а чем грид от кластера отличается? на пальцАх...
ещё клаудинг какой-то есть, о кот. я вообще никакого представления не имею...
Автор: FuzzyLogic
Дата сообщения: 30.05.2009 07:29

Цитата:
а чем грид от кластера отличается? на пальцАх...

Да особенно ничем. Кластер обычно что-то относительно небольшое и локальное. Grid - распределённое, большое и с наличием "Grid Software" типа Globus и иже с ними. Т.е. планировщик заданий, транспорт, аутентификация итд итп. Хотя в общем то те же яйца только в профиль.
Cloud computing это тоже что-то вроде кластера, но предоставляемый в виде веб сервиса. Реально для вычислений (имхо) вещь довольно бестолковая. Удобна скажем в случае если у вас веб сервер которому надо много ресурсов (трафик, процессор итд), арендуете такую бяку у скажем гугла, платите только за использованные ресурсы и нет надобности держать своё железо.
Автор: Watersad
Дата сообщения: 30.05.2009 09:39
FuzzyLogic

Цитата:
не вижу смысла тормозить всё использованием диска если уложитесь в пресловутые 16GB

Тормозов в использовании диска особых нет, поскольку загружается O(M^3) данных для выполнения O(M^4) операций, M~10^3 - размер моей двумерной физической системы, размер матрицы в этих терминах N=M^2, толщина кодиагонали - 2M (фактор 2 может варьироваться). Если M=10^3, то объем данных - 2M^3=2*10^9, т.е. 32GB. Если вообще ничего не писать на диск, то надо хранить в 2.5 раза больше: исходную матрицу+разложение Холецкого+собственные вектора. Итого 96GB. Если M=500, а не 1000, то 12GB, но M=500 мне уже не интересно, поскольку до M=360 сам вполне успешно досчитал. Далее, если не всю матрицу хранить, а подгружать блоками (2M)x(2M), то памяти надо гораздо меньше, скажем 30M^2 (фактор 30 определяется числом векторов переортогонализации в методе Ланцоша-Крылова, или как он там по науке называется?). Итого что-то вроде 0.5GB при M=10^3, 8GB при M=4*10^3 (синяя мечта ).
Если вообще ничего не оптимизировать, тогда можно и всю матрицу хранить, включая экспоненциально малые элементы. Итого получаем M^4~10^14, т.е. что-то в районе 2PB (двух петабайт ). Конечно полупроводниковая промышленность у нас хорошо работает, но для сбора такого количества придется ограбить пару-тройку миллионов пользователей ПК. Ну, или создать корпорацию типа Folding@home, у них суммарная вычислительная мощность уже давно десяток петафлопсов перевалила, по-моему. Что и понятно - проще заагитировать миллион геймеров-оверклокеров, введя рейтинг и команды , чем дожидаться от монстров компьютерной индустрии построения очередного убожества типа Roadrunner. В конце июня, кстати, TOP500 обновится, посмотрим, как там у видеокарточек дела.
Такс...OPEN MP говорите....

akaGM

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

Не, обезьяний порог я вроде уже преодолел : WiFi, Remote Desktop, но до Homo Sapiens еще далеко, конечно, пока хотя бы с OPEN MP разобраться.
Про подзадачи: приведите, пожалуйста, пример принципиально нераспараллеливаемой задачи большей, чем на 10^15 флопов.

Страницы: 12

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


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