Важно (2012-01-13): FASTLOOP = False параметр больше не нужен, потому что FASTLOOP по умолчанию ложь в этой версии. Обновить: FASTLOOP = Истинные работает сейчас, я загрузил исправленную версию!
Важный: С OpenCL SDK / время выполнения версии 2,6 AMD обновила свой OpenCL компилятор, так что некоторые старые ядра и оптимизации в них, кажется, больше не работают или больше не нужны. Для того, чтобы отразить это изменение, которое я должен был изменить раздел производительности ядра этого потока.
Важный: Начиная с версии 2011-08-27 Вам не нужно больше поставить переключатель BFI_INT. Если HW поддерживает его, он автоматически включается. Для того, чтобы отключить его использовать BFI_INT = ложь.
Важный: Начиная с версии 2011-08-04 (пре-релиз) вы должны использовать переключатель VECTORS2 вместо векторов. Я сделал это изменение, чтобы быть ясно, что векторы используются в ядре (2- или 4-компонента). Для использования 4-компонентные векторы использовать переключатель VECTORS4.
Важный: Начиная с версии 2011-07-17 модифицированная версия __init__.py (для шахтера Phoenix) входит в комплект поставки и должен быть использован! Ядро не будет работать для других горнопромышленников без изменений к ним, см kernel.cl для дальнейших Infos.
Это предпочтительный переключатель для Phoenix с phatk_dia для того, чтобы достичь сопоставимой производительности:
Код:
-к phatk АГРЕССИЯ = 12 VECTORS2 WORKSIZE = 128
Скачать версию 2012-01-13: http://www.mediafire.com/?xzk6b1yvb24r4dg
Скачать версию 2011-12-21: http://www.mediafire.com/?r3n2m5s2y2b32d9
Скачать версию 2011-08-27: http://www.mediafire.com/?697r8t2pdk419ji
Скачать версию 2011-08-11: http://www.mediafire.com/?s5c7h4r91r4ad4j
Скачать версию 2011-08-04 (предварительная версия): http://www.mediafire.com/?upwwud7kfyx7788
Скачать версию 2011-07-17: http://www.mediafire.com/?4zxdd5557243has
Скачать версию 2011-07-11: http://www.mediafire.com/?k404b6lqn8vu6z6
Скачать версию 2011-07-07: http://www.mediafire.com/?o7jfp60s7xefrg4
Скачать версию 2011-07-06: http://www.mediafire.com/?f8b8q3w5u5p0ln0
Скачать версию 2011-07-03: http://www.mediafire.com/?xlkcc08jvp5a43v
Скачать версию 2011-07-01: http://www.mediafire.com/?5jmt7t0e83k3eox
Ядро производительности (BFI_INT / VECTORS2 / WORKSIZE = 128 / SDK 2.6 / APP KernelAnalyzer 1.11 - 11.12 Cal, профиль):
HD5870
2011-08-20: 22 GPR / 1427 ALU OPs / 66 CF вуп
2011-08-27: 22 GPR / 1426 ALU OPS / 66 CF вуп
2011-12-21: 20 GPR / 1400 ALU OPS / 66 CF вуп
2012-01-13: 21 ППГ / 1394 ALU OPs / 67 CF OPs
HD6970
2011-08-20: 21 ППГ / 1687 ALU OPs / 66 CF вуп
2011-08-27: 23 GPR / 1688 ALU OPs / 68 CF вуп
2011-12-21: 21 ППГ / 1687 ALU OPs / 66 CF вуп
2012-01-13: 20 GPR / 1687 ALU OPs / 66 CF вуп
Ядро производительности (BFI_INT / VECTORS2 / SDK 2.5 / APP KernelAnalyzer 1.9 - 11.7 Cal профиль):
HD5870
оригинальный phatk 1.X: 1393 ALU OPs
2011-07-01: 1389 ALU OPs
2011-07-03: 1385 ALU OPs
2011-07-06: 1380 ALU OPs
2011-07-07: 1380 ALU OPs
2011-07-11: 1378 ALU OPs
2011-07-17: 1376 ALU OPs
2011-08-04 (пре-релиз): 1368 ALU вуп
2011-08-11: 1364 ALU OPs
2011-08-27: 1363 ALU OPS (30 меньше по сравнению с оригинальным phatk 1.X)
HD6970
оригинальный phatk 1.X: 1707 ALU OPs
2011-07-01: 1710 ALU OPs
2011-07-03: 1706 ALU OPs
2011-07-06: 1702 ALU OPs
2011-07-07: 1702 ALU OPs
2011-07-11: 1701 ALU OPs
2011-07-17: 1699 ALU OPs
2011-08-04 (пре-релиз): 1689 ALU вуп
2011-08-11: 1687 ALU OPs
2011-08-27: 1687 ALU OPS (20 меньше по сравнению с оригинальным phatk 1.X)
Список изменений:
2012-01-13
Ядро:
- Изменено: Отказ от ответственности теперь такой же, как в оригинальной упаковке Phoenix
- удалены: все (U) перед преобразованием типов скаляров, где векторы и скаляры были использованы вместе, потому что по определению OpenCL это не требуется
- Удалены: все () скобки п в #define части ядра
- удалены: S0 (), который теперь снова слились в s0 ()
- удалены: скобки вокруг команды в T1w (), t1 (), t2 () и W () были удалены, чтобы позволить компилятор, чтобы изменить порядок их
- добавлено: Вт функция () пропустили; на это конец
- добавил: инициализации переменной B1addK6 используется в 6-м раунде, чтобы сохранить надстройку -> THX для DiabloD3
- добавлено: а (UINT) приведение типа перед get_local_id () и get_group_id () вызывает, поскольку возвращаемое значение может быть 64 бита в длину, который не хотел
- изменения: заменить все ма () + s0 () или (s0) + ма () вызывает с t2 ()
- модифицирована: круглый 6 теперь использует новый новый B1addK6 переменного
- изменение: переупорядочивается Вт [] для расчета раундов 32, 91 и 92
- Модифицированные: патроны 121, 122 и 123, чтобы вычислить не Vals [4], Vals [5] и Валс [6], потому что они не нужны для окончательного расчета Vals [7] -> THX для jhajduk
- модифицирована: удален + Н [7] из круглого 124 и использовать -0xec9fcd13 для проверки действительных одноразовых номеров
- добавлено: result_r124 переменная принять результат последнего раунда 124, это экономит несколько АЛУ ФОС на графических процессорах VLIW5
Python Init:
- Отредактировал замененные пространства с вкладки в форматированию исходного кода (я действительно не нравится эта часть в Python ^^)
- модифицируется: несколько комментариев и команды были переформатировать для лучшей читаемости или быть лучше понятно
- Изменено: параметр FASTLOOP теперь по умолчанию False, то это означает, что вам не нужно, чтобы поставить FASTLOOP = False больше
- удалено: OUTPUT_SIZE не используется больше, так что все ссылки на него были удалены
- изменение: изменилось ПЕРЕСМОТР до 122
- Отредактировал переместили проверки WORKSIZE ниже той части, где чек, если и какие векторы должны быть использованы выполняется
это учитывает, что глобальный worksize передается ядру зависит от использования вектора и vectorsize
(В настоящее время использование FASTLOOP может нарушить это, из-за "динамический" число итераций)
- добавлено: некоторая отладочная информация о worksize и pyOpenCL отображаются в начале
- добавлено: В1 + К [6] передается в качестве нового параметра ядра
- модифицировано: сделано enqueue_read_buffer () / enqueue_write_buffer () блокирование и удаляет покрытие () после чтения, в соответствии с рекомендациями AMDS
чтобы свести к минимуму накладных расходов API
2011-08-27:
Ядро:
- добавлено: код путь для 3-компонентных векторов, активированных с помощью VECTORS3 (в настоящее время не использовать, из-за ошибки в драйверах AMD до Cat 11.8)
- удалены: BITALIGN вариант из ядра, BFI_INT теперь используется автоматически, если HW поддерживает его (отключить через BFI_INT = ложь)
- изменение: функция не BFI_INT Ч. (), которая была нарушена в 2011-08-11 -> THX Винсу
- Изменено: выход ядра буфер теперь ULONG массив, а не массив UINT
- удалены: OUTPUT_SIZE аргумент не передается и используется в ядре больше
- изменение: WORKSIZEx4, WORKSIZEx3 и WORKSIZEx2 аргументы были объединены в WORKSIZExVECSIZE
- изменения: удалены, заказаны и добавил некоторые скобки и типа литье материала в ядре
- изменения: восстановить порядок команд для круглых 108 - 123, чтобы освободить GPR
- изменения: добавили H [7] в круглые 124 расчета
- изменено: изменено проверка для положительных временных значений еще раз, чтобы покрыть H [7] изменение
- модифицирована: запись временных значений для вывода теперь использует 1 запись для vec2 и макс. 2 пишет для vec4, потому что 2x uints теперь кодируются в 1x ULONG
Python Init:
- добавлено: Код для 3-компонентных векторов, активированных с помощью VECTORS3 (в настоящее время не использовать, из-за ошибки в драйверах AMD до Cat 11.8)
- удалены: BITALIGN вариант из инициализации Python, BFI_INT теперь используется автоматически, если HW поддерживает его (отключить через BFI_INT = ложь)
- добавлено: определение максимальной поддерживаемой WORKSIZE на устройство, которое используется, если нет WORKSIZE не подается, если они предоставлены WORKSIZE > Максимум. поддерживается WORKSIZE
или если WORKSIZE не является степенью 2
- добавлено: код для декодирования ULong из выходного буфера в 2 раза UINT и обрабатывать результаты
- Модифицированные: комментарии, код верстка и разрывы строк для лучшей читаемости
- изменение: размер выходного буфера в настоящее время WORKSIZE -> THX для Phaetus
2011-08-11:
- Отредактировал вернулся бывший изменения в функции Ма (), чтобы сохранить ALU OP для 69XX карт
- добавлено: S0 () и функции S1 (), который представляет собой компилятор помощь -> THX Phateus
- изменения: несколько скобок и расположение всех вспомогательных функций для лучшей читаемости и совместимости
- добавлено: функция t2 (), которое (s0 (п) + мо (п)) и сохраняет несколько GPRS -> THX Phateus и сам (было это в начале, но удалить его когда-нибудь ^^)
- изменение: изменено расположение определения ядра для лучшей читаемости
- изменения: все значения, которые, например, имели 10U теперь есть 10U (в верхнем регистре), чтобы быть последовательным во всем ядре
- модифицированный модифицированный круглый расчета 94 Вт для повышения производительности
- модифицирована: круглый 108 - 123 теперь состоит из 2 W () блоки, а затем 2 sharoundW () блоки, чтобы сохранить GPR
- Отредактировал изменили проверки для положительных временных значений снова никогда не создает недопустимую долю и меньшую ALU использование OP
2011-08-04 (пре-релиз):
- добавлено: пользователь Vince в оговорке -> THX Vince 🙂
- добавил: Ядро теперь может работать с 4-компонентных векторов (переключатель VECTORS4) -> THX для Phateus
- изменения: использовать 2-компонентные векторы I переименовал переключатель ВЕКТОРЫ в VECTORS2
- добавлено: __attribute __ ((reqd_work_group_size (WORKSIZE, 1, 1))) -> THX для Phateus
- добавлено: постоянные PreW31 и PreW32, которые хранят P2 () + P4 () для круглых 31 и 32 -> THX для Phateus
- переименованы - модифицированный: W17_2 теперь PreW19, W2, теперь PreW18, PreVal4addT1 теперь PreVal4 (= PreVal4 + Т1), state0subT1 теперь PreVal0 (= Preval4 + state0)
- модифицирована: база теперь объявлена как у сохранить addidion из uint2 (0, 1) или uint4 (0, 1, 2, 3) для W_3 инициализации -> THX для Phateus
- модифицировано: расчет нонса теперь использует локальную Work-Item ID, идентификатор группы и WORKSIZE вместо только глобального работу-Item ID -> THX для Phateus
- добавлено: сохранено умножение пропускания WORKSIZEx2 и WORKSIZEx4 константы ядра
- изменение: Расчет для W [18 - O] был оптимизирован таким образом, что Р2 (18) вычисляются только для й компонента (если используются векторы), потому что х и у отличаются только
в младший бит, а затем бит 14 и 25 вращаются для W [18 - O] .y -> THX для Phateus
- изменение: сохранено дополнение для Vals [0] инициализации из-за изменений в PreVal0
- изменение: переупорядочиваются код раунда 4 - 95, чтобы оптимизировать для менее ФОС ALU, используемого -> THX Phateus и сам ^^
- изменения: упорядочение переменных в дополнениях к раунду 124 было изменено для оптимизации менее ФОС ALU, используемого
- Отредактировал переписал часть, где проверяются одноразовые, если они положительны и где они записываются в выходной буфер
(Экономия 2 глобальных операции записи в рабочем элемент-и сохраняет дополнительный ФОС ALU)
- изменения: измененные переменные W_3, P2_18_x, P2_18 и одноразовое значение в константу
- изменения: изменен код верстку для патронов 4 - 124 лучше читаемости
- удалены: некоторые комментарии к Ыборке коды
2011-07-17:
- добавлено: смещение для W [] массива, чтобы уменьшить его размер -> THX для пользователя Vince
- изменение: функция t1 () переименована в T1w () / функции sharound () переименован в sharoundW ()
- добавлено: функция t1 () и sharound (), которые используются, где W [] добавление может быть опущены, так как W [] == 0
Я предполагаю, что компилятор уже делает эту оптимизацию, но не больно) -> THX для пользователя Vince
- изменение: Р1 () - Р4 () и W () для мужского использования смещения
- изменение: довольно много параметров ядра имеют новые значения или были добавлены (смешанные идеи от пользователя Vince собственных из них)
C1addK5: C1addK5 = С1 + К [5]: C1addK5 = С1 + 0x59f111f1
D1: D1 = D1 + К [4] + W [4]: D1 = D1 + 0xe9b5dba5 + 0x80000000U
W2: W2 + Н16 в Р1 (): W2 = Р1 (18) + P4 (18)
W17_2: 0x80000000U в Р2 () = 0x11002000 + W17 в Р1 (): W17_2 = Р1 (19) + Р2 (19)
PreValaddT1: PreValaddT1 = PreVal4 + Т1
T1substate0: T1substate0 = T1substate0
- добавлено: Переменная W_3, в котором хранится первым formely значения, удерживаемый в W [3]
- добавлено: переменная Temp используется для ускорения вычисления для раундов 4 и 5
- изменения: изменен раунд 3 так, что он более эффективен (использует: Vals [0] и Валс [4])
- изменение: W [0] - W [14] В настоящее время вида жестко закодированы или опущен, где они были 0
- модифицирована: оптимизирован Р1 (18) + Р2 (18) + P4 (18)
- модифицирована: оптимизирован Р1 (19) + Р2 (19) + P4 (19)
- модифицирована: оптимизирован раунд 4 + 5
- Модифицированные: раунды 6 - 14 и 73 - 78 теперь используют новый sharound () без W [] дополнения
- изменение: смещение, добавленное для всех частей, где используется для W []
- изменение: W_3 используются в качестве результата вместо W [3] (Вт [3] по-прежнему используются для генерации случайного possition в выходном буфере) -> THX для пользователя Vince
2011-07-11:
- изменение: постоянная Н [7] имеет новое значение (сохраняет сложение в круглых 124)
- изменения: функция не BFI_INT Ch () теперь использует OpenCL встроенный bitselect
- изменение: переупорядочивается Вт [] расчеты для круглых 18 - 30, 87 и 94
- Изменено: заказана расчет для 5-го тура
- изменение: W [] для расчета круглых 80 - 86 в настоящее время является блок перед тем sharound () называется
- удалено: К [60] из круглых 124 (из-за новым H [7] значение)
2011-07-07:
- удалено: некоторые большие комментарии в источнике были удалены
- модифицирована: функция Ma () теперь уникальный в ядре, независимо от того, если BFI_INT используется или нет -> THX для пользователя: 1MLyg5WVFSMifFjkrZiyGW2nw
- добавлено: функция Ch (), которая использует OpenCL bitselect () команды (но не активна, так что вы можете попробовать его) -> THX для пользователя: 1MLyg5WVFSMifFjkrZiyGW2nw
- модифицирована: и W [128] заменяется на U W [124], поскольку не используются более чем 124 значений
- изменение: инициализация для Vals [0], Vals [3], Vals [4] и Vals [7] В настоящее время обрабатываются в других местах, чтобы сохранить некоторые ненужные операции записи в этих переменных
- исправлено: некоторые шестнадцатеричные значения, которые были использованы в векторных добавлениях теперь правильно типа-литых, который, надеюсь, восстанавливает AMD APP SDK 2.1 совместимости
- Модифицированные: раунды 3, 4 и 5 были изменены для повышения производительности (думает, это может быть настроено, если у меня есть рабочий KernelAnalyzer)
2011-07-06:
- изменение: H [] константы были заказаны (-не использовался из-за более ранние модификации)
- добавлено: добавлена ULONG константа L (это значение не укладывается в UINT)
- модифицирована: новый Ма () для не BFI_INT способных карт, должен быть быстрее -> THX для пользователя: 1MLyg5WVFSMifFjkrZiyGW2nw
- удалены: T1w ()
- изменения: t1 () заказаны вызовы функций для повышения производительности
- изменение: W () заказаны вызовы функций для повышения производительности
- изменение: sharound () удаляются записи в t1, теперь t1 () вызывается дважды, что делает эту функцию БЫСТРЕЕ (OpenCL оптимизации компилятора)
- удалены: sharound2 () (при необходимости W () + sharound () используется вместо этого)
- удалено: partround () не требуется, поскольку другое решение для 3 раунда и 124
- удалены: t1 и T1w variabled
- Модифицированные: патроны 3, 19, 30, 81, 87, 94 и 124 были изменены для повышения производительности
2011-07-03:
- удалены: t2 (), ш (п), г0 (х), R 1 (х), R 0 (п) и R1 (п)
- переименованы - модифицированный: Р (х) Ш (х) плюс теперь использует P1, P2, P3 и P4 напрямую
- изменение: Р1 (х) и Р2 (х), чтобы не использовать R1 (х - 2), R 0 (х - 15), но сделать это напрямую
- отредактировано ША раундов 31, 32, 47 - 61, 86, 87, 114 - 119 теперь используют sharound2 () вместо W (+) sharound ()
- Изменено: заказана код SHA раунды 66 - 94 -> не видел снижение производительности -> лучше читаемость
- отредактировано ША раунды 18, 19, 20, 80, 93, 94 теперь используют более простой расчет из удаленных нулевого addions
--> 1x Р1 (х), 2x Р2 (х), 4x Р3 (х) и 2x Р4 (х) были удалены, которые должны дать немного Mhash / сек импульс
- изменение: sharound (), так что двойное исполнение t1 () можно избежать -> THX для пользователя: 1MLyg5WVFSMifFjkrZiyGW2nw
- добавлено: "у T1w" Переменная, которая используется в sharound2 (), чтобы избежать двойного исполнения T1w ()
2011-07-01:
Код:
Валс [7] = 0xb0edbdd0 + К [0] + W [64] + 0x08909ae5U; -> Валс [7] = 0xfc08884d + W [64];
Валс [3] = 0xa54ff53a + 0xb0edbdd0 + К [0] + W [64]; -> Валс [3] = 0x198c7e2a2 + W [64];
- удалена Валс [3] = 0xa54ff53a + 0xb0edbdd0 + К [0] + W [64]; -> Валс [3] = 0x198c7e2a2 + W [64];
Код:
Валс [7] + = Н [7]
добавление и заменить окончательную если-заявление в ядре- переупорядочиваются некоторые W [п] = операторы, чтобы удалить некоторые ненужные дополнения
- заменены все дополнения, как 64 + 5 с соответствующим целым значением (думаю, это было там для удобства понимания, поэтому здесь еще хуже: D)
- удалены некоторые ненужные скобки
- переформатирован для лучшей читаемости
Если это работает, пожалуйста, напишите здесь и рассмотреть небольшое пожертвование @ 1PwnvixzVAKnAqp8LCV8iuv7ohzX2pbn5x :).
Благодаря,
диаметр