mirror of
https://github.com/GOSTSec/sgminer
synced 2025-02-10 22:14:18 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
473865db50
14
README
14
README
@ -920,7 +920,8 @@ Q: Which AMD driver is the best?
|
|||||||
A: Unfortunately AMD has a history of having quite a few releases with issues
|
A: Unfortunately AMD has a history of having quite a few releases with issues
|
||||||
when it comes to mining, either in terms of breaking mining, increasing CPU
|
when it comes to mining, either in terms of breaking mining, increasing CPU
|
||||||
usage or very low hashrates. Only experimentation can tell you for sure, but
|
usage or very low hashrates. Only experimentation can tell you for sure, but
|
||||||
some good releases were 11.6, 11.12, 12.4 and 12.8
|
some good releases were 11.6, 11.12, 12.4 and 12.8. Note that older cards may
|
||||||
|
not work with the newer drivers.
|
||||||
|
|
||||||
Q: I have multiple SDKs installed, can I choose which one it uses?
|
Q: I have multiple SDKs installed, can I choose which one it uses?
|
||||||
A: Run cgminer with the -n option and it will list all the platforms currently
|
A: Run cgminer with the -n option and it will list all the platforms currently
|
||||||
@ -959,6 +960,14 @@ their various features. Linux offers much better long term stability and
|
|||||||
remote monitoring and security, while windows offers you overclocking tools
|
remote monitoring and security, while windows offers you overclocking tools
|
||||||
that can achieve much more than cgminer can do on linux.
|
that can achieve much more than cgminer can do on linux.
|
||||||
|
|
||||||
|
Q: Can I mine with cgminer on a MAC?
|
||||||
|
A: cgminer will compile on OSX, but the performance of GPU mining is
|
||||||
|
compromised due to the opencl implementation on OSX, there is no temperature
|
||||||
|
or fanspeed monitoring, and the cooling design of most MACs, despite having
|
||||||
|
powerful GPUs, will usually not cope with constant usage leading to a high
|
||||||
|
risk of thermal damage. It is highly recommended not to mine on a MAC unless
|
||||||
|
it is to a USB device.
|
||||||
|
|
||||||
Q: Cgminer cannot see any of my GPUs even though I have configured them all
|
Q: Cgminer cannot see any of my GPUs even though I have configured them all
|
||||||
to be enabled and installed OpenCL (+/- Xorg is running and the DISPLAY
|
to be enabled and installed OpenCL (+/- Xorg is running and the DISPLAY
|
||||||
variable is exported on linux)?
|
variable is exported on linux)?
|
||||||
@ -1048,7 +1057,8 @@ you are running. However if you change SDKs you should delete any generated
|
|||||||
|
|
||||||
Q: I switch users on windows and my mining stops working?
|
Q: I switch users on windows and my mining stops working?
|
||||||
A: That's correct, it does. It's a permissions issue that there is no known
|
A: That's correct, it does. It's a permissions issue that there is no known
|
||||||
fix for.
|
fix for due to monitoring of GPU fanspeeds and temperatures. If you disable
|
||||||
|
the monitoring with --no-adl it should switch okay.
|
||||||
|
|
||||||
Q: My network gets slower and slower and then dies for a minute?
|
Q: My network gets slower and slower and then dies for a minute?
|
||||||
A; Try the --net-delay option.
|
A; Try the --net-delay option.
|
||||||
|
10
cgminer.c
10
cgminer.c
@ -3648,6 +3648,7 @@ static int block_sort(struct block *blocka, struct block *blockb)
|
|||||||
static void set_blockdiff(const struct work *work)
|
static void set_blockdiff(const struct work *work)
|
||||||
{
|
{
|
||||||
uint64_t *data64, d64, diff64;
|
uint64_t *data64, d64, diff64;
|
||||||
|
double previous_diff;
|
||||||
uint32_t diffhash[8];
|
uint32_t diffhash[8];
|
||||||
uint32_t difficulty;
|
uint32_t difficulty;
|
||||||
uint32_t diffbytes;
|
uint32_t diffbytes;
|
||||||
@ -3683,9 +3684,12 @@ static void set_blockdiff(const struct work *work)
|
|||||||
if (unlikely(!d64))
|
if (unlikely(!d64))
|
||||||
d64 = 1;
|
d64 = 1;
|
||||||
|
|
||||||
|
previous_diff = current_diff;
|
||||||
diff64 = diffone / d64;
|
diff64 = diffone / d64;
|
||||||
suffix_string(diff64, block_diff, 0);
|
suffix_string(diff64, block_diff, 0);
|
||||||
current_diff = (double)diffone / (double)d64;
|
current_diff = (double)diffone / (double)d64;
|
||||||
|
if (unlikely(current_diff != previous_diff))
|
||||||
|
applog(LOG_NOTICE, "Network diff set to %s", block_diff);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool test_work_current(struct work *work)
|
static bool test_work_current(struct work *work)
|
||||||
@ -5910,13 +5914,13 @@ void hash_queued_work(struct thr_info *mythr)
|
|||||||
memcpy(&tv_start, &tv_end, sizeof(struct timeval));
|
memcpy(&tv_start, &tv_end, sizeof(struct timeval));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (unlikely(mythr->pause || cgpu->deven != DEV_ENABLED))
|
||||||
|
mt_disable(mythr, thr_id, drv);
|
||||||
|
|
||||||
if (unlikely(mythr->work_restart)) {
|
if (unlikely(mythr->work_restart)) {
|
||||||
flush_queue(cgpu);
|
flush_queue(cgpu);
|
||||||
drv->flush_work(cgpu);
|
drv->flush_work(cgpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unlikely(mythr->pause || cgpu->deven != DEV_ENABLED))
|
|
||||||
mt_disable(mythr, thr_id, drv);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -929,22 +929,21 @@ static int64_t avalon_scanhash(struct thr_info *thr)
|
|||||||
elapsed.tv_sec, elapsed.tv_usec);
|
elapsed.tv_sec, elapsed.tv_usec);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (hash_count) {
|
if (hash_count && avalon->results < AVALON_ARRAY_SIZE)
|
||||||
if (avalon->results < AVALON_ARRAY_SIZE)
|
avalon->results++;
|
||||||
avalon->results++;
|
if (unlikely((result_wrong >= avalon_get_work_count) ||
|
||||||
} else if (unlikely((result_wrong >= avalon_get_work_count ) ||
|
(!hash_count && ret != AVA_GETS_RESTART && --avalon->results < 0))) {
|
||||||
(ret != AVA_GETS_RESTART && --avalon->results < 0))) {
|
/* Look for all invalid results, or consecutive failure
|
||||||
/* Look for all invalid results, or consecutive failure
|
* to generate any results suggesting the FPGA
|
||||||
* to generate any results suggesting the FPGA
|
* controller has screwed up. */
|
||||||
* controller has screwed up. */
|
do_avalon_close(thr);
|
||||||
do_avalon_close(thr);
|
applog(LOG_ERR,
|
||||||
applog(LOG_ERR,
|
"AVA%i: FPGA controller messed up, %d wrong results",
|
||||||
"AVA%i: FPGA controller messed up, %d wrong results",
|
avalon->device_id, result_wrong);
|
||||||
avalon->device_id, result_wrong);
|
dev_error(avalon, REASON_DEV_COMMS_ERROR);
|
||||||
dev_error(avalon, REASON_DEV_COMMS_ERROR);
|
sleep(1);
|
||||||
sleep(1);
|
avalon_init(avalon);
|
||||||
avalon_init(avalon);
|
return 0;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
avalon_rotate_array(avalon);
|
avalon_rotate_array(avalon);
|
||||||
|
3
ocl.c
3
ocl.c
@ -121,7 +121,7 @@ int clDevicesNum(void) {
|
|||||||
applog(LOG_INFO, "CL Platform %d version: %s", i, pbuff);
|
applog(LOG_INFO, "CL Platform %d version: %s", i, pbuff);
|
||||||
status = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 0, NULL, &numDevices);
|
status = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 0, NULL, &numDevices);
|
||||||
if (status != CL_SUCCESS) {
|
if (status != CL_SUCCESS) {
|
||||||
applog(LOG_ERR, "Error %d: Getting Device IDs (num)", status);
|
applog(LOG_INFO, "Error %d: Getting Device IDs (num)", status);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
applog(LOG_INFO, "Platform %d devices: %d", i, numDevices);
|
applog(LOG_INFO, "Platform %d devices: %d", i, numDevices);
|
||||||
@ -131,7 +131,6 @@ int clDevicesNum(void) {
|
|||||||
}
|
}
|
||||||
if (numDevices) {
|
if (numDevices) {
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
char pbuff[256];
|
|
||||||
cl_device_id *devices = (cl_device_id *)malloc(numDevices*sizeof(cl_device_id));
|
cl_device_id *devices = (cl_device_id *)malloc(numDevices*sizeof(cl_device_id));
|
||||||
|
|
||||||
clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, numDevices, devices, NULL);
|
clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, numDevices, devices, NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user