nicehash / excavator

NiceHash's proprietary low-level CUDA miner
https://www.nicehash.com
53 stars 19 forks source link

Add Machine Algorithm Description #267

Closed EvgeniyKorepov closed 6 years ago

EvgeniyKorepov commented 6 years ago

My MinerPro for NiceHash plugs new algorithms on the fly. But for this, I manually generate on the server JSON description (According to the text description https://github.com/nicehash/excavator/tree/master/nvidia). Is it possible to place a similar file here, for complete automation of the process? Here is my description of algorithms :

{   "ExcavatorAlgorithmList": {
        "equihash": {
            "WorkerCount": [1, 2],
            "Parameters": [{
                "Name": "M",
                "Range": [0, 2],
                "Explanation": "Mode of algorithm"
            }]
        },

        "pascal": {
            "WorkerCount": [1],
            "Parameters": [{
                    "Name": "B",
                    "Range": [0, 65535],
                    "Explanation": "Number of blocks"
                },
                {
                    "Name": "TPB",
                    "Range": [0, 512],
                    "Explanation": "Number of threads per block"
                }
            ]
        },

        "decred": {
            "WorkerCount": [1],
            "Parameters": [{
                    "Name": "B",
                    "Range": [0, 65535],
                    "Explanation": "Number of blocks"
                },
                {
                    "Name": "TPB",
                    "Range": [0, 512],
                    "Explanation": "Number of threads per block"
                },
                {
                    "Name": "NPT",
                    "Range": [0, 65535],
                    "Explanation": "Number of iterations per thread"
                }
            ]
        },

        "sia": {
            "WorkerCount": [1],
            "Parameters": [{
                    "Name": "B",
                    "Range": [0, 65535],
                    "Explanation": "Number of blocks"
                },
                {
                    "Name": "TPB",
                    "Range": [0, 512],
                    "Explanation": "Number of threads per block"
                },
                {
                    "Name": "NPT",
                    "Range": [0, 65535],
                    "Explanation": "Number of iterations per thread"
                }
            ]
        },

        "lbry": {
            "WorkerCount": [1],
            "Parameters": [{
                    "Name": "B",
                    "Range": [0, 65535],
                    "Explanation": "Number of blocks"
                },
                {
                    "Name": "TPB",
                    "Range": [0, 768],
                    "Explanation": "Number of threads per block"
                },
                {
                    "Name": "NPT",
                    "Range": [0, 65535],
                    "Explanation": "Number of iterations per thread"
                }
            ]
        },

        "blake2s": {
            "WorkerCount": [1],
            "Parameters": [{
                    "Name": "B",
                    "Range": [0, 65535],
                    "Explanation": "Number of blocks"
                },
                {
                    "Name": "TPB",
                    "Range": [0, 1024],
                    "Explanation": "Number of threads per block"
                },
                {
                    "Name": "NPT",
                    "Range": [0, 65535],
                    "Explanation": "Number of iterations per thread"
                }
            ]
        },

        "daggerhashimoto": {
            "WorkerCount": [1],
            "Parameters": [{
                    "Name": "B",
                    "Range": [0, 65535],
                    "Explanation": "Number of blocks"
                },
                {
                    "Name": "TPB",
                    "Range": [0, 512],
                    "Explanation": "Number of threads per block"
                },
                {
                    "Name": "HPW",
                    "Range": [0, 8],
                    "Explanation": "Number of parallel hashes per warp"
                },
                {
                    "Name": "S",
                    "Range": [0, 2],
                    "Explanation": "Number of streams"
                }
            ]
        },

        "lyra2rev2": {
            "WorkerCount": [1],
            "Parameters": [{
                "Name": "T",
                "Range": [0, 65535],
                "Explanation": "Number of threads"
            }]
        },

        "daggerhashimoto_decred": {
            "WorkerCount": [1],
            "Parameters": [{
                    "Name": "R_0",
                    "Range": [0, 16],
                    "Explanation": "Ratio of blocks used for daggerhashimoto"
                },
                {
                    "Name": "R_1",
                    "Range": [0, 16],
                    "Explanation": "Ratio of blocks used for decred"
                },
                {
                    "Name": "P",
                    "Range": [0, 1],
                    "Explanation": "Profitability of decred"
                }
            ]
        },

        "daggerhashimoto_sia": {
            "WorkerCount": [1],
            "Parameters": [{
                    "Name": "R_0",
                    "Range": [0, 16],
                    "Explanation": "Ratio of blocks used for daggerhashimoto"
                },
                {
                    "Name": "R_1",
                    "Range": [0, 16],
                    "Explanation": "Ratio of blocks used for sia"
                },
                {
                    "Name": "P",
                    "Range": [0, 1],
                    "Explanation": "Profitability of sia"
                }
            ]
        },

        "daggerhashimoto_pascal": {
            "WorkerCount": [1],
            "Parameters": [{
                    "Name": "R_0",
                    "Range": [0, 16],
                    "Explanation": "Ratio of blocks used for daggerhashimoto"
                },
                {
                    "Name": "R_1",
                    "Range": [0, 16],
                    "Explanation": "Ratio of blocks used for pascal"
                },
                {
                    "Name": "P",
                    "Range": [0, 65535],
                    "Explanation": "Number of iterations per thread for pascal"
                }
            ]
        },

        "keccak": {
            "WorkerCount": [1],
            "Parameters": [{
                    "Name": "B",
                    "Range": [0, 65535],
                    "Explanation": "Number of blocks"
                },
                {
                    "Name": "TPB",
                    "Range": [0, 256],
                    "Explanation": "Number of threads per block"
                },
                {
                    "Name": "NPT",
                    "Range": [0, 65535],
                    "Explanation": "Number of iterations per thread"
                }
            ]
        },

        "neoscrypt": {
            "WorkerCount": [1],
            "Parameters": [{
                "Name": "B",
                "Range": [0, 65535],
                "Explanation": "Number of blocks"
            },
            {
                "Name": "M",
                "Range": [1, 5],
                "Explanation": "Mode of algorithm"
            }]
        },

        "cryptonightV7": {
            "WorkerCount": [1],
            "Parameters": [{
                "Name": "B",
                "Range": [0, 65535],
                "Explanation": "Number of blocks"
            },
            {
                "Name": "TPB",
                "Range": [0, 1024],
                "Explanation": "Number of threads per block"
            }]
        },

        "lyra2z": {
            "WorkerCount": [1],
            "Parameters": [{
                "Name": "B",
                "Range": [0, 65535],
                "Explanation": "Number of blocks"
                }
            ]
        },

        "x16r": {
            "WorkerCount": [1],
            "Parameters": [{
                "Name": "B",
                "Range": [0, 65535],
                "Explanation": "Number of blocks"
                }
            ]
        }

    }
}

Thank you in advance!

t4nja commented 6 years ago

Sure, not a problem. I'll upload it shortly.

t4nja commented 6 years ago

@EvgeniyKorepov Just something I noticed. You set 65535 when there is no upper limit for parameters. Type for input parameters is int, not short. Hence the max value is actually 0x7fffffff and not 0xffff.

EvgeniyKorepov commented 6 years ago

@dropky I just decided to limit the upper limit to a reasonable number. Hardly in the parameters will be more than 65535. Or am I mistaken?

t4nja commented 6 years ago

Lyra2rev2 is algorithm where it would make sense to try with even larger numbers. Anyway, we're planning to change the parameter to the number of blocks. So yeah.. 65535 is definitely fine.

t4nja commented 6 years ago

I uploaded the file: https://github.com/nicehash/excavator/blob/master/nvidia/algorithms.json

EvgeniyKorepov commented 6 years ago

@dropky Thank you! In the next version of MinerPro I will make the final descriptions directly from here