Delegate
Създадено на 02.10.2020, видяно: 1819 пъти. #13493
Под Windows, да.
johnfound
Създадено на 02.10.2020, видяно: 1813 пъти. #13495
Всъщност да, мога да го повторя на Windows. Има някакъв проблем точно с Windows-ката версия, интересното е, че във WINE работи нормално. Ще се опитам да дебъгна, но с Windows-a ми е малко сложно...
Малко модифицирах С-версията на Пайпа и при мен дава по-добри резултати сега.
CPU:G1840/2.8Ghz
Оригинала
ds 99775 ol 100
0: 4 8968.431100 ms
1: 4 8069.468440 ms
2: 4 8980.419330 ms
3: 4 8979.220470 ms
4: 40 8971.888060 ms
5: 4 8069.415440 ms
6: 9 8972.812720 ms
7: 6 8971.225680 ms
8: 4 8969.875560 ms
9: 6 8073.109850 ms
С друга дистанс функция
ds 99775 ol 100
0: 4 4980.765750 ms
1: 4 4982.043070 ms
2: 4 4981.196810 ms
3: 4 4084.879320 ms
4: 40 4988.079010 ms
5: 4 4981.050080 ms
6: 9 4980.811110 ms
7: 6 4981.194600 ms
8: 4 4981.177410 ms
9: 6 4081.528070 ms
Не би ли трябвало асмеблера да работи еднакво на всякъде ?
|
Създадено на 02.10.2020, видяно: 1758 пъти. #13535
Малко модифицирах С-версията на Пайпа и при мен дава по-добри резултати сега.
CPU:G1840/2.8Ghz
Оригинала
ds 99775 ol 100
0: 4 8968.431100 ms
1: 4 8069.468440 ms
2: 4 8980.419330 ms
3: 4 8979.220470 ms
4: 40 8971.888060 ms
5: 4 8069.415440 ms
6: 9 8972.812720 ms
7: 6 8971.225680 ms
8: 4 8969.875560 ms
9: 6 8073.109850 ms
С друга дистанс функция
ds 99775 ol 100
0: 4 4980.765750 ms
1: 4 4982.043070 ms
2: 4 4981.196810 ms
3: 4 4084.879320 ms
4: 40 4988.079010 ms
5: 4 4981.050080 ms
6: 9 4980.811110 ms
7: 6 4981.194600 ms
8: 4 4981.177410 ms
9: 6 4081.528070 ms
gat3way
Създадено на 02.10.2020, видяно: 1712 пъти. #13584
Това с векторизацията на теслата доста вероятно ще доведе до противоречив, вероятно по-лош резултат. Аз дори съм учуден че има вектори в кудата, в опенцл-а има защото е за различна железария - от процесори през FPGA до видеокарти, там някои платформи си имат реално хардуерни SIMD регистри отдолу. Нвидията няма (АМД имаха в по-старите архитектури, ма ги махнаха). Тоест от векторни операции няма да намажеш абсолютно нищо, просто защото компилатора ще ги сведе до n на броя скаларни, които ще подкара една след друга. Обаче в един частен случай има файда от това дори при това положение - при достъпването на памет. Това е защото хардуера позволява наведнъж да се чете повече памет, сега колко точно не помня, но определено е повече от един int на workitem. И тогава, от четенето от векторен буфер във векторна променлива има файда. От друга страна, това ще ти вдигне бройката регистри, които ползва кернела и съответно ще имаш по-ниско occupancy. Та като цяло дали ще намажеш или не е въпрос на експерименти.
johnfound
Създадено на 02.10.2020, видяно: 1704 пъти. #13586
Не би ли трябвало асмеблера да работи еднакво на всякъде ?
Безспорно. Това си е бъг. Но ми е трудно да го дебъгвам, защото нямам Windows, а под Wine всичко работи нормално...
Евлампи
Създадено на 02.10.2020, видяно: 1698 пъти. #13589
защото нямам Windows
Я, колко сме в тоя клуб тука?
Рабин ИМА уиндоус (краден) и го ползва, да мълчи иззад козовръза
|
Създадено на 02.10.2020, видяно: 1689 пъти. #13595
Това с векторизацията на теслата доста вероятно ще доведе до противоречив, вероятно по-лош резултат. Аз дори съм учуден че има вектори в кудата, в опенцл-а има защото е за различна железария - от процесори през FPGA до видеокарти, там някои платформи си имат реално хардуерни SIMD регистри отдолу. Нвидията няма (АМД имаха в по-старите архитектури, ма ги махнаха). Тоест от векторни операции няма да намажеш абсолютно нищо, просто защото компилатора ще ги сведе до n на броя скаларни, които ще подкара една след друга. Обаче в един частен случай има файда от това дори при това положение - при достъпването на памет. Това е защото хардуера позволява наведнъж да се чете повече памет, сега колко точно не помня, но определено е повече от един int на workitem. И тогава, от четенето от векторен буфер във векторна променлива има файда. От друга страна, това ще ти вдигне бройката регистри, които ползва кернела и съответно ще имаш по-ниско occupancy. Та като цяло дали ще намажеш или не е въпрос на експерименти.
Опитвам се да използвам разните intrinsics като vminu4, не знам точно до какъв код ще доведат.
bvbfan
Създадено на 03.10.2020, видяно: 1667 пъти. #13689
Има ли 64 ядра? :)
Пробвал ли си с 60-на нишки?
bvbfan
Последно редактирано на 03.10.2020 от bvbfan, видяно: 1666 пъти. #13690
Абе това trie колко памет харчи ? Аз се заиграх, но ми заема 2ГБ :(
Харчи (виж prefix/radix trie) също както и непрекъснатото зареждане при всяко пускане на програмата, но Пайп-а не иска да разисква тоя въпрос, защото компенсира със смятането на гпу и неглижира проблема.
|
Създадено на 03.10.2020, видяно: 1657 пъти. #13692
Абе това trie колко памет харчи ? Аз се заиграх, но ми заема 2ГБ :(
Харчи (виж prefix/radix trie) също както и непрекъснатото зареждане при всяко пускане на програмата, но Пайп-а не иска да разисква тоя въпрос, защото компенсира със смятането на гпу и неглижира проблема.
Какъв е проблема с паметта? Трай за примерния dataset ima 12 милиона nodes и отнема около 512 MB памет. И за какво непрекъснато зареждане става въпрос? Всеки път го изграждам в паметта.
|
Създадено на 03.10.2020, видяно: 1654 пъти. #13693
Има ли 64 ядра? :)
Пробвал ли си с 60-на нишки?
Пробвах програмата на John с 256 (компютъра има 2 процессора * 64 ядра * 2 заради SMT) едновременни изпълнения да видя дали ще има някакво забавяне във времената. И да е имало, не беше забележимо.
bvbfan
Последно редактирано на 03.10.2020 от bvbfan, видяно: 1650 пъти. #13697
Какъв е проблема с паметта? Трай за примерния dataset ima 12 милиона nodes и отнема около 512 MB памет. И за какво непрекъснато зареждане става въпрос? Всеки път го изграждам в паметта.
Всеки път се чете от файл и се зарежда в дърво, при всяко стартиране - това е проблем. Идеята на дб-тата е да се зарежда само нужната информация, евентуално да се кешира. При само 512MB наистина са малко и все още не е проблем. Като стане GiB зареждането ще усетиш и забавяне. Какъв е точно по вид е трая? Валидация правиш ли?
|
Създадено на 03.10.2020, видяно: 1646 пъти. #13698
Какъв е проблема с паметта? Трай за примерния dataset ima 12 милиона nodes и отнема около 512 MB памет. И за какво непрекъснато зареждане става въпрос? Всеки път го изграждам в паметта.
Всеки път се чете от файл и се зарежда в дърво, при всяко стартиране - това е проблем. Идеята на дб-тата е да се зарежда само нужната информация, евентуално да се кешира. Какъв е точно по вид е трая?
ЦЯЛАТА информация е нужна в случая. Колко пъти още трябва да се повтори за да го схванеш?