Re[2]: Fortran vs C++ (два аспекта)
От: Programador  
Дата: 17.07.09 10:26
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Приятель годами работает в Интеле, как раз на библиотеках. Видел примеры кода. ЭТО — не фортран и не С++! Скорей, суперпродвинутый ассемблер. Отдельные версии функций для 2/4 ядер...

У микрософта тоже есть некие приблуды к Си для всяких simd

А>Но, подчеркну, библиотеки ДЛЯ фортрана.

Первая попавшаяся ссылка http://software.intel.com/ru-ru/forums/95/topic/63232/ фортран даже не упоминается.
Re[3]: Fortran vs C++ (два аспекта)
От: Programador  
Дата: 17.07.09 11:11
Оценка:
Здравствуйте, D14, Вы писали:


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] , ;
Re[4]: Fortran vs C++ (два аспекта)
От: Programador  
Дата: 17.07.09 11:15
Оценка:
P>можно через раз в обратном направлении строки перебирать, чтоб остатки, которые в кэше подобрать. А с полным перебором так не получится
Не получится по 4, а в обратном направлении чередовать можно
Re[6]: Fortran vs C++
От: Erop Россия  
Дата: 17.07.09 11:52
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Так что тут можно ещё предвычислить, и так одна комманда

MZ>машинная.

Разные команды выполняются разное время...

MZ>Хотя наверное это уже малоинтересно.

Это да. Сильная сторона FORTRAN -- это довольно сильная переносимость. Типа отладился на PC на задаче можельного размера гоняешь реальные размеры на супер-машинке, где время -- большие деньги
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Fortran vs C++
От: Vzhyk  
Дата: 17.07.09 14:55
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Аноним 405 пишет:

>>
>> Разные люди говорят что вычислительные программы работают быстрее если
>> они были написаны на Fortran-е а не на C++.
V>Сказка из серии: "Когда мы были молодыми..."

>> Что можете сказать по этому поводу.

V>Ну трава в прошлом веке зеленее была.
Егор, единственный раз здесь на минус мне стало интересно с чем ты не согласен? Высказался бы уж.
Re[3]: Fortran vs C++
От: Erop Россия  
Дата: 17.07.09 15:14
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Егор, единственный раз здесь на минус мне стало интересно с чем ты не согласен? Высказался бы уж.


Долго и лень.
Если коротко, то фортраны промышленные обычно заточены под традиционные вычматы. Типа когда матрицы с векторамии жуют. И пр этом они ещё и очень портабл. А С/С++ не заточены...
Так что фортран реально удобнее быстрее и надёжнее получается...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Fortran vs C++
От: Vzhyk  
Дата: 17.07.09 15:29
Оценка: +1 -1
Erop пишет:
>
>
> Долго и лень.
> Если коротко, то фортраны промышленные обычно заточены под традиционные
> вычматы.
Вообще-то под традиционные вычматы заточены или нет руки (голова) того
програмера, который пишет.

> Типа когда матрицы с векторамии жуют. И пр этом они ещё и очень

> портабл. А С/С++ не заточены...
Опять же из области веры. На С/С++ просто больше зависит от программиста.

> Так что фортран реально удобнее быстрее и надёжнее получается...

Опять вера в серебряную пулю.

P.S. Я достаточно много раньше на фортране писал (ощущение, что в
прошлой жизни), исключительно субъективное мнение: С/С++ гораздо
удобнее, но накладывает более жесткие требования на квалификацию
программиста.
Возможно, если бы фортран развивался также как С, то, вполне возможно,
что сейчас он бы и был удобнее и эффективнее, но он остался фактически
тем же, что и был.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: Fortran vs C++
От: Programador  
Дата: 17.07.09 16:16
Оценка: :)
Здравствуйте, Erop, Вы писали:


E>Это да. Сильная сторона FORTRAN -- это довольно сильная переносимость. Типа отладился на PC на задаче можельного размера гоняешь реальные размеры на супер-машинке, где время -- большие деньги


есть тесты типа такие где C/Fortran несколько ткнул — микстура. Нет хорошего свободного. Внизу результаты для чего-то там как-то хило у фортрана с воспроизводимостью. Идем к интелю здесь здесь видим у фортрана 9 фичей против 11 у Си. А интел единственный кажется поставщик фортрана для х86 на текущи момент.
Re[8]: Fortran vs C++
От: Erop Россия  
Дата: 17.07.09 18:30
Оценка:
Здравствуйте, Programador, Вы писали:

P>есть тесты типа такие где C/Fortran несколько ткнул — микстура. Нет хорошего свободного. Внизу результаты для чего-то там как-то хило у фортрана с воспроизводимостью. Идем к интелю здесь здесь видим у фортрана 9 фичей против 11 у Си. А интел единственный кажется поставщик фортрана для х86 на текущий момент.


Это всё не важно.
Во-первых, FORTRAN, заточен под конкретные задачи, на них он и хорош. На других -- не очень...
Ну и, во-вторых, кого интересует производительность на РС? На РС надо отладиться, а реальный прогон делают на тачке помощнее
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[5]: Fortran vs C++
От: Erop Россия  
Дата: 17.07.09 18:34
Оценка:
Здравствуйте, Vzhyk, Вы писали:

V>Вообще-то под традиционные вычматы заточены или нет руки (голова) того

V>програмера, который пишет.

На С нужен намного более "заточенный" программист...

V>Опять же из области веры. На С/С++ просто больше зависит от программиста.

Ну дык больше от программиста, меньше от языка...

>> Так что фортран реально удобнее быстрее и надёжнее получается...

V>Опять вера в серебряную пулю.
Просто опыт...

V>P.S. Я достаточно много раньше на фортране писал (ощущение, что в

V>прошлой жизни), исключительно субъективное мнение: С/С++ гораздо
V>удобнее, но накладывает более жесткие требования на квалификацию
V>программиста.
Ну если квалификация нужна выше, то язык значит подходит меньше

V>Возможно, если бы фортран развивался также как С, то, вполне возможно,

V>что сейчас он бы и был удобнее и эффективнее, но он остался фактически
V>тем же, что и был.

Так и хорошо. Как был машинкой для пережёвывания матриц, так и остался...

А зачем тебе было знать, с чем именно я несогласен, кстати? Ты же не понял что я написал
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[9]: Fortran vs C++
От: Programador  
Дата: 17.07.09 19:05
Оценка:
Здравствуйте, Erop, Вы писали:

E> На РС надо отладиться, а реальный прогон делают на тачке помощнее


Эти бенчмарки-2006 и были на тачка помощнее Xeon 2.5GHz with 16G memory machine. The operation system is 64bits Линух какойто

416.gamess     Fortran     abormal exit
465.tonto     Fortran     compile error
436.cactusADM     C/Fortran     fatal: fault (unalign) detected @ PC 0x120026614
410.bwaves     Fortran     o.k.
437.leslie3d     Fortran     o.k.
459.GemsFDTD     Fortran     o.k.
434.zeusmp     Fortran     output is different with the reference
435.gromacs     C/Fortran     output is wrong, mremap has problem
481.wrf     C/Fortran     STOP wrf_abort. Need library

Re[5]: Fortran vs C++
От: MasterZiv СССР  
Дата: 18.07.09 11:41
Оценка: +1
Vzhyk пишет:

> Возможно, если бы фортран развивался также как С, то, вполне возможно,

> что сейчас он бы и был удобнее и эффективнее, но он остался фактически
> тем же, что и был.

"Также как С" -- это как? Никак ? А фортран очень сильно развивается,
если бы не развивался бы, давно его не было бы. Почти каждые 10 лет
стандарт новый выходит. А в последнее время вообще зачастили.
Posted via RSDN NNTP Server 2.1 beta
Re[9]: Fortran vs C++
От: Programador  
Дата: 18.07.09 21:46
Оценка:
Здравствуйте, Erop, Вы писали:

E>Ну и, во-вторых, кого интересует производительность на РС? На РС надо отладиться, а реальный прогон делают на тачке помощнее

Кстати на sf.net есть несколько студий для удаленной отладки, даже одна китайская — с виду красивые.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.