Всъщност да, мога да го повторя на Windows. Има някакъв проблем точно с Windows-ката версия, интересното е, че във WINE работи нормално. Ще се опитам да дебъгна, но с Windows-a ми е малко сложно...
Това с векторизацията на теслата доста вероятно ще доведе до противоречив, вероятно по-лош резултат. Аз дори съм учуден че има вектори в кудата, в опенцл-а има защото е за различна железария - от процесори през FPGA до видеокарти, там някои платформи си имат реално хардуерни SIMD регистри отдолу. Нвидията няма (АМД имаха в по-старите архитектури, ма ги махнаха). Тоест от векторни операции няма да намажеш абсолютно нищо, просто защото компилатора ще ги сведе до n на броя скаларни, които ще подкара една след друга. Обаче в един частен случай има файда от това дори при това положение - при достъпването на памет. Това е защото хардуера позволява наведнъж да се чете повече памет, сега колко точно не помня, но определено е повече от един int на workitem. И тогава, от четенето от векторен буфер във векторна променлива има файда. От друга страна, това ще ти вдигне бройката регистри, които ползва кернела и съответно ще имаш по-ниско occupancy. Та като цяло дали ще намажеш или не е въпрос на експерименти.
Това с векторизацията на теслата доста вероятно ще доведе до противоречив, вероятно по-лош резултат. Аз дори съм учуден че има вектори в кудата, в опенцл-а има защото е за различна железария - от процесори през FPGA до видеокарти, там някои платформи си имат реално хардуерни SIMD регистри отдолу. Нвидията няма (АМД имаха в по-старите архитектури, ма ги махнаха). Тоест от векторни операции няма да намажеш абсолютно нищо, просто защото компилатора ще ги сведе до n на броя скаларни, които ще подкара една след друга. Обаче в един частен случай има файда от това дори при това положение - при достъпването на памет. Това е защото хардуера позволява наведнъж да се чете повече памет, сега колко точно не помня, но определено е повече от един int на workitem. И тогава, от четенето от векторен буфер във векторна променлива има файда. От друга страна, това ще ти вдигне бройката регистри, които ползва кернела и съответно ще имаш по-ниско occupancy. Та като цяло дали ще намажеш или не е въпрос на експерименти.
Опитвам се да използвам разните intrinsics като vminu4, не знам точно до какъв код ще доведат.
Последно редактирано на 03.10.2020 от bvbfan, видяно: 1898 пъти.
Абе това trie колко памет харчи ? Аз се заиграх, но ми заема 2ГБ :(
Харчи (виж prefix/radix trie) също както и непрекъснатото зареждане при всяко пускане на програмата, но Пайп-а не иска да разисква тоя въпрос, защото компенсира със смятането на гпу и неглижира проблема.
Абе това trie колко памет харчи ? Аз се заиграх, но ми заема 2ГБ :(
Харчи (виж prefix/radix trie) също както и непрекъснатото зареждане при всяко пускане на програмата, но Пайп-а не иска да разисква тоя въпрос, защото компенсира със смятането на гпу и неглижира проблема.
Какъв е проблема с паметта? Трай за примерния dataset ima 12 милиона nodes и отнема около 512 MB памет. И за какво непрекъснато зареждане става въпрос? Всеки път го изграждам в паметта.
Пробвах програмата на John с 256 (компютъра има 2 процессора * 64 ядра * 2 заради SMT) едновременни изпълнения да видя дали ще има някакво забавяне във времената. И да е имало, не беше забележимо.
Последно редактирано на 03.10.2020 от bvbfan, видяно: 1882 пъти.
Какъв е проблема с паметта? Трай за примерния dataset ima 12 милиона nodes и отнема около 512 MB памет. И за какво непрекъснато зареждане става въпрос? Всеки път го изграждам в паметта.
Всеки път се чете от файл и се зарежда в дърво, при всяко стартиране - това е проблем. Идеята на дб-тата е да се зарежда само нужната информация, евентуално да се кешира. При само 512MB наистина са малко и все още не е проблем. Като стане GiB зареждането ще усетиш и забавяне. Какъв е точно по вид е трая? Валидация правиш ли?
Какъв е проблема с паметта? Трай за примерния dataset ima 12 милиона nodes и отнема около 512 MB памет. И за какво непрекъснато зареждане става въпрос? Всеки път го изграждам в паметта.
Всеки път се чете от файл и се зарежда в дърво, при всяко стартиране - това е проблем. Идеята на дб-тата е да се зарежда само нужната информация, евентуално да се кешира. Какъв е точно по вид е трая?
ЦЯЛАТА информация е нужна в случая. Колко пъти още трябва да се повтори за да го схванеш?