m0mchil / poclbm

PyOpenCL bitcoin miner
Other
681 stars 387 forks source link

'binaries' was not found as a program info attribute or as a kernel name #40

Open fbettag opened 13 years ago

fbettag commented 13 years ago

$ ./poclbm.py http://user:pass@pit.deepbit.net:8332 26/07/2011 19:51:20, Setting server (user @ pit.deepbit.net:8332) Exception in thread Thread-1: Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 530, in *bootstrap_inner self.run() File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 483, in run self.__target(_self.__args, _self.__kwargs) File "/Volumes/Daten/Downloads/poclbm/BitcoinMiner.py", line 63, in mining_thread self.load_kernel() File "/Volumes/Daten/Downloads/poclbm/BitcoinMiner.py", line 179, in load_kernel binaryW.write(self.miner.binaries[0]) File "/Library/Python/2.7/site-packages/pyopencl-2011.1.2-py2.7-macosx-10.7-intel.egg/pyopencl/__init.py", line 419, in getattr** "info attribute or as a kernel name" % attr) AttributeError: 'binaries' was not found as a program info attribute or as a kernel name

pit.deepbit.net:8332 26/07/2011 19:51:21, LP connected to pit.deepbit.net:8332

on osx as well as linux..

dragos240 commented 13 years ago

A very similar error here as well on a new computer with gentoo linux and a 9500gt. 25/08/2011 22:42:46, Setting server (dragos240_1 @ uscentral.btcguild.com:8332) Exception in thread Thread-1: Traceback (most recent call last): File "/usr/lib64/python2.7/threading.py", line 530, in *bootstrap_inner self.run() File "/usr/lib64/python2.7/threading.py", line 483, in run self.__target(_self.__args, _self.__kwargs) File "/home/harley/poclbm/BitcoinMiner.py", line 63, in mining_thread self.load_kernel() File "/home/harley/poclbm/BitcoinMiner.py", line 179, in load_kernel binaryW.write(self.miner.binaries[0]) File "/usr/lib64/python2.7/site-packages/pyopencl/__init.py", line 448, in getattr** "info attribute or as a kernel name" % attr) AttributeError: 'binaries' was not found as a program info attribute or as a kernel name

uscentral.btcguild.com:8332 25/08/2011 22:42:47, LP connected to uscentral.btcguild.com:8332

tydel commented 13 years ago

Same here, using an Amazon EC2 GPU Cluster instance (Tesla M2050):

python poclbm.py -v -w 256 --device 0 http://tydel@tydel.com_0:XXXXXX@deepbit.net:8332

10/09/2011 14:17:56, Setting server (tydel@tydel.com_0 @ deepbit.net:8332) deepbit.net:8332 10/09/2011 14:17:58, LP connected to deepbit.net:8332 /usr/lib64/python2.6/site-packages/pyopencl-2011.1.2-py2.6-linux-x86_64.egg/pyopencl/init.py:155: UserWarning: Build succeeded, but resulted in non-empty logs: Build on <pyopencl.Device 'Tesla M2050' on 'NVIDIA CUDA' at 0x258fac0> succeeded, but said:

: Considering profile 'compute_20' for gpu='sm_20' in 'cuModuleLoadDataEx_4' : Retrieving binary for 'cuModuleLoadDataEx_4', for gpu='sm_20', usage mode=' ' : Considering profile 'compute_20' for gpu='sm_20' in 'cuModuleLoadDataEx_4' : Control flags for 'cuModuleLoadDataEx_4' disable search path : Ptx binary found for 'cuModuleLoadDataEx_4', architecture='compute_20' : Ptx compilation for 'cuModuleLoadDataEx_4', for gpu='sm_20', ocg options=' ' warn("Build succeeded, but resulted in non-empty logs:\n"+message) Exception in thread Thread-1: Traceback (most recent call last): File "/usr/lib64/python2.6/threading.py", line 532, in *bootstrap_inner self.run() File "/usr/lib64/python2.6/threading.py", line 484, in run self.__target(_self.__args, _self.kwargs) File "/home/ec2-user/poclbm/BitcoinMiner.py", line 63, in mining_thread self.load_kernel() File "/home/ec2-user/poclbm/BitcoinMiner.py", line 179, in load_kernel binaryW.write(self.miner.binaries[0]) File "/usr/lib64/python2.6/site-packages/pyopencl-2011.1.2-py2.6-linux-x86_64.egg/pyopencl/init.py", line 456, in getattr** "info attribute or as a kernel name" % attr) AttributeError: 'binaries' was not found as a program info attribute or as a kernel name

Any ideas?

theappleman commented 13 years ago

I came across this issue and decided to take a look at it.

The main problem above is pyOpenCL not exporting the info class variables; see here and here.

Changing line 179 in BitcoinMiner.py to:

``` binaryW.write(self.miner.get_info(cl.program_info.BINARIES)[0] should fix the issue.

However, while that is easily remedied, it exposes bigger problems. These problems may be inherent only to my setup, but if you get something similar (or not) please tell me :)

The main big problem is a type incompatibility between pyOpenCL and the boost library providing the bindings to python concerning the pyopencl.Program.build() method.

build's options argument (or more precicely, _build which is called from build) needs to be a string type. However, pyopencl.Program.build converts strings to lists.

I modified line 465 in pyopencl/_init_.py to: self._prg._build(' '.join(options), devices) which converts it back into a string.