KlausT / ccminer-cryptonight

Software for mining various cryptocoins, like Monero (pool mining only)
GNU General Public License v3.0
133 stars 30 forks source link

Hardcoded GPU count = 8 #48

Open rumatoest opened 6 years ago

rumatoest commented 6 years ago

Hi.

You have hardcoded count for GPU and it is equals 8 As a result this miner do not want to launch on systems with more than 8 GPU

It fails cryptonight/cryptonight.cu at 106 line

extern "C" void cuda_deviceinfo(int GPU_N)
{
    cudaError_t err;
    for(int i = 0; i < GPU_N; i++)
    {
        cudaDeviceProp props;
        err = cudaGetDeviceProperties(&props, device_map[i]);
        if(err != cudaSuccess)
        {
/// LOOK HERE it fails when i = 9 you just can add this info to output
            printf("\nGPU %d: %s\n%s line %d\n", device_map[i], cudaGetErrorString(err), __FILE__, __LINE__);
            exit(1);
        }

        device_name[i] = strdup(props.name);
        device_mpcount[i] = props.multiProcessorCount;
        device_arch[i][0] = props.major;
        device_arch[i][1] = props.minor;
    }
}

I've inspect code and find that problem is deep - there are many places in code where many arrays initialized like whatever[8] - I guess most of this arrays are related to GPU fixed number

KlausT commented 6 years ago

So far nobody has complained here about this limit. At the time this code was written it was not possible to have more than 8 cards. It still isn't possible under Windows. I could replace the 8 with MAX_GPUS or something, that would be the easiest change.

rumatoest commented 6 years ago

So far nobody has complained here about this limit.

Because this guys mine ethereum right now :)

It will be very good to have MAX_GPUS constant and you should better set it to value more than 19 :)

http://www.anandtech.com/show/11739/asus-announces-b250-expert-mining-motherboard-19-expansions-slots

KlausT commented 6 years ago

I have added MAX_GPU now with release 2.05 :-)

fergerod commented 6 years ago

Hello, tried 2.06beta with MAX_GPUS=12 and got following error:

[2017-11-08 10:14:31] 12 CUDA devices detected
[2017-11-08 10:14:34] Starting Stratum on stratum+tcp://pool.supportxmr.com:7777
[2017-11-08 10:14:34] GPU #0: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] 12 miner threads started
[2017-11-08 10:14:34] GPU #1: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] GPU #5: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] GPU #7: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] GPU #6: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] GPU #10: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] GPU #2: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] GPU #8: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] GPU #4: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] GPU #11: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] GPU #3: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] GPU #9: GeForce GTX 1060 6GB (10 SMX), using 40 blocks of 32 threads
[2017-11-08 10:14:34] Pool set diff to 25000.1
[2017-11-08 10:14:34] Stratum detected new block
[2017-11-08 10:14:40] GPU #5: GeForce GTX 1060 6GB, 200.93 H/s (200.88 H/s avg)
[2017-11-08 10:14:40] GPU #4: GeForce GTX 1060 6GB, 200.84 H/s (200.78 H/s avg)
[2017-11-08 10:14:41] GPU #6: GeForce GTX 1060 6GB, 200.50 H/s (200.45 H/s avg)
[2017-11-08 10:14:41] GPU #0: GeForce GTX 1060 6GB, 200.39 H/s (200.38 H/s avg)

GPU 0: invalid argument
cryptonight/cuda_cryptonight_extra.cu line 176

After some experiments with "-d" flag, got following results: -d 0,1,2,3,4,5,6,7 works fine -d 0,1,2,3,4,5,6,10 works fine -d 0,1,2,3,4,5,6,7,8,9 gives: "cryptonight/cuda_cryptonight_extra.cu line 176" -d 0,1,2,3,4,5,10,11 gives: "Non-existant CUDA device '11' specified in -d option"

EDIT: got new error... : -d 0,1,2,3,4,5,6,7,8 GPU 4: OS call failed or operation not supported on this OS cryptonight/cuda_cryptonight_extra.cu line 209

KlausT commented 6 years ago

I forgot to replace one hardcoded 8 with MAX_GPU. That was causing the "invalid argument". Also fixed a bug in the -d option

fergerod commented 6 years ago

Thanks. Works fine with 12 gpu's :)