Так что если у вас есть 58xx серии карта (может быть больше) и модернизировал свои каталитические драйверы к последним, вы, возможно, заметили, что вы не получаете ничего, кроме этого:
котировка
GPU0: недопустимое одноразовое значение - ошибка HW
Конечно, это не хорошо! Вы не будете отправлять любые блоки, которые считаются недействительными и не способствуют ничего к тому, что бассейн вы можете быть!
Причина этого, кажется, что amd_bytealign не будет либо работать по-другому или больше не может использоваться в драйверах 13.4 (и, вероятно, несколько до него). что phatk ядро, которое cgminer и bfgminer использование было модернизировано, чтобы использовать эту оптимизацию, однако с новыми драйверами "bitselect" автоматически оптимизированы для BFI INT без нас, чтобы сделать это!
Так, как это исправить? просто!
1. Для начала, перейдите в папку шахтерской и найдите файл, который начинается с "phatk" и заканчивается ".cl", это код OpenCL, который составляет ядро, но, как это сценарий может быть открыт в любом средстве просмотра текстовых документов (я очень рекомендую Notepad ++!)
2. Внутри этого файла может быть немного сложным, но не волнуйтесь, это всего лишь несколько небольших изменений необходимы! Вы заметите вокруг линии 61 (в зависимости от версии минера) вы увидите следующее (или очень похожие):
Код:
#ifdef BITALIGN
#pragma OpenCL РАСШИРЕНИЕ cl_amd_media_ops: включить
#define гнили (х, у) amd_bitalign (х, х, (UINT) (32 - у))
// Эта часть не из ядра акции poclbm. Это часть оптимизации
// добавлены в Phoenix Miner.
// Некоторые устройства AMD имеют Vals [0] BFI_INT опкод, который ведет себя в точности как
// функция SHA-256 Ch, но и обеспечивает ее ровно в одной инструкции. Если
// обнаружен, использовать его для Ch. В противном случае, построить Ch из простых логических
// примитивы.
#ifdef BFI_INT
// Ну, небольшая проблема ... Оказывается BFI_INT не на самом деле подвергаются
// OpenCL (или CAL IL по этому вопросу) в любом случае. Тем не менее, есть
// подобная инструкция, BYTE_ALIGN_INT, которая подвергается OpenCL с помощью
// amd_bytealign, принимает те же входы и дает тот же результат.
// Мы можем использовать это в качестве заполнителя для BFI_INT и иметь приложение
// пропатчить его после компиляции.
// Это функция BFI_INT
#define Ч. (х, у, г) amd_bytealign (х, у, г)
// Ма также может быть реализован в терминах BFI_INT ...
#define Ма (г, х, у) amd_bytealign (г ^ х, у, х)
#else // BFI_INT
// В дальнейшем SDKs оптимизировать это BFI INT без заплат и GCN
// на самом деле не выполняется, если вручную пропатчить BFI_INT
#define Ч. (х, у, г) bitselect ((и) г, (и) у, (и) х)
#define Ма (х, у, г) bitselect ((и) х, (и) у, (и) г ^ (и) х)
#define ROTR (х, у) amd_bitalign ((и) х, (и) х, (и) у)
#endif
#else // BITALIGN
#define Ch (х, у, г) (г ^ (х & (У ^ г)))
#define Ма (х, у, г) ((х & г) | (у & (Х | г)))
#define гнили (х, у) вращаются ((и) х, (и) у)
#define ROTR (х, у) вращаются ((и) х, (и) (32-й))
#endif
#pragma OpenCL РАСШИРЕНИЕ cl_amd_media_ops: включить
#define гнили (х, у) amd_bitalign (х, х, (UINT) (32 - у))
// Эта часть не из ядра акции poclbm. Это часть оптимизации
// добавлены в Phoenix Miner.
// Некоторые устройства AMD имеют Vals [0] BFI_INT опкод, который ведет себя в точности как
// функция SHA-256 Ch, но и обеспечивает ее ровно в одной инструкции. Если
// обнаружен, использовать его для Ch. В противном случае, построить Ch из простых логических
// примитивы.
#ifdef BFI_INT
// Ну, небольшая проблема ... Оказывается BFI_INT не на самом деле подвергаются
// OpenCL (или CAL IL по этому вопросу) в любом случае. Тем не менее, есть
// подобная инструкция, BYTE_ALIGN_INT, которая подвергается OpenCL с помощью
// amd_bytealign, принимает те же входы и дает тот же результат.
// Мы можем использовать это в качестве заполнителя для BFI_INT и иметь приложение
// пропатчить его после компиляции.
// Это функция BFI_INT
#define Ч. (х, у, г) amd_bytealign (х, у, г)
// Ма также может быть реализован в терминах BFI_INT ...
#define Ма (г, х, у) amd_bytealign (г ^ х, у, х)
#else // BFI_INT
// В дальнейшем SDKs оптимизировать это BFI INT без заплат и GCN
// на самом деле не выполняется, если вручную пропатчить BFI_INT
#define Ч. (х, у, г) bitselect ((и) г, (и) у, (и) х)
#define Ма (х, у, г) bitselect ((и) х, (и) у, (и) г ^ (и) х)
#define ROTR (х, у) amd_bitalign ((и) х, (и) х, (и) у)
#endif
#else // BITALIGN
#define Ch (х, у, г) (г ^ (х & (У ^ г)))
#define Ма (х, у, г) ((х & г) | (у & (Х | г)))
#define гнили (х, у) вращаются ((и) х, (и) у)
#define ROTR (х, у) вращаются ((и) х, (и) (32-й))
#endif
Некоторые из этого блока является проблематичным кодом для 13,4 катализаторов, и, таким образом, мы должны изменить это!
3. Удалите вышеупомянутый блок кода (Aprrox линии 49 до 86 включительно), и заменить его следующим:
Код:
#ifdef BITALIGN
#pragma OpenCL РАСШИРЕНИЕ cl_amd_media_ops: включить
#define гнили (х, у) amd_bitalign (х, х, (UINT) (32 - у))
// Эта часть не из ядра акции poclbm. Это часть оптимизации
// добавлены в Phoenix Miner.
// Некоторые устройства AMD имеют Vals [0] BFI_INT опкод, который ведет себя в точности как
// функция SHA-256 Ch, но и обеспечивает ее ровно в одной инструкции. Если
// обнаружен, использовать его для Ch. В противном случае, построить Ch из простых логических
// примитивы.
// У нас есть SDK, который автоматически оптимизирует для BFI INT, так что позволяет сделать это
#define Ч. (х, у, г) bitselect (х, у, х)
#define Ма (х, у, г) bitselect ((и) х, (и) у, (и) г ^ (и) х)
#define ROTR (х, у) amd_bitalign ((и) х, (и) х, (и) у)
#else // BITALIGN
#define Ch (х, у, г) (г ^ (х & (У ^ г)))
#define Ма (х, у, г) ((х & г) | (у & (Х | г)))
#define гнили (х, у) вращаются ((и) х, (и) у)
#define ROTR (х, у) вращаются ((и) х, (и) (32-й))
#endif
#pragma OpenCL РАСШИРЕНИЕ cl_amd_media_ops: включить
#define гнили (х, у) amd_bitalign (х, х, (UINT) (32 - у))
// Эта часть не из ядра акции poclbm. Это часть оптимизации
// добавлены в Phoenix Miner.
// Некоторые устройства AMD имеют Vals [0] BFI_INT опкод, который ведет себя в точности как
// функция SHA-256 Ch, но и обеспечивает ее ровно в одной инструкции. Если
// обнаружен, использовать его для Ch. В противном случае, построить Ch из простых логических
// примитивы.
// У нас есть SDK, который автоматически оптимизирует для BFI INT, так что позволяет сделать это
#define Ч. (х, у, г) bitselect (х, у, х)
#define Ма (х, у, г) bitselect ((и) х, (и) у, (и) г ^ (и) х)
#define ROTR (х, у) amd_bitalign ((и) х, (и) х, (и) у)
#else // BITALIGN
#define Ch (х, у, г) (г ^ (х & (У ^ г)))
#define Ма (х, у, г) ((х & г) | (у & (Х | г)))
#define гнили (х, у) вращаются ((и) х, (и) у)
#define ROTR (х, у) вращаются ((и) х, (и) (32-й))
#endif
Это позволяет избежать любой логики, которая должна вызвать у вас проблемы.
4. если ваш шахтер работает, выключите его. если у вас есть какие-либо оставшиеся файлы, начиная с "phatk" и заканчивая ".bin", Это, вероятно, лучше всего удалить их.
5. Запустите вашу шахтера. он теперь должен начать принимать блоки!
Надеюсь, что это помогает. Обратите внимание, что это изменяется из следующего поста в отношении аналогичной проблемы на poclbm: .
Счастливая добыча!