Repository navigation
how to config when you have multiple GPUs ? #281
|
hello everyone, I have two GPU's. in the json for openCL I have: |
Replies: 7 comments 13 replies
|
"producerOpenCL": [
{
"platformIndex": 0,
"deviceType": -1,
"deviceIndex": 0,
...
},
{
"platformIndex": 0,
"deviceType": -1,
"deviceIndex": 1,
...
}
]Each entry runs as its own independent producer, so both GPUs work in parallel. The likely reason your earlier attempts didn't work: To find the correct indices for your system: run
|
|
The Step 1 — find your platform/device indices Run the tool with Step 2 — define one key producer per GPU Each Step 3 — add a second entry to {
"command": "Find",
"finder": {
"keyProducerJavaRandom": [
{
"keyProducerId": "gpu0_keys",
"randomAlgorithm": "SECURE_RANDOM",
"customSeed": 0,
"privateKeyMaxNumBits": 256
},
{
"keyProducerId": "gpu1_keys",
"randomAlgorithm": "SECURE_RANDOM",
"customSeed": 0,
"privateKeyMaxNumBits": 256
}
],
"consumerJava": {
"lmdbConfigurationReadOnly": {
"lmdbDirectory": "lmdb",
"useProxyOptimal": true,
"logStatsOnInit": true,
"logStatsOnClose": false,
"addressLookupBackend": "LMDB_ONLY",
"disableAddressLookup": false
},
"printStatisticsEveryNSeconds": 10,
"threads": 8,
"queuePollTimeoutMillis": 50,
"queueSize": 8,
"awaitQueueEmptySeconds": 60,
"runtimePublicKeyCalculationCheck": false,
"enableVanity": false,
"vanityPattern": "1[Ee][Mm][Ii][Ll].*"
},
"awaitTerminateSeconds": 31536000000,
"producerJava": [],
"producerJavaSecretsFiles": [],
"producerOpenCL": [
{
"platformIndex": 0,
"deviceType": -1,
"deviceIndex": 0,
"maxResultReaderThreads": 4,
"keyProducerId": "gpu0_keys",
"batchSizeInBits": 18,
"keysPerWorkItem": 16,
"batchUsePrivateKeyIncrement": true,
"logSecretBase": false,
"runOnce": false,
"shutdownTimeoutSeconds": 300,
"enableGpuFilter": true,
"transferAll": false,
"useSafeGcdInverse": true
},
{
"platformIndex": 0,
"deviceType": -1,
"deviceIndex": 1,
"maxResultReaderThreads": 4,
"keyProducerId": "gpu1_keys",
"batchSizeInBits": 18,
"keysPerWorkItem": 16,
"batchUsePrivateKeyIncrement": true,
"logSecretBase": false,
"runOnce": false,
"shutdownTimeoutSeconds": 300,
"enableGpuFilter": true,
"transferAll": false,
"useSafeGcdInverse": true
}
]
}
}Key points:
|
|
log_TuneConfigurationIntelArcPro.txt |
|
register_machine text: (dry run — nothing written) |
|
I think the extended values might be pushing it. |
|
@Andrewp9 — on the third Arc sweep, and then a question about whether you would like to try the fixed build yourself. Your instinct was half right, and the other half is our bugYou are right that there is nothing above 2048. At the two batch sizes that completed, throughput falls off monotonically as So 2048 really is the end of the useful range on this device. Question settled — and settled by measurement, which is exactly why it was worth running. But the
The arms at 18 and 19 reproduce to within about 1 %, so your machine and your setup are demonstrably fine. Yet every arm from A device does not run out of host memory at a grid size it handled comfortably minutes before. What actually happened is visible one line above the wall: the Nothing changes for you. Your run-2 result stands unchanged: Would you like to build the fixed version yourself?No pressure at all — if you would rather wait, I will put a build on GitHub shortly and you can just download it. But if you are up for it, it is genuinely short. You need JDK 21 or newer (you already have 26) and Maven 3.6.3+; there is no wrapper script in the repo, so Maven has to be installed. git clone -b claude/statistics-keys-per-producer https://github.com/bernardladenthin/BitcoinAddressFinder.git
cd BitcoinAddressFinder
mvn package -P assembly -DskipTests
The result lands in That branch is where everything from this thread lives, and it will land on
The Either way, thanks again for the third run. It answered the open question and found a bug while doing it. |
|
@Andrewp9 Quick follow-up: the bug your third log exposed is fixed, and everything from this thread is now on the Your Still open, and honestly not something I can fix from a log: why your Arc stays wedged after that first error, so that grids which measured fine an hour earlier then fail too. That looks like device or driver state. What changed is that the sweep no longer hides the arm that triggered it. So if you do build that branch, you get this fix as well as everything listed in my previous comment. Thanks again for the log — it was the only reason this was findable. |
producerOpenCLis a JSON array. Eeach element is one device's own config (you can see this in your own snippet, since it opens with[). To use both GPUs, don't edit the existing entry... add a second object alongside it:Each entry runs as its own independent producer, so both GPUs work in parallel.
The likely reason your earlier attempts didn't work:
deviceIndexis scoped per platform, not global across all GPUs in the system. If both your GPUs are the same vendor (e.g. two NVIDIA cards), they're alm…