Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 15:09 13.06.24 
Клубове/ Компютри и Интернет / Програмисти Пълен преглед*
Информация за клуба
Тема Re: Скорост на ассемблер срещу Ц [re: grg]
Автор gat3way (altered mind)
Публикувано11.12.11 14:41  



Не си го компилирал. Умножението в inner loop-а не е коректно и този код няма да се компилира. Опитваш се да навреш в double променлива резултата от умножението на double с два указателя. Преправих го на:

В отговор на:


a*=m[j]*m[j];




защото предполагам че нещо такова си искал да направиш.

Дизасемблираният код е:

0x0000000000400570 <+0>: movsd (%rdi),%xmm1
0x0000000000400574 <+4>: movsd 0x18(%rdi),%xmm0
0x0000000000400579 <+9>: mulsd %xmm1,%xmm1
0x000000000040057d <+13>: movsd 0x20(%rdi),%xmm2
0x0000000000400582 <+18>: mulsd %xmm0,%xmm1
0x0000000000400586 <+22>: mulsd %xmm0,%xmm1
0x000000000040058a <+26>: movsd 0x30(%rdi),%xmm0
0x000000000040058f <+31>: mulsd %xmm0,%xmm1
0x0000000000400593 <+35>: mulsd %xmm0,%xmm1
0x0000000000400597 <+39>: movsd 0x8(%rdi),%xmm0
0x000000000040059c <+44>: mulsd %xmm0,%xmm0
0x00000000004005a0 <+48>: addsd 0x140(%rip),%xmm1 # 0x4006e8
0x00000000004005a8 <+56>: mulsd %xmm2,%xmm0
0x00000000004005ac <+60>: mulsd %xmm2,%xmm0
0x00000000004005b0 <+64>: movsd 0x38(%rdi),%xmm2
0x00000000004005b5 <+69>: mulsd %xmm2,%xmm0
0x00000000004005b9 <+73>: mulsd %xmm2,%xmm0
0x00000000004005bd <+77>: movsd 0x28(%rdi),%xmm2
0x00000000004005c2 <+82>: addsd %xmm0,%xmm1
0x00000000004005c6 <+86>: movsd 0x10(%rdi),%xmm0
0x00000000004005cb <+91>: mulsd %xmm0,%xmm0
0x00000000004005cf <+95>: mulsd %xmm2,%xmm0
0x00000000004005d3 <+99>: mulsd %xmm2,%xmm0
0x00000000004005d7 <+103>: movsd 0x40(%rdi),%xmm2
0x00000000004005dc <+108>: mulsd %xmm2,%xmm0
0x00000000004005e0 <+112>: mulsd %xmm2,%xmm0
0x00000000004005e4 <+116>: addsd %xmm1,%xmm0
0x00000000004005e8 <+120>: retq


И двата цикъла са напълно unroll-нати, при това и векторизирани. Цялата ти матрица m[3][3] се събира точно в 2 cacheline-а, при това положение няма огромно значение как точно си правело адресните изчисления. За да ги заредиш в регистри и да си правиш сметките само с регистрите (цели 16 64-битови регистри или 8 xmm такива), няма да ти трябва по-малко време. Ако толкова държиш да ускориш нещата, сложи два __mm_prefetch()-а малко преди да викнеш f().

Накрая, единственото което може да подобри нещата според мен е да уредиш по някакъв начин alignment-а на 16 байта за m и да зареждаш стойностите с MOVAPD вместо с MOVSD. Това може и да включва shuffle операции с xmm регистрите и може и да не е добра идея - а може и да е много добра идея, не знам - не можах да излъжа gcc да го направи така или иначе.

И защо не пусна и асемблерния код, който си замислил да е "значително по-бърз"? Имам силни предположения че ще unroll-неш двата цикъла и ще ползваш FPU-то за да ти смята 2 пъти повече операции, отколкото ако ползваш SIMD разширенията, при това по-бавно. Трябваше да го направиш. Всъщност и да benchmark-неш двете нямаше да е зле.

П.П извинявам се, коректно е било, просто тъпия дир.бг поради някаква причина го отрязва :(

Ей ама доста противен тоя дир.бг !!!!

Редактирано от gat3way на 11.12.11 14:43.



Цялата тема
ТемаАвторПубликувано
* Скорост на ассемблер срещу Ц grg   10.12.11 22:38
. * Re: Скорост на ассемблер срещу Ц - грыматика Naki   10.12.11 22:53
. * Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   11.12.11 17:05
. * Re:Re: Скорост на ассемблер срещу Ц - грыматика Naki   11.12.11 17:20
. * Re:Re: Скорост на ассемблер срещу Ц - грыматика Cин Mapмoт   11.12.11 17:34
. * Re:Re: Скорост на ассемблер срещу Ц - грыматика Naki   11.12.11 17:38
. * Re:Re: Скорост на ассемблер срещу Ц - грыматика Cин Mapмoт   11.12.11 17:41
. * Re:Re: Скорост на ассемблер срещу Ц - грыматика Naki   11.12.11 17:51
. * Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   11.12.11 18:15
. * Re:Re: Скорост на ассемблер срещу Ц - грыматика ~@!$^%*amp;()_+   11.12.11 20:07
. * Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   11.12.11 20:10
. * Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика ~@!$^%*amp;()_+   11.12.11 20:14
. * Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   11.12.11 20:18
. * Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика Naki   11.12.11 20:28
. * Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   11.12.11 20:29
. * Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика Naki   11.12.11 20:33
. * Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   11.12.11 20:39
. * Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика Naki   11.12.11 20:40
. * Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   11.12.11 20:45
. * Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика Naki   11.12.11 21:50
. * Re:Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   11.12.11 23:17
. * Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика tuff slim   11.12.11 22:13
. * Re:Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   11.12.11 23:24
. * Re:Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика jeffty   13.12.11 05:50
. * Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика Naki   11.12.11 23:25
. * Re:Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   11.12.11 23:35
. * Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика Cин Mapмoт   11.12.11 23:58
. * Re:Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   13.12.11 23:52
. * Re:Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика Naki   13.12.11 23:53
. * Re:Re:Re:Re:Re:Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика !Roxana!   13.12.11 23:58
. * Е имаш слава де, Kirosviniata   16.12.11 15:16
. * Re:Е имаш слава де, !Roxana!   16.12.11 18:20
. * Дроид маркета Kirosviniata   11.12.11 21:53
. * Re:Re:Re:Re: Скорост на ассемблер срещу Ц - грыматика Eвлaмпи Пoпдимитpoв   12.12.11 00:01
. * Re:Re: Скорост на ассемблер срещу Ц - грыматика Naki   11.12.11 20:27
. * ти си уникално тъпа ~@!$^%*amp;()_+   11.12.11 20:05
. * Re:ти си уникално тъпа !Roxana!   11.12.11 20:09
. * Re:ти си уникално тъпа tuff slim   11.12.11 22:09
. * Re:Re: Скорост на ассемблер срещу Ц - грыматика Triglav Zmei   12.12.11 16:24
. * аз на асемблер бих го написал така: NOP ~@!$^%*amp;()_+   10.12.11 23:08
. * Re: Скорост на ассемблер срещу Ц BlGBUGEX   10.12.11 23:31
. * Re: Скорост на ассемблер срещу Ц grg   11.12.11 00:26
. * Re: Скорост на ассемблер срещу Ц Naki   11.12.11 01:01
. * Re: Скорост на ассемблер срещу Ц BlGBUGEX   11.12.11 02:18
. * Re: Скорост на ассемблер срещу Ц muletar   11.12.11 03:35
. * Re:Re: Скорост на ассемблер срещу Ц !Roxana!   11.12.11 17:09
. * Re: Скорост на ассемблер срещу Ц |   11.12.11 05:42
. * High Level Assembly rossen genchev   11.12.11 09:27
. * Re: Скорост на ассемблер срещу Ц Pekoнcтpykтop   11.12.11 12:20
. * Re: Скорост на ассемблер срещу Ц gat3way   11.12.11 14:41
. * Re: Скорост на ассемблер срещу Ц ГHУCEH©ГHOM   11.12.11 15:14
. * а пробва ли го на асемблер? zaphod   11.12.11 18:07
. * Re: Скорост на ассемблер срещу Ц Beco_   11.12.11 18:56
. * Re: Скорост на ассемблер срещу Ц |   11.12.11 19:29
. * Re: Скорост на ассемблер срещу Ц Beco_   11.12.11 20:49
. * Re: Скорост на ассемблер срещу Ц |   11.12.11 20:57
. * Re: Скорост на ассемблер срещу Ц Beco_   11.12.11 22:45
. * Re: Скорост на ассемблер срещу Ц grg   11.12.11 20:57
. * Re: Скорост на ассемблер срещу Ц |   11.12.11 21:04
. * Re: Скорост на ассемблер срещу Ц gat3way   11.12.11 23:44
. * Re: Скорост на ассемблер срещу Ц |   12.12.11 00:12
. * Re: Скорост на ассемблер срещу Ц gat3way   12.12.11 00:38
. * Re: Скорост на ассемблер срещу Ц |   12.12.11 03:06
. * Re: Скорост на ассемблер срещу Ц ~@!$^%*amp;()_+   12.12.11 06:26
. * хахаха, ловеркасе о3 а zaphod   12.12.11 07:59
. * Re: хахаха, ловеркасе о3 а BlGBUGEX   12.12.11 09:29
. * Re: хахаха, ловеркасе о3 а |   12.12.11 15:43
. * Re: хахаха, ловеркасе о3 а Eвлaмпи Пoпдимитpoв   12.12.11 23:09
. * Re: хахаха, ловеркасе о3 а BlGBUGEX   13.12.11 10:52
. * Re: хахаха, ловеркасе о3 а |   12.12.11 15:40
. * Re: хахаха, ловеркасе о3 а gat3way   13.12.11 00:40
. * Re: хахаха, ловеркасе о3 а Accolade   13.12.11 06:47
. * Re: хахаха, ловеркасе о3 а gat3way   13.12.11 21:48
. * Re: хахаха, ловеркасе о3 а zaphod   13.12.11 07:52
. * Re: хахаха, ловеркасе о3 а gat3way   13.12.11 22:56
. * Re: Скорост на ассемблер срещу Ц BlGBUGEX   12.12.11 03:12
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.