#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>

/*
    size_t ipt = (algorithm->n / cgpu->lookup_gap +
              (algorithm->n % cgpu->lookup_gap > 0));
    size_t bufsize = 128 * ipt * cgpu->thread_concurrency;
*/

#define NFACT 1024


int main(int argc, char **argv){
	uint32_t ipt;
	uint32_t lg;
	float margin = 0.85;
	uint32_t buf = 536870912*margin;
	uint32_t tc;
	uint32_t intensity;
	uint32_t worksize = 256;
	uint32_t num1;
	uint64_t max = 34359738368;

//calculate tc for lg 1-8
    printf("bufsize: %u\n", buf);
    for(num1=1; num1<9; num1++){
        lg = num1;
        ipt = NFACT/lg + (NFACT % lg > 0);
        tc = buf/(ipt*128);
        intensity = max/tc;
		intensity -= intensity%worksize;
        printf("\tlg: %u tc: %u int: %u\n", lg, tc, intensity);
    }

buf = 1073741824*margin;
	printf("bufsize: %u\n", buf);
	for(num1=1; num1<9; num1++){
		lg = num1;
		ipt = NFACT/lg + (NFACT % lg > 0);
		tc = buf/(ipt*128);
		intensity = max/tc;
		intensity -= intensity%worksize;
		printf("\tlg: %u tc: %u int: %u\n", lg, tc, intensity);
	}
buf = 2147483648*margin;
    printf("bufsize: %u\n", buf);
    for(num1=1; num1<9; num1++){
        lg = num1;
        ipt = NFACT/lg + (NFACT % lg > 0);
        tc = buf/(ipt*128);
		intensity = max/tc;
		intensity -= intensity%worksize;
        printf("\tlg: %u tc: %u int: %u\n", lg, tc, intensity);
    }


	return 0;
}