|
27 октября 2011, 10:58:36 AM | # 1 |
Сообщений: 94
цитировать ответ |
Re: Как это делается GPU враждебность?
Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome" Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e подробнее... Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru Какой алгоритм должен быть, что ГПУ не может решить параллельно пути?
|
27 октября 2011, 11:05:20 AM | # 2 |
Сообщения: 1050
цитировать ответ |
Re: Как это делается GPU враждебность?
Получил 1806 Биткоинов
Реальная история. я думаю, что его память (кэш) интенсивный код, вместо вычисления интенсивного кода.
вы могли бы сделать это на GPU, но если память не достаточно быстро, или все необходимая память не может быть в кэше графических процессоров не ускорит его. |
27 октября 2011, 5:47:44 PM | # 3 |
Сообщения: 271
цитировать ответ |
Re: Как это делается GPU враждебность?
litecoin и tenebrix оба используют алгоритм Scrypt, что сторонке графического процессора.
|
27 октября 2011, 8:58:52 PM | # 4 |
Сообщения: 1218
цитировать ответ |
Re: Как это делается GPU враждебность?
GPU имеет очень мало сверхбыстрый кэш. Например AMD GPU только доля 8K кэша между целой Compute Unit (14 потоковых процессоров).
Любой алгоритм, который требует много случайных чтения больше, чем размер кэш-памяти процессоров потребуется процессор работать на холостом ходу в то время как данные переносятся из кэша L2 / L3 или оперативной памяти. Это карательным медленно. Процессор (GPU или CPU) будет просто сидеть их делать абсолютно ничего, пока он ждет. Scrypt является одним из примеров. Однако нет ничего магического об этом. Похоже, что это требует ~ 32KB функционировать оптимально. Вполне возможно, что некоторые будущие GPU будут иметь 32KB или больше кэша L1. В этот момент он произносил anhilate производительность текущих процессоров. Таким образом, вместо того, чтобы говорить GPU-враждебную было бы точнее сказать, большой кэш зависит. Если в будущем GPU имеют большой кэш не будет враждебным вообще. Аналогичным образом, если процессор имеет недостаточный кэш (как новый бульдозер довольно ужасен на хеширования основы Scrypt несмотря на не будучи GPU). |
28 октября 2011, 2:51:24 AM | # 5 |
Сообщения: 1428
цитировать ответ |
Re: Как это делается GPU враждебность?
Я не так много программиста ATI / OpenCL, но я сделал немного программирования CUDA (см мой CUDA фрактал зритель), И есть много сходства между тем, как эти чипы хранения и доступ к памяти.
Я не слишком хорошо знаком с кэшем L1-L3 на чипах - они, как правило, работают с каким-то глобальной памятью (числа, которое видит на коробке видеокарты), а затем в различных банках общей памяти и графических кэша. На большинстве аппаратных средств CUDA, есть 16-48kB совместно используемой памяти разделены между 256 потоков. Это быстро, как ад, но это не очень много памяти. Так как много программ потребуется больше общей памяти, чем, они должны использовать глобальную память в любом случае, и они до сих пор очень хорошо получать 5-100x ускорить над процессорами. С другой стороны, требующей GPU для хранения памяти в оперативной памяти, будет иметь катастрофические последствия. Он принимает как более 1000x время доступа к оперативной памяти, чем он делает свою собственную глобальную память (не цитируйте меня на это число). Поэтому для того, чтобы разоружить графические процессоры от их доминирования, я считаю, что вам действительно нужно, чтобы заставить их превысить их глобальную емкость памяти. Вот что вы найдете в высоком классе машине с хорошим процессором и твердым GPU (взять 6970 для точности) Процессор: 4 ядра, 8 Гб оперативной памяти (2 гигабайт/ Сердцевина) ГПУ: 1600 ядер, 2 Гб оперативной памяти (1-2 мегабайт/ Сердцевина) Проблема с хэширования является то, что она требует только пару кБ оперативной памяти, так что ничто не мешает ГПУ от удара полной занятости (максимум распараллеливания). Однако, если хеширование было заменено на операции, которая требуется 100 МБ ОЗУ для каждого потока, ГПУ будет только иметь возможность использовать 20/1600 ядра. Он никогда бы, вероятно, будет не лучше, чем процессор. Там же способы сделать это: вы можете заменить SHA256 (sha256 (а)) с того, чтобы последовательно окрошка строку 3000000 раз и сцепить все хэши в одну строку (требуется 100 МБ для хранения), а затем выполнить некоторые операции на этой строке что требует нити хранить все это в памяти сразу (хэширование может быть сделано в части, но есть и другие варианты, которые потребуют его). Каждый GPU поток должен был бы использовать глобальную память, и только 20 будет соответствовать. Вы можете также использовать ваш процессор (который, чьи четыре ядра, вероятно, быстрее, чем GPU, 20). 100 MB это хорошо, потому что много компьютеров может сэкономить 400 МБ оперативной памяти, не нанося вред компьютеру. |
28 октября 2011, 2:59:27 AM | # 6 |
Сообщения: 1218
цитировать ответ |
Re: Как это делается GPU враждебность?
Общая память слишком медленно, чтобы достичь пропускной способности, необходимой. Он не требует МБ памяти только КБ кэш-памяти ультра низкой латентности.
Scrypt является примером. Он будет работать нормально на процессоре только с парой МБ оперативной памяти, доступным, но умирает на GPU с 2, 4, 6 Гб оперативной памяти. Задержка в разделяемой памяти просто слишком медленно. Число выборок для одного хэша очень велико. Scrypt требует очень мало вычислений и много псевдопользователей случайных выборок. GPU не имеет кэша L2 / L3, но действительно есть крошечный (далеко мельче, чем CPU) сверхбыстрая кэш L1 разделяется между группой SP. Недостаточно, чтобы сохранить таблицы Scrypt поиска в кэше. Таким образом, сотни раз в хэш происходит промах кэша, ГПУ киосков, ожидающие данные, извлекаются из общей памяти. Центральный процессор может держать всю таблицу поиска в кэше и, следовательно, не встречает никаких существенных задержек в одной операции хэширования. GPU просто не имеет шансов. |
28 октября 2011, 3:08:35 AM | # 7 |
Сообщения: 1428
цитировать ответ |
Re: Как это делается GPU враждебность?
У меня трудное время, полагая, что ATI карты разные, как вы предлагаете. Графические процессоры NVIDIA имеют тенденцию делиться 16-48 кбайт совместно используемой памяти, и требуется 1-4 такты. Там нет ничего быстрее на GPU, чем общий мем, для пары регистров каждая нить имеет, кроме.
Тем не менее, вы делаете хороший пункт: очень случайный доступ к памяти изменяет эту историю совсем немного. Глобальная память работает 100-200x медленнее, чем общий MEM обычно не является проблемой, потому что вы не делаете это очень часто, и последовательные доступы вы можете получить 32x импульс. Однако, если вычисление требует, чтобы каждая нить постоянно / в случайном порядке доступа к глобальной памяти, он, вероятно, займет довольно удар в эффективности. |
28 октября 2011, 3:23:51 AM | # 8 |
Сообщения: 1218
цитировать ответ |
Re: Как это делается GPU враждебность?
У меня трудное время, полагая, что ATI карты разные, как вы предлагаете. Графические процессоры NVIDIA имеют тенденцию делиться 16-48 кбайт совместно используемой памяти, и требуется 1-4 такты. Там нет ничего быстрее на GPU, чем общий мем, для пары регистров каждая нить имеет, кроме. Хорошо, что это не совсем верно. Оба NVidia и AMD (не ATI) имеют кэш L1 внутри каждого "группа" СП. NVDIA называет это SM, AMD вычислительный Unit. Этот кэш обычно цикл задержка 1 часов и не разделяется с другими "группы" СП и очень быстро. Единственная проблема этого количество недостаточно, чтобы держать Scrypt справочных таблиц поэтому NVidia & карты AMD и то и другое сосать при наезде Scrypt на основе функции хеширования. http://www.microway.com/pdfs/GPGPU_Architecture_and_Performance_Comparison.pdf Однако карты NVIDIA Tesla имеют 32KB кэша L1 на SM (32 SP), которые могут быть "достаточно", Это делает их более похожими CPU в терминах L1 размер кэша. Он не может сделать Тесла Экономичное (учитывая их крайняя цена), но они, вероятно, достичь высокого уровня эффективности, чем другие GPU. котировка Тем не менее, вы делаете хороший пункт: очень случайный доступ к памяти изменяет эту историю совсем немного. Глобальная память работает 100-200x медленнее, чем общий MEM обычно не является проблемой, потому что вы не делаете это очень часто, и последовательные доступы вы можете получить 32x импульс. Однако, если вычисление требует, чтобы каждая нить постоянно / в случайном порядке доступа к глобальной памяти, он, вероятно, займет довольно удар в эффективности. В точку. ОБА NVidia и ATI GPU обладают достаточным кэшем L1 для загрузки всей таблицы поиска. Алгоритм Scrypt предназначен требовать значительного количества просмотров, модификации и пишет. Это означает, что почти постоянно ГПУ встречает промах кэша, останавливается и ждет до 4 тактов, чтобы вытащить его из общей памяти. В то время как 4 такта может показаться не много времени, помните, процессор ищет всю таблицу поиска непрерывно в кэше L1, и работает со скоростью до 4x быстрее. Алгоритм Scrypt вычислительно простой делая штраф за промах кэша очень высокой. По существу архитектура, которая не может обеспечить почти 100% попаданий в кэш проигрывает. |
28 октября 2011, 3:40:22 AM | # 9 |
Сообщения: 1582
цитировать ответ |
Re: Как это делается GPU враждебность?
я думаю, что его память (кэш) интенсивный код, вместо вычисления интенсивного кода. Для современных графических процессоров, код решения ресурсоемких тоже хорошо работает. Смесительные функции, такие как:вы могли бы сделать это на GPU, но если память не достаточно быстро, или все необходимая память не может быть в кэше графических процессоров не ускорит его. к ^ = (J&1)? м: н; м ^ = (J&2)? к? п; п ^ = (J&4)? м? К; |
29 октября 2011, 3:09:13 AM | # 10 |
Сообщения: 1428
цитировать ответ |
Re: Как это делается GPU враждебность?
я думаю, что его память (кэш) интенсивный код, вместо вычисления интенсивного кода. Для современных графических процессоров, код решения ресурсоемких тоже хорошо работает. Смесительные функции, такие как:вы могли бы сделать это на GPU, но если память не достаточно быстро, или все необходимая память не может быть в кэше графических процессоров не ускорит его. к ^ = (J&1)? м: н; м ^ = (J&2)? к? п; п ^ = (J&4)? м? К; Я не знаю, о ATI, но в CUDA вы хотите, чтобы избежать целочисленного деления и по модулю операции, как чума. CUDA поток может сделать, как 32 операций с плавающей запятой за такт, но это занимает несколько тактовых циклов, чтобы сделать одну операцию по модулю. Все, что на тяжелые операции модуля упругости, конечно, плохо работать. |