Comments 11
Да и вообще: она быстрее, чем эквивалентные коды Fortran и C! (подробнее об этом позже)
Как воспроизвести эти результаты?
Современные чипы Intel предоставляют ряд расширений наборов команд. Среди них — различные версии Streaming SIMD Extension (SSE) и…
AMD тоже предоставляют…
https://github.com/cbellei/Diffusion.jl вот репозиторий Клаудио
https://dournac.org/info/parallel_heat2d — а это С/Fortran Фабьена Дурнака, чей код переводил первый автор
Это не то. В статье были показаны графики, а значит автор должен был иметь бенчмарк(он же не из головы результаты взял?). Вот я хочу увидеть этот бенчмарк, который я смогу запустить и воспроизвести результаты?
Бенчмарк это такая штука, которая запускает несколько реализаций одного и того же, сравнивает результаты выполнения(они должны быть идентичны) и показывает нам время для каждой реализации.
Бенчмарк это такая штука, которая запускает несколько реализаций одного и того же, сравнивает результаты выполнения(они должны быть идентичны) и показывает нам время для каждой реализации.
Решил я тут пойти по ссылкам. И увидел это:
На этом уже можно закончить. Но я не закончил.
Я взял однопоточную версию. gcc7 у меня нет, поэтому будет gcc9. Собрал через make и получил в районе 80 секунд.
Далее я собрал всё в файл и собрал -O3 -march=native -lm. Результат уже ~10 секунд(gcc9.1/clang9). Файлы .dat идентичны. -Ofast + clang9(т.е. llvm, который является компилятором и в julia) уже 7 секунд.
О качестве кода я говорить ничего не буду.
Автоматическая векторизация для fp небезопасна и я бы таким не гордился. Но в любом случае, если он включена, то сравнивать нужно с -ffast-math для С.
Собственно, в очередной раз можно убедиться в адекватности всех этих сравнений и громких заявлений.
CC = gcc-mp-7 -Wall
На этом уже можно закончить. Но я не закончил.
Я взял однопоточную версию. gcc7 у меня нет, поэтому будет gcc9. Собрал через make и получил в районе 80 секунд.
Далее я собрал всё в файл и собрал -O3 -march=native -lm. Результат уже ~10 секунд(gcc9.1/clang9). Файлы .dat идентичны. -Ofast + clang9(т.е. llvm, который является компилятором и в julia) уже 7 секунд.
О качестве кода я говорить ничего не буду.
Автоматическая векторизация в Julia
Автоматическая векторизация для fp небезопасна и я бы таким не гордился. Но в любом случае, если он включена, то сравнивать нужно с -ffast-math для С.
Собственно, в очередной раз можно убедиться в адекватности всех этих сравнений и громких заявлений.
Вы про такое https://github.com/JuliaCI/BenchmarkTools.jl ?
Нет. Это какая-то библиотека для написания бенчмарков.
У нас есть Си-версия.
Есть файл params:
Мы получаем: outputSeq.dat и время от time(либо от Wall Clock, которое вывод си-версия).
С вашей(julia) стороны нужно предоставить тоже самое. Т.е. какую-то программу(либо исходник с мануалом «как собрать?»), которая будет по таким же параметрам генерировать такой же outputSeq.dat.
Далее, при идентичных outputSeq.dat файлах, мы уже можем сравнивать time для julia и для С. Это будет адекватное сравнение и каждый наблюдатель сможет воспроизвести результаты(повторив наш алгоритм проверки. Сам, либо посредством предоставленных скриптов).
У нас есть Си-версия.
Есть файл params:
512
512
100000000
1.0e-1
1.0e-1
$ clang main.c -Ofast -march=native -o main
$ time ./main < params
Мы получаем: outputSeq.dat и время от time(либо от Wall Clock, которое вывод си-версия).
С вашей(julia) стороны нужно предоставить тоже самое. Т.е. какую-то программу(либо исходник с мануалом «как собрать?»), которая будет по таким же параметрам генерировать такой же outputSeq.dat.
Далее, при идентичных outputSeq.dat файлах, мы уже можем сравнивать time для julia и для С. Это будет адекватное сравнение и каждый наблюдатель сможет воспроизвести результаты(повторив наш алгоритм проверки. Сам, либо посредством предоставленных скриптов).
Тема масштабируемости не раскрыта, а это самое важное. Сравнение 1 CPU vs. 2 CPU имеет мало смысла, но даже в этом случае с Джулией что-то не так.
Sign up to leave a comment.
Джулия и параллельные вычисления