Error -61: clCreateBuffer (padbuffer8)
-
Hello,
I tried to debug ocl.c, and the following lines connected to neoscrypt are weird:
[…]
#ifdef USE_NEOSCRYPT
if (opt_neoscrypt) {
/* The scratch/pad-buffer needs 32kBytes memory per thread. */
size_t bufsize = NEOSCRYPT_SCRATCHBUF_SIZE * cgpu->thread_concurrency;[…]
returns bufsize = 0, even though NEOSCRYPT_SCRATCHBUF_SIZE = 32768 and cgpu->thread_concurrency = 1048576 = 32*32768.
Recomputing by hand leads to 32768 = 2^15 for NEOSCRYPT_SCRATCHBUF_SIZE, and 1048576 = 2^5*2^15 = 2^20 for cgpu->thread_concurrency. Therefore, buffer size is computed as 2^15*2^20 = 2^35 which is clearly 8*2^32 or, interpreted by the computer as integer, 8*0. This makes no sense.
When I explicitly set bufsize to some value, e.g. 2*NEOSCRYPT_SCRATCHBUF_SIZE, recompile and start cgminer, the program runs without error message but it is not hashing at all and I get a cgminer process.
Is this a problem of the host system, i.e., 64 vs. 32 bit? Do I have to add some specific flags when compiling?
???
-
I’ve read in the other thread that error -61 could be driver related. I think 13.xx is recommended so you would need to clear all drivers first. Then install 13.xx compile the miner then run. (And for increased performance at this stage install the 14.xx driver) :) hope this helps
-
Thanks kris, for your answer. I will try some newer drivers hoping not to mess up the configuration.
I am not a C-expert, I prefer java since it is host unspecific. However, is it possible, that the word size of the host system influences neo-gpuminer?
That is, on a 64bit host 2^15*2^20 evaluates to 34359738368, whereas on a 32bit host, it evaluates to 0? And the problem firstly shows up as described, but is inherent in the whole binary?
-
Hi curiosity81,
what developerS? As far as I know, is there only one actively (more or less) doing development on cgminer for neoscrypt.
Anyway, on a 32-bit system size_t usually is a 32 bit value. I.e., any data one wants to store in there has to be less than 2^32. What happens, when that value is exceeded is undefined. In your case the system resided to use 0, which shouldn’t be. I will take a look into it, as soon as possible.
Could you meanwhile file an issue at:
https://github.com/vehre/neo-gpuminer/issues
so that I don’t forget about this?
As a work around try to start cgminer with a low intensity, i.e., start with -I 8 and raise it untill cgminer can’t alloc the buffer anmore. The default of cgminer is to use dynamic mode, with tries to allocate a buffer as large as the one you pointed out, but I did not think about system with 32-bit. I am sorry for the bother.
Regards,
Andre
-
Hi Andre,
so the developer is you, obviously :) . Thanks for your reply.
The thing with the intensity, I already tried and it did not work. Do I have to remove the neoscrypt*.bin files for that? But also hardcoding the buffer size did not work: as mentioned above 2*NEOSCRYPT_SCRATCHBUF_SIZE resulted in a “running” cgminer but there was no hashing and I was not able to end the process.
Or are 64kb to few for neoscrypt-hashing? Which would be really weird since we all know that 64kb should suffice! ;) (I will check in the evening if a bigger hardcoded buffer with size less than 2^32 byte will work)
I will put this problem on github as soon as I have an account.
-
If, it’s ok with you. I’ll move this into support section, so we can track these issues.
-
np
-
Thanks.
I’m hoping we can take advantage of the best answer feature in this section to help more people with the same issue. Could I please pinch a small favour? You don’t need to press it now, if your problem isn’t fixed, but can you confirm that as the OP you have ‘mark solved’ feature.
:)
-
I fixed the same problem on windows, by the AMD driver clean out, and reinstall 13.12 driver method.
I’m going to try the update to 14.xx (retain the 13.12 created .bin file) later.
-
Sodelle, I was able to get neo-gpuminer running on a 32bit system without changing the AMD-driver.
As suggested above, I started with bufsize = 2^30 = 1073741824 < 2^32. cgminer gave a new error message telling me, that the hardware only supports at most bufsize = 2^29 = 536870912. So I hardcoded this into ocl.c. I recompiled and started cgminer and it showed me some Kh/s which slowly decreased to around 0.5 Kh/s. Thus, I further reduced bufsize to 0.5*536870912 = 268435456, recompiled and started cgminer with -I 8 and -w 32 parameters. Now I have a constant hashing rate around 7.1 Kh/s.
I will now fine-tune a little bit and tell you what rates I can produce.
Regards,
cu
-
With bufsize = 2^27 = 134217728, -I 12 and -w 32: 40Kh/s !!! This is surprisingly good.
However, I cannot increase the intensity further because then I get 0Kh/s and and a process so that I have to reboot.
Edit: BTW, I am hashing at http://prometheus.phoenixcoin.org:10554/static/ in the moment