« Отговор #8 -: Oct 17, 2009, 17:01 »
То ако само драйверите бяха проблема щеше да е прекрасно. Последната седмица-две съм се обсебил от идеята да си напиша GPU-базиран MD5 hash cracker за ATI карти под линукс (понеже всички достъпни варианти работят само под уиндоус и работят много бавно/въобще не работят с емулация/виртуализация).
Ориентирах се към Brook+, дръпнах си SDK-то, оттам се почнаха мъките. Разпространява се като RPM пакет, с клизми го подкарах под дебиан. Хедърите са *счупени*, наложи се една малка редакция, за да тръгнат собствените им examples. Brook+ диалекта е грозно орязан, както се очаква, но не всички ограничения са документирани. Отделно самият компилатор има бъгове, които не са описани и дават едни много нелогични проблеми. Много трудно се дебъгва, понеже StreamKernelAnalyzer-a им има само уиндоуска версия ию много пъти стрелям напосоки. Наложи се сам да си реализирам md5 алгоритъма, а не най-нагло да го открадна и пригодя, защото тъпия им компилатор не иска да се оправя като хората с макроси, а всички публични реализации са базирани на тази на Rivest и използват макроси вместо отделни функции, един вид оптимизация за скорост. Отделно дето ползват масиви, а декларацията на масиви в kernel функциите все още не се подържа от техния компилатор. Най-добрият източник на информация са developer форумите на AMD, въпреки че са се опитали да напишат един Stream SDK User Guide (който не е чак толкова кошмарно лошо четиво...но просто много неща не ги пише). И да, самата концепция така и не успях да я схвана от техните документи, за сметка на което много бързо ми се изясни като прегледах няколко статии в Уикипедия, колкото и смешно да звучи. Навсякъде където чета форуми свързани с проблемите в Brook, гледам хора, които обясняват колко по-лесно било с CUDA и нареждат ATI стабилно.
Въобще голяма забава. Чудно как успях да докарам нещата до сегашното им състояние (успявам да чупя хешове от низове до 7 символа в момента). Производителността е малко над 40 милиона хеша в секунда, което доколкото разбирам далеч не е върхово постижение за тази карта (Radeon HD 4670). Сигурно има доста неща да се оптимизират, обаче твърде вероятно fglrx драйверите са също виновни. Разликата между една малко по-стара версия на fglrx и най-новата от сайта е около 30%, в полза на по-стария драйвер. Защо - нямам идея. Въобще пълна кочина.
Това че AMD/ATI били linux-friendly е голяма лъжа. Ужасно съжалявам че не си купих nvidia карта навремето.
« Последна редакция: Oct 17, 2009, 17:12 от gat3way »

Активен
"Knowledge is power" - France is Bacon