A Multi GPU Miner is Available for Ubuntu!

And then you install the package you did build presumably?

Could you share the error message you get when it crashes (in log/epoch.log most likely)?

hope this is somewhat helping

twm@founders:~/epoch-multi_gpu/_build/prod/rel/epoch$ tail log/epoch.log
2018-11-29 15:35:42.573 [error] <0.1069.0> Abort on error is set. Terminating sequence
2018-11-29 15:35:42.574 [error] <0.1069.0> Caught exception:
{validation_failed,[{error,[{data_invalid,#{<<"additionalProperties">> => false,<<"properties">> => #{<<"edge_bits">> => #{<<"default">> => 29,<<"description">> => <<"Number of bits used for representing an edge in the Cuckoo Cycle problem. It affects both PoW generation (mining) and verification. WARNING: Changing this makes the node incompatible with the chain of other nodes in the network, do not change from the default unless you know what you are doing.">>,<<"type">> => <<"integer">>},<<"executable">> => #{<<"default">> => <<"mean29-generic">>,<<"description">> => <<"Executable binary of the miner. Options are: \"mean29-generic\" (memory-intensive), \"mean29-avx2\" (memory-intensive, benefits from faster CPU supporting AVX2 instructions), \"lean29-generic\" (CPU-intensive, useful if memory-constrained), \"lean29-avx2\" (CPU-intensive, useful if memory-constrained, benefits from faster CPU supporting AVX2 instructions).">>,<<"type">> => <<"string">>},<<"extra_args">> => #{<<"default">> => <<"-t 1">>,<<"description">> => <<"Extra arguments to pass to the miner executable binary. The safest choice is specifying no arguments i.e. empty string.">>,<<"type">> => <<"string">>},<<"hex_encoded_header">> => #{<<"default">> => false,<<"description">> => <<"Hexadecimal encode the header argument that is send to the miner executable. CUDA executables expect hex encoded header.">>,<<"type">> => <<"boolean">>},<<"instances">> => #{<<"default">> => 1,<<"description">> => <<"Miner instances in case of Multi-GPU mining">>,<<"type">> => <<"integer">>},<<"nice">> => #{<<"description">> => <<"Miner process priority (niceness) in a UNIX fashion. Higher `nice` means lower priority. Keep it unset to inherit parent process priority.">>,<<"type">> => <<"integer">>}},<<"required">> => [<<"executable">>,<<"extra_args">>,<<"edge_bits">>],<<"type">> => <<"object">>},missing_required_property,<<"extra_args">>,[<<"mining">>,<<"cuckoo">>,<<"miner">>]}]}]}
[{setup,try_apply,4,[{file,"/home/twm/epoch-multi_gpu/_build/default/lib/setup/src/setup.erl"},{line,1144}]},{lists,foreach,2,[{file,"lists.erl"},{line,1338}]},{setup,run_setup_,0,[{file,"/home/twm/epoch-multi_gpu/_build/default/lib/setup/src/setup.erl"},{line,957}]},{setup,run_setup,0,[{file,"/home/twm/epoch-multi_gpu/_build/default/lib/setup/src/setup.erl"},{line,939}]},{setup_srv,handle_call,3,[{file,"/home/twm/epoch-multi_gpu/_build/default/lib/setup/src/setup_srv.erl"},{line,42}]},{gen_server,try_handle_call,4,[{file,"gen_server.erl"},{line,636}]},{gen_server,handle_msg,6,[{file,"gen_server.erl"},{line,665}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]
2018-11-29 15:35:42.574 [error] <0.1069.0> gen_server setup_srv terminated with reason: {validation_failed,[{error,[{data_invalid,#{<<"additionalProperties">> => false,<<"properties">> => #{<<"edge_bits">> => #{<<"default">> => 29,<<"description">> => <<"Number of bits used for representing an edge in the Cuckoo Cycle problem. It affects both PoW generation (mining) and verification. WARNING: Changing this makes the node incompatible with the chain of other nodes in the network, do not change from the default unless you know what you are doing.">>,<<"type">> => <<"integer">>},...},...},...}]}]} in setup:run_setup/0 line 946
2018-11-29 15:35:42.574 [error] <0.1069.0> CRASH REPORT Process setup_srv with 0 neighbours crashed with reason: {validation_failed,[{error,[{data_invalid,#{<<"additionalProperties">> => false,<<"properties">> => #{<<"edge_bits">> => #{<<"default">> => 29,<<"description">> => <<"Number of bits used for representing an edge in the Cuckoo Cycle problem. It affects both PoW generation (mining) and verification. WARNING: Changing this makes the node incompatible with the chain of other nodes in the network, do not change from the default unless you know what you are doing.">>,<<"type">> => <<"integer">>},...},...},...}]}]} in setup:run_setup/0 line 946
2018-11-29 15:35:42.575 [error] <0.1068.0> Supervisor setup_sup had child setup_srv started with setup_srv:start_link() at <0.1069.0> exit with reason {validation_failed,[{error,[{data_invalid,#{<<"additionalProperties">> => false,<<"properties">> => #{<<"edge_bits">> => #{<<"default">> => 29,<<"description">> => <<"Number of bits used for representing an edge in the Cuckoo Cycle problem. It affects both PoW generation (mining) and verification. WARNING: Changing this makes the node incompatible with the chain of other nodes in the network, do not change from the default unless you know what you are doing.">>,<<"type">> => <<"integer">>},...},...},...}]}]} in setup:run_setup/0 line 946 in context child_terminated
2018-11-29 15:35:42.575 [debug] <0.1068.0> Supervisor setup_sup started setup_srv:start_link() at pid <0.1072.0>
2018-11-29 15:35:42.575 [error] <0.1066.0>@application_master:init:134 CRASH REPORT Process <0.1066.0> with 0 neighbours exited with reason: bad return value: {{setup_app,start_phase,[run_setup,normal,[]]},{'EXIT',{{{validation_failed,[{error,[{data_invalid,#{<<"additionalProperties">> => false,<<"properties">> => #{<<"edge_bits">> => #{<<"default">> => 29,<<"description">> => <<"Number of bits used for representing an edge in the Cuckoo Cycle problem. It affects both PoW generation (mining) and verification. WARNING: Changing this makes the node incompatible with the chain of other nodes in the network, do not change from the default unless ...">>,...},...},...},...}]}]},...},...}}} in application_master:init/4 line 134
2018-11-29 15:35:42.575 [info] <0.958.0> Application setup exited with reason: bad return value: {{setup_app,start_phase,[run_setup,normal,[]]},{'EXIT',{{{validation_failed,[{error,[{data_invalid,#{<<"additionalProperties">> => false,<<"properties">> => #{<<"edge_bits">> => #{<<"default">> => 29,<<"description">> => <<"Number of bits used for representing an edge in the Cuckoo Cycle problem. It affects both PoW generation (mining) and verification. WARNING: Changing this makes the node incompatible with the chain of other nodes in the network, do not change from the default unless ...">>,...},...},...},...}]}]},...},...}}}
1 Like

./bin/epoch check_config epoch.yaml gives the following output

twm@founders:~/epoch-multi_gpu/_build/prod/rel/epoch$ ./bin/epoch check_config epoch.yaml
Validation failed
Position: mining/cuckoominer
Value   : "extra_args"
Schema  :
{
  "additionalProperties": false,
  "properties": {
    "edge_bits": {
      "default": 29,
      "description": "Number of bits used for representing an edge in the Cuckoo Cycle problem. It affects both PoW generation (mining) and verification. WARNING: Changing this makes the node incompatible with the chain of other nodes in the network, do not change from the default unless you know what you are doing.",
      "type": "integer"
    },
    "executable": {
      "default": "mean29-generic",
      "description": "Executable binary of the miner. Options are: \"mean29-generic\" (memory-intensive), \"mean29-avx2\" (memory-intensive, benefits from faster CPU supporting AVX2 instructions), \"lean29-generic\" (CPU-intensive, useful if memory-constrained), \"lean29-avx2\" (CPU-intensive, useful if memory-constrained, benefits from faster CPU supporting AVX2 instructions).",
      "type": "string"
    },
    "extra_args": {
      "default": "-t 1",
      "description": "Extra arguments to pass to the miner executable binary. The safest choice is specifying no arguments i.e. empty string.",
      "type": "string"
    },
    "hex_encoded_header": {
      "default": false,
      "description": "Hexadecimal encode the header argument that is send to the miner executable. CUDA executables expect hex encoded header.",
      "type": "boolean"
    },
    "instances": {
      "default": 1,
      "description": "Miner instances in case of Multi-GPU mining",
      "type": "integer"
    },
    "nice": {
      "description": "Miner process priority (niceness) in a UNIX fashion. Higher `nice` means lower priority. Keep it unset to inherit parent process priority.",
      "type": "integer"
    }
  },
  "required": [
    "executable",
    "extra_args",
    "edge_bits"
  ],
  "type": "object"
}
Reason  : Missing required property
Configuration error (validation_failed)

Ah :man_facepalming:, sorry for not spotting immediately. You still have to have the field extra_args: "" it is mandatory even if you don’t need any extra arguments.

1 Like

YES that fixxed it!!
thanks bro!

2 Likes

Great! Glad I could help!

Beware though that it does not perform just as well as we hoped… As discussed above there seem to be a bottleneck starting multiple miners :frowning:

I tried this multigpu procedure but I am getting error while validating my epoch.yaml file. Here is the epoch.yaml file


sync:
port: 3115
external_port: 3015

keys:
dir: keys
peer_password: “Care2007”

http:
external:
port: 3013
internal:
port: 3113

websocket:
channel:
port: 3014

mining:
beneficiary: “ak_2b9RpA65prHs1sgeDGrUGsTLJ7hDx3Af4pNRDVigjaiTyXihQh”
autostart: true
cuckoo:
miner:
executable: cuda29
extra_args: “”
instances: 5
edge_bits: 29
hex_encoded_header: true

chain:
persist: true
db_path: ./chain

fork_management:
network_id: ae_mainnet

I triend extra arguments in my yaml file but still I am getting validation error. Please check my yaml file


sync:
port: 3115
external_port: 3015

keys:
dir: keys
peer_password: “Care2007”

http:
external:
port: 3013
internal:
port: 3113

websocket:
channel:
port: 3014

mining:
beneficiary: “ak_2b9RpA65prHs1sgeDGrUGsTLJ7hDx3Af4pNRDVigjaiTyXihQh”
autostart: true
cuckoo:
miner:
executable: cuda29
extra_args: “”
instances: 5
edge_bits: 29
hex_encoded_header: true

chain:
persist: true
db_path: ./chain

fork_management:
network_id: ae_mainnet

I am getting the following error when I am validating:
caremedical@caremedical:~/epoch$ ./bin/epoch check_config epoch.yaml
Validation failed
Position: autostart
Value : #{<<97,117,116,111,115,116,97,114,116>>=>true,<<98,101,110,101,102,105,99,105,97,114,121>>=><<97,107,95,50,98,57,82,112,65,54,53,112,114,72,115,49,115,103,101,68,71,114,85,71,115,84,76,74,55,104,68,120,51,65,102,52,112,78,82,68,86,105,103,106,97,105,84,121,88,105,104,81,104>>,<<99,104,97,105,110>>=>null,<<99,104,97,110,110,101,108>>=>null,<<99,117,99,107,111,111>>=>null,<<100,98,95,112,97,116,104>>=><<46,47,99,104,97,105,110>>,<<100,105,114>>=><<107,101,121,115>>,<<101,100,103,101,95,98,105,116,115>>=>29,<<101,120,101,99,117,116,97,98,108,101>>=><<99,117,100,97,50,57>>,<<101,120,116,101,114,110,97,108>>=>null,<<101,120,116,101,114,110,97,108,95,112,111,114,116>>=>3015,<<101,120,116,114,97,95,97,114,103,115>>=><<>>,<<102,111,114,107,95,109,97,110,97,103,101,109,101,110,116>>=>null,<<104,101,120,95,101,110,99,111,100,101,100,95,104,101,97,100,101,114>>=>true,<<104,116,116,112>>=>null,<<105,110,115,116,97,110,99,101,115>>=>1,<<105,110,116,101,114,110,97,108>>=>null,<<107,101,121,115>>=>null,<<109,105,110,101,114>>=>null,<<109,105,110,105,110,103>>=>null,<<110,101,116,119,111,114,107,95,105,100>>=><<97,101,95,109,97,105,110,110,101,116>>,<<112,101,101,114,95,112,97,115,115,119,111,114,100>>=><<67,97,114,101,50,48,48,55>>,<<112,101,114,115,105,115,116>>=>true,<<112,111,114,116>>=>3014,<<115,121,110,99>>=>null,<<119,101,98,115,111,99,107,101,116>>=>null}
Schema :
{
schema": "http://json-schema.org/draft-04/schema#", "additionalProperties": false, "definitions": { "key_value_pattern": { "pattern": "^[a-zA-Z0-9\\-_\\.]+\\h*:\\h*[0-9]+(\\h*,\\h*[a-zA-Z_]+\\h*:\\h*[0-9]+)*" } }, "properties": { "blocked_peers": { "description": "Pre-configured addresses of epoch nodes NOT to contact", "items": { "description": "Aeternity Node address", "example": "aenode://[email protected]:3015", "pattern": "^aenode://pp_[a-zA-Z0-9]+@[^:\\.\"!#%^&()',/]+(\.[^:\."!#%^&*()',/]+)*:[0-9]+/*",
“type”: “string”
},
“type”: “array”
},
“chain”: {
“additionalProperties”: false,
“properties”: {
“db_path”: {
“description”: “The directory where the chain is persisted to disk.”,
“type”: “string”
},
“hard_forks”: {
“additionalProperties”: false,
“description”: “The consensus protocol versions with respective effective heights”,
“patternProperties”: {
"^[1-9][0-9]
$”: {
“description”: “Minimum height at which protocol is effective”,
“minimum”: 0,
“type”: “integer”
}
},
“type”: “object”
},
“persist”: {
“description”: “If true, all changes to the chain are written to disk.”,
“type”: “boolean”
}
},
“type”: “object”
},
“fork_management”: {
“additionalProperties”: false,
“properties”: {
“network_id”: {
“description”: “Identification of the network in case of hard forks.”,
“type”: “string”
}
},
“type”: “object”
},
“http”: {
“additionalProperties”: false,
“properties”: {
“cors”: {
“additionalProperties”: false,
“description”: “Section for CORS headers configuration.”,
“properties”: {
“allow_domains”: {
“default”: [
"
],
“description”: "List of domains that can access resources. Use '
’ to allow all domains.”,
“items”: {
“example”: “https://example.com”,
“type”: “string”
},
“minItems”: 1,
“type”: “array”
},
“allow_headers”: {
“default”: [
"
],
“description”: "List of allowed headers to be used with requests (to be set in access-control-request-headers header in the response). Use '
’ or do not set at all to allow all headers.”,
“items”: {
“example”: “Content-Type”,
“type”: “string”
},
“minItems”: 1,
“type”: “array”
},
“allow_methods”: {
“default”: [
“DELETE”,
“GET”,
“HEAD”,
“OPTIONS”,
“PATCH”,
“POST”,
“PUT”
],
“description”: “List of allowed methods allowed to be used when accessing resources (to be set in access-control-allow-methods header in the response).”,
“items”: {
“example”: “GET”,
“type”: “string”
},
“minItems”: 1,
“type”: “array”
},
“max_age”: {
“default”: 1800,
“description”: “Indicates for how many seconds the results of a preflight request can be cached (to be set in access-control-max-age header in the response).”,
“type”: “integer”
}
},
“type”: “object”
},
“debug”: {
“description”: “Whether to enable the debug endpoints”,
“type”: “boolean”
},
“endpoints”: {
“chain”: {
“description”: “Chain state inspection endpoints”,
“type”: “boolean”
},
“debug”: {
“description”: “Debug endpoints”,
“type”: “boolean”
},
“dev”: {
“description”: “Development only API - for validation of client implementations. Should not be used in real life scenrios”,
“type”: “boolean”
},
“gossip”: {
“description”: “Gossip protocol API”,
“type”: “boolean”
},
“name_service”: {
“description”: “Name resolution API”,
“type”: “boolean”
},
“node_operator”: {
“description”: “Node operator endpoints”,
“type”: “boolean”
},
“obsolete”: {
“description”: “Old endpoints that will be removed”,
“type”: “boolean”
},
“transactions”: {
“description”: “Transactions insection endpoints”,
“type”: “boolean”
}
},
“external”: {
“additionalProperties”: false,
“properties”: {
“acceptors”: {
“default”: 10,
“description”: “Number of acceptors in external pool”,
“type”: “integer”
},
“connect_timeout”: {
“description”: “HTTP Request connect timeout.”,
“type”: “integer”
},
“listen_address”: {
“description”: “Listen address for external interface. This should be publicly accessible”,
“example”: “0.0.0.0”,
“type”: “string”
},
“port”: {
“description”: “Listen port for external HTTP interface.”,
“type”: “integer”
},
“request_timeout”: {
“description”: “HTTP Request timeout.”,
“type”: “integer”
}
},
“type”: “object”
},
“internal”: {
“additionalProperties”: false,
“properties”: {
“acceptors”: {
“default”: 10,
“description”: “Number of acceptors in internal pool”,
“type”: “integer”
},
“listen_address”: {
“description”: “Listen address for internal interface. This should not be publicly accessible”,
“example”: “127.0.0.1”,
“type”: “string”
},
“port”: {
“description”: “Listen port for internal HTTP interface.”,
“type”: “integer”
}
},
“type”: “object”
}
},
“type”: “object”
},
“keys”: {
“additionalProperties”: false,
“properties”: {
“dir”: {
“description”: “Location (directory) of the public/private key pair(s)”,
“type”: “string”
},
“peer_password”: {
“description”: “Password used to encrypt the peer key-pair files”,
“type”: “string”
}
},
“type”: “object”
},
“load_levels”: {
“additionalProperties”: false,
“description”: “Overload sampler configurations. These monitor potential pain points in the system for indications of overload.”,
“properties”: {
“mempool”: {
“additionalProperties”: false,
“properties”: {
“size”: {
ref": "#/definitions/key_value_pattern", "default": "1000:1,2000:2,3000:3,4000:4", "description": "Number of transactions in the mempool", "type": "string" } }, "type": "object" } }, "type": "object" }, "logging": { "additionalProperties": false, "properties": { "hwm": { "description": "Controls the overload protection in the logs. Default=50.", "minimum": 50, "type": "integer" }, "level": { "default": "debug", "description": "Sets the level of logging in the epoch, mining and cuckoo logs.", "enum": [ "debug", "info", "warning", "error", "none" ], "type": "string" } }, "type": "object" }, "mempool": { "additionalProperties": false, "properties": { "invalid_tx_ttl": { "description": "Number of blocks before invalid (TTL or low nonce) TXs are garbage collected", "type": "integer" }, "nonce_baseline": { "description": "Maximum nonce accepted when pubkey is not present in state", "type": "integer" }, "nonce_offset": { "description": "Maximum nonce offset accepted", "type": "integer" }, "sync_interval": { "description": "Interval between mempool (re-)synchronization (in ms)", "type": "integer" }, "tx_ttl": { "description": "Number of blocks before inactive TXs are garbage collected", "type": "integer" } }, "type": "object" }, "metrics": { "additionalProperties": false, "properties": { "host": { "description": "Hostname to use when reporting to the statsd daemon", "type": "string" }, "port": { "description": "Port number of the (typically) statsd daemon.", "minimum": 0, "type": "integer" }, "reconnect_interval": { "description": "How often (in ms) to try reconnecting to the daemon", "minimum": 0, "type": "integer" }, "rules": { "description": "Filter rules guiding logging/sending of metrics. The provided search patterns are applied to existing metrics, and the related 'actions' control whether to 'log' the metric data to disk, 'send' it to the cloud, or neither. The default is to do both, i.e. 'log,send' for all 'ae.epoch.**' metrics.", "items": { "additionalProperties": false, "properties": { "actions": { "description": "What to do with matching metrics.", "pattern": "^((none)|(((log)|(send))(\\,((log)|(send))){0,1}))”,
“type”: “string”
},
“datapoints”: {
“description”: “Specific datapoints: ‘default’, or names, comma-separated”,
“pattern”: “^[a-zA-Z0-9]+(\,[a-zA-Z0-9]+)", "type": "string" }, "name": { "description": "Name pattern for metric (incl wildcards)", "example": "ae.epoch.aecore.**", "pattern": "^([a-zA-Z0-9\\-_]+|\\*{1,2})(\\.([a-zA-Z0-9\\-_]+|\\*{1,2}))*",
“type”: “string”
},
“type”: {
“description”: “type of metric”,
“pattern”: "^(\
|[a-zA-Z])", "type": "string" } }, "type": "object" }, "type": "array" } }, "type": "object" }, "mining": { "additionalProperties": false, "properties": { "attempt_timeout": { "description": "Maximum time (milliseconds) for each attempt to mine a block with a specific nonce.", "type": "integer" }, "autostart": { "description": "If true, the node will start mining automatically.", "type": "boolean" }, "beneficiary": { "description": "Public key of beneficiary account that will receive fees from mining on a node.", "example": "ak_DummyPubKeyDoNotEverUse999999999999999999999999999", "pattern": "^ak_[1-9A-HJ-NP-Za-km-z]*",
“type”: “string”
},
“beneficiary_reward_delay”: {
“default”: 180,
“description”: “Delay (in key blocks / generations) for getting mining rewards. Used in governance.”,
“minimum”: 2,
“type”: “integer”
},
“cuckoo”: {
“additionalProperties”: false,
“properties”: {
“miner”: {
“additionalProperties”: false,
“properties”: {
“edge_bits”: {
“default”: 29,
“description”: “Number of bits used for representing an edge in the Cuckoo Cycle problem. It affects both PoW generation (mining) and verification. WARNING: Changing this makes the node incompatible with the chain of other nodes in the network, do not change from the default unless you know what you are doing.”,
“type”: “integer”
},
“executable”: {
“default”: “mean29-generic”,
“description”: “Executable binary of the miner. Options are: "mean29-generic" (memory-intensive), "mean29-avx2" (memory-intensive, benefits from faster CPU supporting AVX2 instructions), "lean29-generic" (CPU-intensive, useful if memory-constrained), "lean29-avx2" (CPU-intensive, useful if memory-constrained, benefits from faster CPU supporting AVX2 instructions).”,
“type”: “string”
},
“extra_args”: {
“default”: “-t 1”,
“description”: “Extra arguments to pass to the miner executable binary. The safest choice is specifying no arguments i.e. empty string.”,
“type”: “string”
},
“hex_encoded_header”: {
“default”: false,
“description”: “Hexadecimal encode the header argument that is send to the miner executable. CUDA executables expect hex encoded header.”,
“type”: “boolean”
},
“instances”: {
“default”: 1,
“description”: “Miner instances in case of Multi-GPU mining”,
“type”: “integer”
},
“nice”: {
“description”: “Miner process priority (niceness) in a UNIX fashion. Higher nice means lower priority. Keep it unset to inherit parent process priority.”,
“type”: “integer”
}
},
“required”: [
“executable”,
“extra_args”,
“edge_bits”
],
“type”: “object”
}
},
“type”: “object”
},
“expected_mine_rate”: {
“default”: 300000,
“description”: “Expected mine rate (milliseconds) between blocks. Used in governance.”,
“minimum”: 1,
“type”: “integer”
},
“micro_block_cycle”: {
“default”: 3000,
“description”: “Expected rate (milliseconds) between micro-blocks. Used in governance.”,
“minimum”: 1,
“type”: “integer”
}
},
“required”: [
“beneficiary”
],
“type”: “object”
},
“peers”: {
“description”: “Pre-configured addresses of epoch nodes to contact. If not set TestNet seed peers will be used.”,
“items”: {
“description”: “Aeternity Node address”,
“example”: “aenode://[email protected]:3015”,
“pattern”: "^aenode://pp_[a-zA-Z0-9]+@[^:\."!#%^&*()',/]+(\\.[^:\\.\"!#%^&
()',/]+):[0-9]+/$”,
“type”: “string”
},
“type”: “array”
},
“regulators”: {
“additionalProperties”: false,
“description”: “Queues regulating the load in an epoch node. Each queue may have a combination of ‘rate’, ‘counter’, ‘max_size’ and ‘max_time’ parameters. Set a parameter to 0 if you want it to have no effect.”,
“properties”: {
“http_read”: {
“additionalProperties”: false,
“description”: “HTTP read requests.”,
“properties”: {
“counter”: {
“default”: 5,
“type”: “integer”
},
“max_size”: {
“default”: 100,
“type”: “integer”
},
“max_time”: {
“default”: 0,
“type”: “integer”
},
“rate”: {
“default”: 0,
“type”: “integer”
}
},
“type”: “object”
},
“http_update”: {
“additionalProperties”: false,
“description”: “HTTP update requests.”,
“properties”: {
“counter”: {
“default”: 5,
“type”: “integer”
},
“max_size”: {
“default”: 50,
“type”: “integer”
},
“max_time”: {
“default”: 0,
“type”: “integer”
},
“rate”: {
“default”: 0,
“type”: “integer”
}
},
“type”: “object”
},
“sc_ws_handlers”: {
“additionalProperties”: false,
“description”: “State channel websocket handlers.”,
“properties”: {
“counter”: {
“default”: 10,
“type”: “integer”
},
“max_size”: {
“default”: 5,
“type”: “integer”
},
“max_time”: {
“default”: 0,
“type”: “integer”
},
“rate”: {
“default”: 0,
“type”: “integer”
}
},
“type”: “object”
},
“sync_gossip”: {
“additionalProperties”: false,
“properties”: {
“counter”: {
“default”: 5,
“type”: “integer”
},
“max_size”: {
“default”: 0,
“type”: “integer”
},
“max_time”: {
“default”: 0,
“type”: “integer”
},
“rate”: {
“default”: 0,
“type”: “integer”
}
},
“type”: “object”
},
“sync_ping”: {
“additionalProperties”: false,
“description”: “sync node pinger worker pool.”,
“properties”: {
“counter”: {
“default”: 3,
“type”: “integer”
},
“max_size”: {
“default”: 0,
“type”: “integer”
},
“max_time”: {
“default”: 0,
“type”: “integer”
},
“rate”: {
“default”: 0,
“type”: “integer”
}
},
“type”: “object”
},
“sync_tasks”: {
“additionalProperties”: false,
“properties”: {
“counter”: {
“default”: 10,
“type”: “integer”
},
“max_size”: {
“default”: 0,
“type”: “integer”
},
“max_time”: {
“default”: 0,
“type”: “integer”
},
“rate”: {
“default”: 0,
“type”: “integer”
}
},
“type”: “object”
},
“tx_pool_push”: {
“additionalProperties”: false,
“description”: “mempool updates.”,
“properties”: {
“counter”: {
“default”: 5,
“type”: “integer”
},
“counter_modifiers”: {
“$ref”: “#/definitions/key_value_pattern”,
“default”: “mempool.size: 15”,
“type”: “string”
},
“max_size”: {
“default”: 5000,
“type”: “integer”
},
“max_time”: {
“default”: 0,
“type”: “integer”
},
“rate”: {
“default”: 0,
“type”: “integer”
},
“rate_modifiers”: {
“$ref”: “#/definitions/key_value_pattern”,
“default”: “mempool.size: 10”,
“type”: “string”
}
},
“type”: “object”
},
“ws_handlers”: {
“additionalProperties”: false,
“description”: “websocket handlers.”,
“properties”: {
“counter”: {
“default”: 10,
“type”: “integer”
},
“max_size”: {
“default”: 5,
“type”: “integer”
},
“max_time”: {
“default”: 0,
“type”: “integer”
},
“rate”: {
“default”: 0,
“type”: “integer”
}
},
“type”: “object”
}
},
“type”: “object”
},
“sync”: {
“additionalProperties”: false,
“properties”: {
“acceptors”: {
“default”: 10,
“description”: “Number of acceptors in listening pool”,
“type”: “integer”
},
“close_timeout”: {
“default”: 3000,
“description”: “Maximum time for the peer to close a connection cleanly”,
“type”: “integer”
},
“connect_timeout”: {
“default”: 1000,
“description”: “Connection timeout in miliseconds”,
“type”: “integer”
},
“external_port”: {
“description”: “Listen port for external sync connections.”,
“type”: “integer”
},
“first_ping_timeout”: {
“default”: 30000,
“description”: “Maximum time for receiving a ping in miliseconds”,
“type”: “integer”
},
“gossip_allowed_height_from_top”: {
“description”: “Allowed height difference from current top for incoming blocks (via gossip)”,
“type”: “integer”
},
“listen_address”: {
“description”: “Listen address for external interface. This should be publicly accessible”,
“example”: “0.0.0.0”,
“type”: “string”
},
“max_gossip”: {
“default”: 10,
“description”: “Maximum number of peers to gossip blocks and transactions to”,
“minimum”: 0,
“type”: “integer”
},
“max_inbound”: {
“default”: 100,
“description”: “Maximum number of inbound connections after which inbound connections are temporary (only used for a single ping)”,
“type”: “integer”
},
“max_inbound_hard”: {
“default”: 1000,
“description”: “Maximum number of inbound connections”,
“type”: “integer”
},
“max_outbound”: {
“default”: 10,
“description”: “Maximum number of outbound connections”,
“type”: “integer”
},
“noise_hs_timeout”: {
“default”: 5000,
“description”: “Maximum time for noise handshake in miliseconds”,
“type”: “integer”
},
“ping_interval”: {
“description”: “Interval between pings (in ms)”,
“type”: “integer”
},
“port”: {
“description”: “Port used for (incoming) sync connections, must be reachable from the public facing IP”,
“type”: “integer”
},
“resolver_backoff_times”: {
“default”: [
5000,
15000,
30000,
60000,
120000,
300000,
600000
],
“description”: “Waiting time intervals (milliseconds) before each retry at resolving the host name of peers (both trusted and untrusted). Retries further to the length of the array reuse the last item of the array.”,
“items”: {
“example”: 5000,
“minimum”: 1,
“type”: “integer”
},
“minItems”: 1,
“type”: “array”
},
“resolver_max_retries”: {
“default”: 7,
“description”: “Maximum number of retries at resolving the host name of untrusted peers.”,
“minimum”: 0,
“type”: “integer”
},
“single_outbound_per_group”: {
“default”: true,
“description”: “If the extra outbound connections should be to nodes from different address groups (IP netmask /16)”,
“type”: “boolean”
}
},
“type”: “object”
},
“websocket”: {
“additionalProperties”: false,
“properties”: {
“channel”: {
“additionalProperties”: false,
“properties”: {
“acceptors”: {
“default”: 10,
“description”: “Number of acceptors in pool”,
“type”: “integer”
},
“listen_address”: {
“default”: “127.0.0.1”,
“description”: “Listen address for channels websocket interface.”,
“example”: “0.0.0.0”,
“type”: “string”
},
“port”: {
“description”: “Listen port for channels websocket interface.”,
“type”: “integer”
}
},
“type”: “object”
}
},
“type”: “object”
}
},
“type”: “object”
}
Reason : No extra properties allowed
Configuration error (validation_failed)

I think your epoch.yaml file is not correctly indented (i.e. everything is written at the beginning of a line) - yaml-format is layout sensitive so for example the mining part should look like below. See aeternity/configuration.md at master · aeternity/aeternity · GitHub for more examples.

sync:
  port: 3015

mining:
  cuckoo:
     miner:
      instances: 2
      executable: cuda29
      extra_args: ""
      edge_bits: 29

...

Let me try and validate it looking at the examples mentioned. If I have any issues I will let you know.

Please find my epoch.yaml file and and let me know I am running only one GPU

I am getting following error while validating

Hello I validated my epoch.yaml file and i started the node it says it is syncing. But how do I know that it is completely synced.

#{<<“port”>> => 3014}}}}]
setenv K=autostart, V=true
setenv K=persist, V=true
19:55:55.296 [info] Set config (aeutils): ‘$user_config’ = [{<<“chain”>>,[{<<“db_path”>>,<<“./my_db”>>},{<<“persist”>>,true}]},{<<“fork_management”>>,[{<<“network_id”>>,<<“ae_mainnet”>>}]},{<<“http”>>,[{<<“external”>>,[{<<“port”>>,3013}]},{<<“internal”>>,[{<<“port”>>,3113}]}]},{<<“keys”>>,[{<<“dir”>>,<<“keys”>>},{<<“peer_password”>>,<<“Care2007”>>}]},{<<“mining”>>,[{<<“autostart”>>,true},{<<“beneficiary”>>,<<“ak_2b9RpA65prHs1sgeDGrUGsTLJ7hDx3Af4pNRDVigjaiTyXihQh”>>},{<<“cuckoo”>>,[{<<“miner”>>,[{<<“edge_bits”>>,29},{<<“executable”>>,<<“cuda29”>>},{<<“extra_args”>>,<<>>},{<<“hex_encoded_header”>>,true},{<<“instances”>>,3}]}]}]},{<<“sync”>>,[{<<“external_port”>>,3015},{<<“port”>>,3115}]},{<<“websocket”>>,[{<<“channel”>>,[{<<“port”>>,3014}]}]}]
19:55:55.296 [info] Set config (aeutils): ‘$user_map’ = #{<<“chain”>> => #{<<“db_path”>> => <<“./my_db”>>,<<“persist”>> => true},<<“fork_management”>> => #{<<“network_id”>> => <<“ae_mainnet”>>},<<“http”>> => #{<<“external”>> => #{<<“port”>> => 3013},<<“internal”>> => #{<<“port”>> => 3113}},<<“keys”>> => #{<<“dir”>> => <<“keys”>>,<<“peer_password”>> => <<“Care2007”>>},<<“mining”>> => #{<<“autostart”>> => true,<<“beneficiary”>> => <<“ak_2b9RpA65prHs1sgeDGrUGsTLJ7hDx3Af4pNRDVigjaiTyXihQh”>>,<<“cuckoo”>> => #{<<“miner”>> => #{<<“edge_bits”>> => 29,<<“executable”>> => <<“cuda29”>>,<<“extra_args”>> => <<>>,<<“hex_encoded_header”>> => true,<<“instances”>> => 3}}},<<“sync”>> => #{<<“external_port”>> => 3015,<<“port”>> => 3115},<<“websocket”>> => #{<<“channel”>> => #{<<“port”>> => 3014}}}
19:55:55.296 [info] aeu_env:read_config()-> ok
19:55:55.296 [info] Setup phase 110
19:55:55.296 [info] aec_peers:check_env()-> ok
19:55:55.297 [info] aecore_app:check_env()-> ok
19:55:55.297 [info] aehttp_app:check_env()-> ok
19:55:55.297 [info] aec_hard_forks:check_env()-> ok
19:55:55.297 [info] Setup phase 200
19:55:55.302 [info] Application rocksdb started on node epoch@localhost
19:55:55.302 [info] Application mnesia_rocksdb started on node epoch@localhost
19:55:55.352 [info] Starting aevm
19:55:55.362 [info] Starting aecore node
19:55:55.937 [info] Initializing keys manager
19:55:55.955 [info] aec_peers started for “pp_26iRESx…NYgL87K”
19:55:56.014 [warning] lager_error_logger_h dropped 115 messages in the last second that exceeded the limit of 50 messages/sec
19:55:56.545 [info] TX-pool synchronization (outgoing) started towards “pp_2KWhoNR…UHnPQc3”
19:55:56.569 [info] Peer “pp_zLwJf49…bMi5NqU” - ignoring peer address changed from 119.254.164.105:3015 to 119.254.164.102:3015 by 35.177.192.219
19:55:57.003 [info] TX-pool sync requries getting 0 TXs
19:55:57.019 [warning] lager_error_logger_h dropped 81 messages in the last second that exceeded the limit of 50 messages/sec
19:55:57.133 [info] TX-pool sync added 0 TXs
19:55:57.262 [info] TX-pool synchronization finished!
19:56:00.799 [info] Peer “pp_3m8HAqZ…BaiP6ad” - ignoring peer address changed from 14.221.236.216:3015 to 14.221.236.240:3015 by 3.0.217.255
19:56:12.183 [info] Peer “pp_25rGZS2…3cYHW4k” - ignoring peer address changed from 14.221.236.216:3015 to 14.221.236.240:3015 by 35.163.118.175
19:56:20.595 [info] Peer “pp_n5q1ZdQ…hnTRB4b” - ignoring peer address changed from 116.231.29.9:5015 to 116.231.29.9:4015 by 18.130.106.60

Does that mean its syncing.

Hello,

I have followed the guide for installing multiple GPU for mining. When I run my node it show it sync done.


But my nvidia-smi shows the following and it is not mining

I am using 3 1060 3GB Nvidia GPU’s

Will some one help…

Hello,

My nvidia-smi output is below. Can some one help?

According to the multigpu guide it shows under processes as ./cuda29-multi but for me it just shows ./cuda29 and I do not know the status of the mining. Can some one help to resolve this issue?
Here is the epoch-yaml file screenshot

Do I need to make any changes

The mining effort is logged in log/epoch_mining.log and log/epoch_pow_cuckoo.log check those files to see what is going on.

1 Like

Hello, sir! My “epoch_pow_cuckoo.log” looks like this:

2018-11-30 21:11:40.983 [debug] <0.16751.6>@aec_pow_cuckoo:parse_generation_result:479 GeForce GTX 1060 6GB with 6078MB @ 192 bits x 4004MHz
2018-11-30 21:11:40.993 [debug] <0.16753.6>@aec_pow_cuckoo:parse_generation_result:479 GeForce GTX 1060 6GB with 6078MB @ 192 bits x 4004MHz
2018-11-30 21:11:40.993 [debug] <0.16751.6>@aec_pow_cuckoo:parse_generation_result:479 Looking for 42-cycle on cuckoo30(“EyNnYRJCRZURHqtZ1zqRPy3ky+z+0F+vMG1qZUAGfZs=hP5DqCMA0dA=”,0) with 50% edges, 6464 buckets, 176 trims, and 64 thread blocks.
2018-11-30 21:11:40.993 [debug] <0.16753.6>@aec_pow_cuckoo:parse_generation_result:479 Looking for 42-cycle on cuckoo30(“EyNnYRJCRZURHqtZ1zqRPy3ky+z+0F+vMG1qZUAGfZs=hv5DqCMA0dA=”,0) with 50% edges, 64
64 buckets, 176 trims, and 64 thread blocks.
2018-11-30 21:11:41.143 [error] <0.16755.6>@aec_pow_cuckoo:wait_for_result:421 OS process died: {status,30}
2018-11-30 21:11:41.148 [error] <0.16750.6>@aec_pow_cuckoo:wait_for_result:421 OS process died: {status,30}
2018-11-30 21:11:41.148 [error] <0.16754.6>@aec_pow_cuckoo:wait_for_result:421 OS process died: {status,30}
2018-11-30 21:11:41.153 [error] <0.16752.6>@aec_pow_cuckoo:wait_for_result:421 OS process died: {status,30}
2018-11-30 21:11:41.153 [error] <0.16751.6>@aec_pow_cuckoo:wait_for_result:421 OS process died: {status,30}
2018-11-30 21:11:41.201 [error] <0.16753.6>@aec_pow_cuckoo:wait_for_result:421 OS process died: {status,30}
2018-11-30 21:11:41.230 [debug] <0.16763.6>@aec_pow_cuckoo:generate:79 Generating solution for data hash <<19,35,103,97,18,66,69,149,17,30,171,89,215,58,145,63,45,228,203,236,254,208,95,175,48,109,106,101,64,6,125,155>> and nonce 15046807983168421513 with target 520715587.
2018-11-30 21:11:41.231 [info] <0.16767.6>@aec_pow_cuckoo:generate_int_:214 Executing cmd: “./cuda29 -h 45794E6E59524A43525A55524871745A317A71525079336B792B7A2B30462B764D4731715A554147665A733D6A50354471434D413064413D -d 3”
2018-11-30 21:11:41.231 [info] <0.16764.6>@aec_pow_cuckoo:generate_int_:214 Executing cmd: “./cuda29 -h 45794E6E59524A43525A55524871745A317A71525079336B792B7A2B30462B764D4731715A554147665A733D6966354471434D413064413D -d 0”
2018-11-30 21:11:41.231 [info] <0.16765.6>@aec_pow_cuckoo:generate_int_:214 Executing cmd: “./cuda29 -h 45794E6E59524A43525A55524871745A317A71525079336B792B7A2B30462B764D4731715A554147665A733D6976354471434D413064413D -d 1”
2018-11-30 21:11:41.231 [info] <0.16768.6>@aec_pow_cuckoo:generate_int_:214 Executing cmd: “./cuda29 -h 45794E6E59524A43525A55524871745A317A71525079336B792B7A2B30462B764D4731715A554147665A733D6A66354471434D413064413D -d 4”
2018-11-30 21:11:41.231 [info] <0.16766.6>@aec_pow_cuckoo:generate_int_:214 Executing cmd: “./cuda29 -h 45794E6E59524A43525A55524871745A317A71525079336B792B7A2B30462B764D4731715A554147665A733D692F354471434D413064413D -d 2”
2018-11-30 21:11:41.231 [info] <0.16769.6>@aec_pow_cuckoo:generate_int_:214 Executing cmd: “./cuda29 -h 45794E6E59524A43525A55524871745A317A71525079336B792B7A2B30462B764D4731715A554147665A733D6A76354471434D413064413D -d 5”
2018-11-30 21:11:42.563 [error] <0.16768.6>@aec_pow_cuckoo:wait_for_result:406 ERROR: GPUassert: unknown error mean.cu 369

2018-11-30 21:11:42.573 [debug] <0.16768.6>@aec_pow_cuckoo:parse_generation_result:479 GeForce GTX 1060 6GB with 6078MB @ 192 bits x 4004MHz
2018-11-30 21:11:42.574 [debug] <0.16768.6>@aec_pow_cuckoo:parse_generation_result:479 Looking for 42-cycle on cuckoo30(“EyNnYRJCRZURHqtZ1zqRPy3ky+z+0F+vMG1qZUAGfZs=jf5DqCMA0dA=”,0) with 50% edges, 64*64 buckets, 176 trims, and 64 thread blocks.
2018-11-30 21:11:42.609 [error] <0.16767.6>@aec_pow_cuckoo:wait_for_result:406 ERROR: GPUassert: unknown error mean.cu 369

The sync of my epoch looks normal, but the load on the GPU is very low,only 15watt/per card. After checking the LOG file, I got the above content. Where is the configuration wrong? Please help me, thank you