OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 29 Ноябрь, 2020 04:45

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 16 Ноябрь, 2020 15:02 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1493
Кто-нибудь сталкивался с подобными оценками?
Или - проводил самостоятельно?
Нужны на одинаковых задачах, одних и тех же платформах и окружениях.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 24 Ноябрь, 2020 17:24 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1493
И - тишина...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 24 Ноябрь, 2020 19:34 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 186
Откуда: Russia
интересует абстрактное быстродействие?)
Нужно конкретнее. Вот, например, при перемножение матриц в активном обероне могут быть задействованы все ядра процессора и simd инструкции. Будем сравнивать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 25 Ноябрь, 2020 18:14 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1493
Sergej Durmanov писал(а):
Вот, например, при перемножение матриц в активном обероне могут быть задействованы все ядра процессора и simd инструкции. Будем сравнивать?
А - что, в перечисленных языках, есть встроенный тип/класс "матрица", определены методы и мы будем сравнивать реализации?
Вы задали некорректный вопрос на вопрос.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 25 Ноябрь, 2020 18:59 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 186
Откуда: Russia
Матрица это же двумерный массив )) Так что всё честно)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 25 Ноябрь, 2020 23:25 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2375
Откуда: Россия, Томск
Будете сравнивать, обязательно проверьте язык Julia.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 26 Ноябрь, 2020 09:17 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8419
Откуда: Троицк, Москва
Sergej Durmanov писал(а):
Матрица это же двумерный массив )) Так что всё честно)
Лучше объяснить, почему они встроили это умножение в язык, а не сделали спецбиблиотеку вроде Blackbox/Math.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 26 Ноябрь, 2020 11:57 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 186
Откуда: Russia
Info21 писал(а):
Sergej Durmanov писал(а):
Матрица это же двумерный массив )) Так что всё честно)
Лучше объяснить, почему они встроили это умножение в язык, а не сделали спецбиблиотеку вроде Blackbox/Math.
а оно и сделано в виде библиотеки. Но так как в Активном Обероне есть перегрузка операций, то в программе это всё выглядит органично.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 26 Ноябрь, 2020 12:00 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 186
Откуда: Russia
Александр Ильин писал(а):
Будете сравнивать, обязательно проверьте язык Julia.
не компетентен в julia, был бы готовый пример на этом яп, можно было бы сравнить с реализацие на ао.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 26 Ноябрь, 2020 17:19 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8419
Откуда: Троицк, Москва
Sergej Durmanov писал(а):
Info21 писал(а):
Sergej Durmanov писал(а):
Матрица это же двумерный массив )) Так что всё честно)
Лучше объяснить, почему они встроили это умножение в язык, а не сделали спецбиблиотеку вроде Blackbox/Math.
а оно и сделано в виде библиотеки. Но так как в Активном Обероне есть перегрузка операций, то в программе это всё выглядит органично.
Тогда нечего сравнивать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 26 Ноябрь, 2020 18:01 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 186
Откуда: Russia
Так в других языках, обычно, тоже библиотечная реализация, с разной степенью интегрированности в компилятор или использования языковых средств, обеспечивающих бесшовную интеграцию.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 27 Ноябрь, 2020 11:32 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1493
Sergej Durmanov писал(а):
Так в других языках, обычно, тоже библиотечная реализация, с разной степенью интегрированности в компилятор или использования языковых средств, обеспечивающих бесшовную интеграцию.

Ну, тогда - сам Дейкстра велел подобрать и оформить аналогичные семантические случаи и протестировать-сравнить


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 27 Ноябрь, 2020 18:27 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8419
Откуда: Троицк, Москва
Интересней вопрос, насколько эффективно можно реализовать библиотечную процедуру, используя базовые средства языка, и, затем, насколько легко оптимизировать её, оставаясь по-максимуму в пределах языка (ср. code-процедуры).

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 28 Ноябрь, 2020 11:52 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 186
Откуда: Russia
Ничего хорошего из этого не получится. На Обероне уж точно. Хотя современные компиляторы способны использовать simd инструкции и simd регистры, генерируя соответствующий код ( компилятор Активного Оберона тоже это делает ), тем не менее, нормально векторизовать и распараллелить код ни у кого не получается, ну разве что если этот код написан срециальным образом. Не смотря на потраченные деньги. Вполне возможно, если вбухнуть ещё 10 раз по столько, то что-то вменяемое получится. А пока остается ассемблер/интринсиксы и ручное написание библиотек с теми же ассемблером и интринсиксами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 28 Ноябрь, 2020 13:50 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1493
Sergej Durmanov писал(а):
Ничего хорошего из этого не получится.
я могу вам в скайпе расшарить экран с моим "проигрывателем полётов", где в режиме реального времени, чисто программно, без simd, аппаратного ускорения, cuda
и gpu, делаю видеоэффекты с виеопотоками от двух камер. Написано всё на дельфи 7. Всего с тремя строками на встроенном асме.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 28 Ноябрь, 2020 14:02 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 186
Откуда: Russia
Wlad писал(а):
Всего с тремя строками на встроенном асме.
ну это же простая задача )) зачем там асм


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 28 Ноябрь, 2020 18:06 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 186
Откуда: Russia
Вот простой код на Активном Обероне с математическим расширением — умножение матриц 1024х1024(для начала, потом можно прибавлять стартовый размер, чтобы оценить масштаб проблемы). Сделайте на своем любимом языке и посмотрите, сколько времени занимает операция, начните с 1024, потом 2048... и т.д., пока хватит терпения дождаться). В примере создается три массива a, b, c signed32. Массив a инициализируется значением 5, массив b значением 10.
Код:
MODULETestMath; (** AUTHOR ""; PURPOSE ""; *)
IMPORT Commands, Stopwatch;
 
VAR a, b, c: ARRAY [ *, * ] OF SIGNED32;
VAR buf: ARRAY 32 OF CHAR;
 
(** *)
PROCEDURE Do*( context: Commands.Context );
VAR N: SIZE;
BEGIN
   IF ~context.arg.GetSize(N, FALSE) THEN N := 1024 END;
   context.out.String( "N = " ); context.out.Size( N ); context.out.Ln;
 
   NEW( a, N, N ); NEW( b, N, N ); NEW( c, N, N );
   a := 5; b := 10;
   VAR sw: Stopwatch.T; sw.Start;
       c := a * b;
   VAR t := sw.Elapsed( ); sw.Stop;
   Stopwatch.ToString( t, buf );
   context.out.String( buf ); context.out.Ln;
END Do;
 
BEGIN
 
END TestMath.Do ~
 
TestMath.Do 1024~
TestMath.Do 2048~
 
 
System.Free TestMath~


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 29 Ноябрь, 2020 04:15 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2375
Откуда: Россия, Томск
Julia v1.5.3:
Код:
for i in [1 2 4 8 16]
  print(i, ": ")
  N = 1024 * i
  A = fill(Int32(5), (N, N))
  B = fill(Int32(10), (N, N))
  @time begin
    C = A * B
  end
end
Код:
1:   0.520594 seconds (8 allocations: 4.000 MiB)
2:   4.198689 seconds (8 allocations: 16.000 MiB)
4:  33.793543 seconds (8 allocations: 64.000 MiB, 0.22% gc time)
8: 276.754758 seconds (8 allocations: 256.000 MiB, 0.04% gc time)
16: 2046.192749 seconds (8 allocations: 1.000 GiB, 0.00% gc time)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2020, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB