А>Приятель годами работает в Интеле, как раз на библиотеках. Видел примеры кода. ЭТО — не фортран и не С++! Скорей, суперпродвинутый ассемблер. Отдельные версии функций для 2/4 ядер...
У микрософта тоже есть некие приблуды к Си для всяких simd
А>Но, подчеркну, библиотеки ДЛЯ фортрана.
Первая попавшаяся ссылка http://software.intel.com/ru-ru/forums/95/topic/63232/ фортран даже не упоминается.
D14>Дык потому, что Intel C++. С выкинутым прочь ASSERT 130 сек.
Имеем 130 сек на full pivoting. Против 19 у MKL частичный. У меня на компе частичный выбор ведущего к полному как 35/65. Будет гдето 80 сек на celeron-е.
Для всех элементов матрицы делается m[j][k]-=(m[j][kv]/m[jv][kv])*m[jv][k] , за исключением мелких подробностей, которые здесь http://www.drobotenko.com/code_rus.html При продвижении по строке ( к++ ) первое, что в скобках, в регистре, второе (строка ведущего) в кэше. Я так подумал что чтение из кэша, чтение и обратная запись при промахе и арифметика будут примерно сбалансированы если ходить сразу с четырьмя строками по некешируемой матрице.
void fast4()
{ const int r=2000;
// к..1234 это то что в кэшеstatic double k1[r],k2[r],k3[r],k4[r],m[r][r];
for(int j=r;j--;k1[j]=k2[j]=k3[j]=k4[j]=.001)
for(int k=r;k--;)
m[j][k]=.002;
// симкуляция обращения матрицы. r/4 раз проходим с ведущими [0][0] [1][1] [2][2] и [3][3]for(int repeat=r/4;repeat--;)
for(int j=3;j<r;j++)
{ int a=m[j][0]/m[0][0],b=m[j][1]/m[1][1],c=m[j][2]/m[2][2],d=m[j][3]m[j][2]/m[3][3];
for(int k=3;k<r;k++)
m[j][k]-=k1[k]*a+k2[k]*b+k3[k]*c+k4[k]*d;
}
}
и в общем не ошибся. Вышло 11 сек — таким не хитрым финтом скорость MKL достигается. Кстати еще можно через раз в обратном направлении строки перебирать, чтоб остатки, которые в кэше подобрать. А с полным перебором так не получится
PS minGW запятую сожрал без ошибки и предупреждения double k1[r],k2[r],k3[r],k4[r],m[r][r] , ;
P>можно через раз в обратном направлении строки перебирать, чтоб остатки, которые в кэше подобрать. А с полным перебором так не получится
Не получится по 4, а в обратном направлении чередовать можно
Здравствуйте, MasterZiv, Вы писали:
MZ>Так что тут можно ещё предвычислить, и так одна комманда MZ>машинная.
Разные команды выполняются разное время...
MZ>Хотя наверное это уже малоинтересно.
Это да. Сильная сторона FORTRAN -- это довольно сильная переносимость. Типа отладился на PC на задаче можельного размера гоняешь реальные размеры на супер-машинке, где время -- большие деньги
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Vzhyk, Вы писали:
V>Аноним 405 пишет: >> >> Разные люди говорят что вычислительные программы работают быстрее если >> они были написаны на Fortran-е а не на C++. V>Сказка из серии: "Когда мы были молодыми..."
>> Что можете сказать по этому поводу. V>Ну трава в прошлом веке зеленее была.
Егор, единственный раз здесь на минус мне стало интересно с чем ты не согласен? Высказался бы уж.
Здравствуйте, Vzhyk, Вы писали:
V>Егор, единственный раз здесь на минус мне стало интересно с чем ты не согласен? Высказался бы уж.
Долго и лень.
Если коротко, то фортраны промышленные обычно заточены под традиционные вычматы. Типа когда матрицы с векторамии жуют. И пр этом они ещё и очень портабл. А С/С++ не заточены...
Так что фортран реально удобнее быстрее и надёжнее получается...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Erop пишет: > > > Долго и лень. > Если коротко, то фортраны промышленные обычно заточены под традиционные > вычматы.
Вообще-то под традиционные вычматы заточены или нет руки (голова) того
програмера, который пишет.
> Типа когда матрицы с векторамии жуют. И пр этом они ещё и очень > портабл. А С/С++ не заточены...
Опять же из области веры. На С/С++ просто больше зависит от программиста.
> Так что фортран реально удобнее быстрее и надёжнее получается...
Опять вера в серебряную пулю.
P.S. Я достаточно много раньше на фортране писал (ощущение, что в
прошлой жизни), исключительно субъективное мнение: С/С++ гораздо
удобнее, но накладывает более жесткие требования на квалификацию
программиста.
Возможно, если бы фортран развивался также как С, то, вполне возможно,
что сейчас он бы и был удобнее и эффективнее, но он остался фактически
тем же, что и был.
E>Это да. Сильная сторона FORTRAN -- это довольно сильная переносимость. Типа отладился на PC на задаче можельного размера гоняешь реальные размеры на супер-машинке, где время -- большие деньги
Здравствуйте, Programador, Вы писали:
P>есть тесты типа такие где C/Fortran несколько ткнул — микстура. Нет хорошего свободного.Внизу результаты для чего-то там как-то хило у фортрана с воспроизводимостью. Идем к интелю здесьздесь видим у фортрана 9 фичей против 11 у Си. А интел единственный кажется поставщик фортрана для х86 на текущий момент.
Это всё не важно.
Во-первых, FORTRAN, заточен под конкретные задачи, на них он и хорош. На других -- не очень...
Ну и, во-вторых, кого интересует производительность на РС? На РС надо отладиться, а реальный прогон делают на тачке помощнее
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Vzhyk, Вы писали:
V>Вообще-то под традиционные вычматы заточены или нет руки (голова) того V>програмера, который пишет.
На С нужен намного более "заточенный" программист...
V>Опять же из области веры. На С/С++ просто больше зависит от программиста.
Ну дык больше от программиста, меньше от языка...
>> Так что фортран реально удобнее быстрее и надёжнее получается... V>Опять вера в серебряную пулю.
Просто опыт...
V>P.S. Я достаточно много раньше на фортране писал (ощущение, что в V>прошлой жизни), исключительно субъективное мнение: С/С++ гораздо V>удобнее, но накладывает более жесткие требования на квалификацию V>программиста.
Ну если квалификация нужна выше, то язык значит подходит меньше
V>Возможно, если бы фортран развивался также как С, то, вполне возможно, V>что сейчас он бы и был удобнее и эффективнее, но он остался фактически V>тем же, что и был.
Так и хорошо. Как был машинкой для пережёвывания матриц, так и остался...
А зачем тебе было знать, с чем именно я несогласен, кстати? Ты же не понял что я написал
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Vzhyk пишет:
> Возможно, если бы фортран развивался также как С, то, вполне возможно, > что сейчас он бы и был удобнее и эффективнее, но он остался фактически > тем же, что и был.
"Также как С" -- это как? Никак ? А фортран очень сильно развивается,
если бы не развивался бы, давно его не было бы. Почти каждые 10 лет
стандарт новый выходит. А в последнее время вообще зачастили.
Здравствуйте, Erop, Вы писали:
E>Ну и, во-вторых, кого интересует производительность на РС? На РС надо отладиться, а реальный прогон делают на тачке помощнее
Кстати на sf.net есть несколько студий для удаленной отладки, даже одна китайская — с виду красивые.