URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9528
[ Назад ]

Исходное сообщение
"Программирование SIMD библиотек на Fasm в x86-64 Linux"

Отправлено Jack Black , 23-Авг-12 23:55 
Начал недавно проект по разработке SIMD бибилиотек для С++ на Fasm под 64-bit Linux.
Интересно услышать мнение матерых программеров как о самом проекте, так и качестве кода.
Вот вебсайт, где можно качнуть исходники и посмотреть документацию, которая уже есть.
http://linasm.sourceforge.net/docs/index.php

Содержание

Сообщения в этом обсуждении
"Программирование SIMD библиотек на Fasm в x86-64 Linux"
Отправлено Аноним , 28-Авг-12 18:36 
> Начал недавно проект по разработке SIMD бибилиотек для С++ на Fasm под
> 64-bit Linux.
> Интересно услышать мнение матерых программеров как о самом проекте, так и качестве
> кода.
> Вот вебсайт, где можно качнуть исходники и посмотреть документацию, которая уже есть.
> http://linasm.sourceforge.net/docs/index.php

Нет бенчмарков, что настораживает. Или есть?


"Программирование SIMD библиотек на Fasm в x86-64 Linux"
Отправлено Jack Black , 28-Авг-12 19:01 
>> Начал недавно проект по разработке SIMD бибилиотек для С++ на Fasm под
>> 64-bit Linux.
>> Интересно услышать мнение матерых программеров как о самом проекте, так и качестве
>> кода.
>> Вот вебсайт, где можно качнуть исходники и посмотреть документацию, которая уже есть.
>> http://linasm.sourceforge.net/docs/index.php
> Нет бенчмарков, что настораживает. Или есть?

Есть. Их код вот тут: http://sourceforge.net/projects/linasm/files/SpeedTests.tar....
А результаты тестов вот они.

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 42
model name      : Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz
stepping        : 7
cpu MHz         : 3160.503
cache size      : 6144 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc rep_good pni ssse3 lahf_lm
bogomips        : 6321.00
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:
################################################################################
#       Numbers conversion library speed test                                  #
################################################################################
This test converts 1000000 numbers in 100 rounds.

Integer numbers conversion:
===========================

Octal numbers conversion:
    'sscanf' time: 19.755847 sec
    'strtoul' time: 5.476777 sec
    'LinAsm' time: 2.952698 sec

Hexadecimal numbers conversion:
    'sscanf' time: 19.364499 sec
    'strtoul' time: 6.264688 sec
    'LinAsm' time: 4.190943 sec

Decimal numbers conversion:
    'sscanf' time: 18.347976 sec
    'strtoul' time: 5.220468 sec
    'LinAsm' time: 2.785372 sec

Floating-point numbers conversion:
==================================

Hexadecimal numbers conversion:
    'sscanf' time: 26.137860 sec
    'strtod' time: 10.961610 sec
    'LinAsm' time: 5.795652 sec

Decimal numbers conversion:
    'sscanf' time: 27.214856 sec
    'strtod' time: 15.222347 sec
    'LinAsm' time: 2.954274 sec
################################################################################
#       Time conversion library speed test                                     #
################################################################################
This test converts 1000000 time stamps in 100 rounds.

Unix time to Gregorian date conversion:
    'gmtime' time: 4.228890 sec
    'LinAsm' time: 2.284649 sec

Gregorian date to unix time conversion:
    'mktime' time: 122.046674 sec        # Это не шибка. Такой вот код в libc
    'LinAsm' time: 1.005384 sec

################################################################################
#       Array library speed test                                               #
################################################################################
This test operates on 10000000 elements wide flt64_t arrays in 100 rounds.

Addition:
    Classic scalar code time: 1.407980 sec
    LinAsm vector code time: 1.379985 sec

Subtraction:
    Classic scalar code time: 1.426498 sec
    LinAsm vector code time: 1.379655 sec

Multiplication:
    Classic scalar code time: 1.397805 sec
    LinAsm vector code time: 1.386163 sec

Division:
    Classic scalar code time: 6.425936 sec
    LinAsm vector code time: 3.445004 sec

Absolute value:
    Classic scalar code time: 1.008767 sec
    LinAsm vector code time: 0.921362 sec

Square root value:
    Classic scalar code time: 11.988184 sec
    LinAsm vector code time: 2.745969 sec

Min value:
    Classic scalar code time: 1.329877 sec
    LinAsm vector code time: 0.665184 sec

Max value:
    Classic scalar code time: 1.320772 sec
    LinAsm vector code time: 0.665314 sec

Convolution value:
    Classic scalar code time: 1.269394 sec
    LinAsm vector code time: 1.083574 sec

Sorting:
    Classic Quick Sort code time: 1.848767 sec
    LinAsm Quick Sort code time: 0.770507 sec
    LinAsm Radix Sort code time: 0.332851 sec


"Программирование SIMD библиотек на Fasm в x86-64 Linux"
Отправлено Jack Black , 30-Авг-12 01:05 
>> Начал недавно проект по разработке SIMD бибилиотек для С++ на Fasm под
>> 64-bit Linux.
>> Интересно услышать мнение матерых программеров как о самом проекте, так и качестве
>> кода.
>> Вот вебсайт, где можно качнуть исходники и посмотреть документацию, которая уже есть.
>> http://linasm.sourceforge.net/docs/index.php
> Нет бенчмарков, что настораживает. Или есть?

Сделал специальную страницу, сравнивающую производительность библиотек для тех функций, которые имеют аналоги в GNU libc. Многие их не имеют, так что тесты сравнивают лишь небольшой набор одинаковых по функционалу алгоритмов. Графики прилагаются.

Ссылка на тесты вот: http://linasm.sourceforge.net/about/performance.php