OpenCL GPU miner
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
780 B

#ifndef __OCL_H__
#define __OCL_H__
#include "config.h"
#include <stdbool.h>
#ifdef __APPLE_CC__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif
#include "miner.h"
typedef struct {
cl_context context;
cl_kernel kernel;
cl_command_queue commandQueue;
cl_program program;
cl_mem outputBuffer;
cl_mem CLbuffer0;
cl_mem padbuffer8;
size_t padbufsize;
void * cldata;
bool hasBitAlign;
bool hasOpenCL11plus;
bool hasOpenCL12plus;
bool goffset;
cl_uint vwidth;
size_t max_work_size;
size_t wsize;
EXPERIMENTAL: A new way of setting intensity; introducing xintensity! All of this is credited to ArGee of RGMiner, he did the initial ground work for this setting. This new setting allows for a much finer grained intensity setting and also opens up for dual gpu threads on devices not previously able to. Note: make sure to use lower thread-concurrency values when you increase cpu threads. Intensity is currently used to spawn GPU threads as a simple 2^value setting. I:13 = 8192 threads I:15 = 32768 threads I:17 = 131072 threads I:18 = 262144 threads I:19 = 524288 threads I:20 = 1048576 threads Notice how the higher settings increase thread count tremendously. Now enter the xintensity setting (Yes, I am a genius with my naming convention!). It is simply a shader multiplier, obviously based on the amount of shaders you got on a card, this should allow the same value to scale with different card models. 6970 with 1536 shaders: xI:64 = 98304 threads R9 280X with 2048 shaders: xI:64 = 131072 threads R9 290 with 2560 shaders: xI:64 = 180224 threads R9 290X with 2816 shaders: xI:64 = 163840 threads 6970 with 1536 shaders: xI:300 = 460800 threads R9 280X with 2048 shaders: xI:300 = 614400 threads R9 290 with 2560 shaders: xI:300 = 768000 threads R9 290X with 2816 shaders: xI:300 = 844800 threads It's now much easier to control thread intensity and it potentially allows for a uniform way of setting the intensity on your system. I'm very interested in constructive feedback, as I do not have access to a lot of different card models. This change has been tested on 6970, R9 290, R9 290X - all with equal or a little better speeds than regular intensity setting after a little tuning, but your mileage may vary. Don't fret it, if this doesn't work for you, the regular intensity setting is still available. Conflicts: driver-opencl.c sgminer.c
11 years ago
size_t compute_shaders;
enum cl_kernels chosen_kernel;
} _clState;
extern char *file_contents(const char *filename, int *length);
extern int clDevicesNum(void);
extern _clState *initCl(unsigned int gpu, char *name, size_t nameSize);
#endif /* __OCL_H__ */