Como posso compilar o módulo OpenCL para o Pyrit?

4

Eu quero usar minha GPU com o Pyrit. Eu uso o Ubuntu 11.10, ATI Radeon HD 68xx e i7 2600K.

Etapa concluída:

  • Instale o driver ATI mais recente no site do fabricante
  • Instalar o AMD APP SDK

Quando executo o benchmark, recebo:

~$ pyrit benchmark
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+

Running benchmark (5037.4 PMKs/s)... - 

Computed 5037.45 PMKs/s total.
#1: 'CPU-Core (SSE2)': 667.8 PMKs/s (RTT 3.2)
#2: 'CPU-Core (SSE2)': 661.6 PMKs/s (RTT 3.2)
#3: 'CPU-Core (SSE2)': 664.0 PMKs/s (RTT 3.2)
#4: 'CPU-Core (SSE2)': 660.5 PMKs/s (RTT 3.2)
#5: 'CPU-Core (SSE2)': 669.7 PMKs/s (RTT 3.2)
#6: 'CPU-Core (SSE2)': 656.3 PMKs/s (RTT 3.2)
#7: 'CPU-Core (SSE2)': 667.4 PMKs/s (RTT 3.2)
#8: 'CPU-Core (SSE2)': 662.6 PMKs/s (RTT 3.1)
  • Como se certificar de que o AMD APP SDK está instalado corretamente?

  • Como configurar o Pyrit para usar o OpenCL e minha GPU?

EDITAR:

Pyrit desinstalado e reinstalado o AMD APP SDK. Ao tentar compilar o módulo de suporte OpenCL para Pyrit, recebo este erro:

$ sudo python setup.py build 
The headers required to build the OpenCL-kernel were not found. Trying to continue anyway...
svn: '.' is not a working copy
running build
running build_ext
Building modules...
building 'cpyrit._cpyrit_opencl' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c _cpyrit_opencl.c -o build/temp.linux-x86_64-2.7/_cpyrit_opencl.o -DVERSION="0.3.0"
_cpyrit_opencl.c:23:19: fatal error: CL/cl.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
    
por 01BTC10 04.02.2012 / 18:58

2 respostas

3

Esta é a maneira que eu finalmente fiz no Ubuntu Server 11.04

Instale um ambiente X11 mínimo:

aptitude install xserver-xorg xserver-xorg-core xserver-xorg-input-evdev xserver-xorg-video-ati lightdm unity-greeter openbox

Em seguida, edite /etc/lightdm/lightdm.conf e adicione o seguinte (substituindo YOUR_USER_NAME pelo usuário em que você executará o hashcat as):

[SeatDefaults]
greeter-session=unity-greeter
user-session=openbox
autologin-user=YOUR_USER_NAME
autologin-user-timeout=0

Em seguida, adicione seu nome de usuário ao grupo nopasswdlogin:

usermod -a -G nopasswdlogin $USERNAME

Obtenha dependências de construção para o Catalyst:

aptitude build-dep fglrx

Baixe e instale o Catalyst 12.8:

wget http://www2.ati.com/drivers/linux/amd-driver-installer-12-8-x86.x86_64.zip
unzip amd-driver-installer-12-8-x86.x86_64.zip
sh amd-driver-installer-8.982-x86.x86_64.run --uninstall=force
sh amd-driver-installer-8.982-x86.x86_64.run

Gere um novo xorg.conf:

rm -f /etc/X11/xorg.conf*
amdconfig --adapter=all --initial

Certifique-se de que DISPLAY env var esteja definido:

echo 'export DISPLAY=:0' >>~/.bashrc

Reinicie e você deve estar pronto.

    
por 01BTC10 07.04.2013 / 05:14
2

Eu nunca usei Pyrit ou tentei compilar, no entanto, parece que seu script de configuração (setup.py) não pode encontrar arquivos de cabeçalho OpenCL. Você deve procurar algo como caminhos que são necessários para configurar em tal script. Os cabeçalhos OpenCL para seu ATI VGA provavelmente serão instalados em algum subfoliante de uma instalação de driver.

EDITAR:

Aqui está uma parte deste script, que define o caminho OpenCL.h. Encontre este arquivo no seu PC e experimente um pouco, que é escolhido, e tente mudá-lo e ver se funciona.

OPENCL_INC_DIRS = []
OPENCL_LIB_DIRS = []
EXTRA_LINK_ARGS = []
LIBRARIES = ['crypto', 'z']
if sys.platform == 'darwin':
    # Use the built-in framework on MacOS
    EXTRA_LINK_ARGS.extend(('-framework', 'OpenCL'))
    OPENCL_INC_DIRS.append('/System/Library/Frameworks/OpenCL.framework/Headers')
else:
    LIBRARIES.append('OpenCL')
    try:
        if os.path.exists(os.environ['ATISTREAMSDKROOT']):
            OPENCL_INC_DIRS.append(os.path.join(os.environ['ATISTREAMSDKROOT'], 'include'))
            for path in ('lib/x86_64','lib/x86'):
                if os.path.exists(os.path.join(os.environ['ATISTREAMSDKROOT'], path)):
                    OPENCL_LIB_DIRS.append(os.path.join(os.environ['ATISTREAMSDKROOT'], path))
                    break
    except:
        pass
    for path in ('/usr/local/opencl/OpenCL/common/inc', \
                '/opt/opencl/OpenCL/common/inc', \
                '/usr/local/opencl/include', \
                '/usr/local/cuda/include'):
        if os.path.exists(path):
            OPENCL_INC_DIRS.append(path)
            break
    else:
        print >>sys.stderr, "The headers required to build the OpenCL-kernel " \
                            "were not found. Trying to continue anyway..."

# Get exact version-string from svn
try:
    svn_info = subprocess.Popen(('svn', 'info'), \
                                stdout=subprocess.PIPE).stdout.read()
    VERSION += ' (svn r%i)' % \
                int(re.compile('Revision: ([0-9]*)').findall(svn_info)[0])
except:
    pass
    
por Misery 06.04.2013 / 20:31

Tags