Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
 
afront
1047 / 993 / 751
Регистрация: 29.02.2016
Сообщений: 3,185
#1

Сравнение скорости вычислений с# с Fortran - C#

07.06.2016, 10:19. Просмотров 1399. Ответов 52
Метки нет (Все метки)

Сделал сравнение скорости расчетов при умножении матриц в с# и в Фортране.
В с# производились вычисления последовательно и параллельно.
В Фортране - последовательно.
Получил драматическую разницу в результатах:
http://www.cyberforum.ru/csharp-beginners/thread652074.html
- последовательный расчет с# - 776 мс;
- параллельный расчет с# - 245 мс;
- последовательный расчет Фортран - 64 мс.
Для интересующихся приложил проект, может я где то ошибся.
Меня этот вопрос очень интересует, раздумывал, может целиком перебраться в c#.
Для компиляции Фортрана использовался Интел Фортран
0
Вложения
Тип файла: rar Samples.rar (197.2 Кб, 16 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2016, 10:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сравнение скорости вычислений с# с Fortran (C#):

Зависимость начальной скорости от скорости в момент приземления
Пользователь вводит высоту с которой было брошено тело и его массу. Требуется...

Сравнение скорости вычислений с# и С++
Сделал тестовые расчеты для сравнения скорости расчетов с# и С++ на примере...

Что лучше использовать для научных математических вычислений: С++ или Fortran?
Что лучше использовать для научных математических вычислений, С++ или Fortran....

Сравнение времен вычислений
определить время, необходимое для вычисления функции/(л:) в 1000 точек,...

Сравнение скорости
вечер добрый. смотрел задачи на codeforces, и заметил, что 90% решений на с++...

52
Storm23
Эксперт .NETАвтор FAQ
5904 / 3502 / 1305
Регистрация: 11.01.2015
Сообщений: 4,611
Записей в блоге: 31
08.06.2016, 09:47 #41
Цитата Сообщение от afront Посмотреть сообщение
нужна скорее всего еще вот эта интеловская библиотека
Теперь заработало.
Вот результаты.
Библиотека из поста #36
На Core2 Quad (4 ядра) 2.4GHz, Win7 x86:
Sequential loop time in milliseconds: 13345
Sequential unsafe loop time in milliseconds: 2104
Parallel loop time in milliseconds: 4566
Fortran DLL time in milliseconds: 706
На Core i5-4200 (2 ядра), 2.8 GHz, Win10 x64:
Sequential loop time in milliseconds: 5660
Sequential unsafe loop time in milliseconds: 775
Parallel loop time in milliseconds: 3764
Fortran DLL time in milliseconds: 217

Библиотека из поста #37
На Core2 Quad (4 ядра) 2.4GHz , Win7 x86:
Sequential loop time in milliseconds: 13465
Sequential unsafe loop time in milliseconds: 1866
Parallel loop time in milliseconds: 4345
Fortran DLL time in milliseconds: 1721
На Core i5-4200 (2 ядра), 2.8 GHz, Win10 x64:
Sequential loop time in milliseconds: 5732
Sequential unsafe loop time in milliseconds: 788
Parallel loop time in milliseconds: 3807
Fortran DLL time in milliseconds: 3867


В целом, библиотека из #36 работает быстрее всего. Она в 3 раза быстрее unsafe (вероятно использует SSE).
А вот либа из #37 тормозит, особенно на двухядернике (или это из-за того что x64, не знаю).
Зато unsafe C# стабильно в 6 раз быстрее чем pure C#.

Цитата Сообщение от Vigelforts Посмотреть сообщение
Кстати, никто не учитывает студии на которых собирается проект?Может кто-то под 2013, а кто-то другой под 2015, например? Результат может сильно отличаться
За счет чего?
0
Vigelforts
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
08.06.2016, 10:27 #42
Storm23, за счёт другого компилятора(Roslyn же в 2015) и JIT новый 2015 студии
0
Storm23
Эксперт .NETАвтор FAQ
5904 / 3502 / 1305
Регистрация: 11.01.2015
Сообщений: 4,611
Записей в блоге: 31
08.06.2016, 10:52 #43
Цитата Сообщение от Vigelforts Посмотреть сообщение
за счёт другого компилятора(Roslyn же в 2015) и JIT новый 2015 студии
Я компилирую в VS2015 но не думаю что это оказывает какое-то существенное влияние.
0
Vigelforts
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
08.06.2016, 11:06 #44
Storm23, может и оказывать. Надо сравнивать. Если вы уж пытаетесь замерять производительность, то надо учитывать все факторы.
0
afront
1047 / 993 / 751
Регистрация: 29.02.2016
Сообщений: 3,185
08.06.2016, 11:32  [ТС] #45
VS2012
Sequential loop time in milliseconds: 7684
Parallel loop time in milliseconds: 1780
Unsafe loop time in milliseconds: 2524
Fortran DLL time in milliseconds: 1762

VS2015
Sequential loop time in milliseconds: 7277
Parallel loop time in milliseconds: 1761
Unsafe loop time in milliseconds: 2504
Fortran DLL time in milliseconds: 1767
0
halk0812
67 / 54 / 31
Регистрация: 05.09.2013
Сообщений: 665
Завершенные тесты: 1
08.06.2016, 11:35 #46
хм, интересно... А можешь снова архивчик с проектом приложить? у себя погоняю
0
afront
1047 / 993 / 751
Регистрация: 29.02.2016
Сообщений: 3,185
08.06.2016, 11:44  [ТС] #47
если нужна будет omp.dll возьмите выше, плиз
0
Вложения
Тип файла: rar Samples_2012_1000.rar (200.6 Кб, 3 просмотров)
Vigelforts
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
08.06.2016, 11:45 #48
Интересно, а так никого и не смутило, что фортран то работает со скомпилированным и заранее оптимизированным кодом, а в ваш "тест" производительности шарпа так же попадает полностью время JIT компиляции?
0
afront
1047 / 993 / 751
Регистрация: 29.02.2016
Сообщений: 3,185
08.06.2016, 12:22  [ТС] #49
Vigelforts, вроде как делается 3 цикла, указано время в последней итерации?
0
Vigelforts
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
08.06.2016, 12:50 #50
afront, а, пример обновили. Не обратил внимания. Ну в любом случае ожидаемо, что шарп уступает в вычислениях фортрану. Области применения языков разные
0
afront
1047 / 993 / 751
Регистрация: 29.02.2016
Сообщений: 3,185
08.06.2016, 13:00  [ТС] #51
Vigelforts, ожидаемо, что шарп уступает в вычислениях фортрану, так ведь хочется что бы превосходил
0
Vigelforts
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
08.06.2016, 13:09 #52
afront, хотите от управляемой среды прозводительности неуправлямого уже скомпилированного кода собранного под целевую архитектуру? Может быть через n-ое кол-во лет, когда JIT научится мощнейшим оптимизациям, которые будут подстраиваться под конкретный процессоор, но явно не сейчас.
0
afront
1047 / 993 / 751
Регистрация: 29.02.2016
Сообщений: 3,185
08.06.2016, 13:56  [ТС] #53
В "чистом" фортране время примерно равно тому, что было получено в смешанном

matmul loop time in milliseconds: 85. ms
Sequential loop time in milliseconds: 1778. ms

program matmult

integer rowCount , colCount
real*8 matrix_a(1000, 1000)
real*8 matrix_b(1000, 1000)
real*8 res(1000, 1000)
real*8 temp
integer :: t1, t2, dt , count_rate , count_max
real :: secs
rowCount = 1000
colCount = 1000

CALL RANDOM_SEED()
CALL RANDOM_NUMBER(matrix_a)
CALL RANDOM_NUMBER(matrix_b)

matrix_a = matrix_a *100.0
matrix_b = matrix_b *100.0
call system_clock(count_max=count_max, count_rate=count_rate)
call system_clock(t1)
res = matmul(matrix_a, matrix_b)
call system_clock(t2)
dt = t2-t1

secs1 = real(dt)/real(count_rate)

call system_clock(t1)
do i = 1, rowCount
do j = 1, colCount
temp = 0.0D+00
do k = 1, colCount
temp = temp + matrix_a(i,k) * matrix_b(k,j)
end do
res(i,j) = res(i,j) + temp
end do
end do
call system_clock(t2)
dt = t2-t1

secs2 = real(dt)/real(count_rate)

write(*,"('matmul loop time in milliseconds:',f12.0,' ms')") secs1 * 1000.0
write(*,"('Sequential loop time in milliseconds:',f12.0,' ms')") secs2 * 1000.0

end program matmult
0
08.06.2016, 13:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2016, 13:56
Привет! Вот еще темы с решениями:

Сравнение скорости
Вопрос теоретический: что работает быстрее-поразрядное И,ИЛИ (& |),либо...

Сравнение результата вычислений 8-, 12-, 16-битной вычислительных систем в Mathcad
Добрый день, есть простая программа в mathcade которая находит решения...

Сравнение скорости работы Qt и C++
Добрый вечер, коллеги. В одном из моих проектов используется плата Raspberry...

Сравнение скорости сходимости
Напишите программу сравнения скорости сходимости следующего разложенмия числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru