Blame view

stim/cuda/cudatools/devices.h 1.61 KB
a9275be5   David Mayerich   added vector fiel...
1
2
3
4
5
  #ifndef RTS_CUDA_DEVICES
  #define RTS_CUDA_DEVICES
  
  #include <cuda.h>
  
8a86bd56   David Mayerich   changed rts names...
6
  namespace stim{
2a10ecf4   David Mayerich   updated files and...
7
8
9
10
11
12
13
14
  	extern "C"
  	int maxThreadsPerBlock(){
  		int device;
  		cudaGetDevice(&device);		//get the id of the current device
  		cudaDeviceProp props;		//device property structure
  		cudaGetDeviceProperties(&props, device);
  		return props.maxThreadsPerBlock;
  	}
f186dbda   Tianshu Cheng   header file for b...
15
  
2a10ecf4   David Mayerich   updated files and...
16
17
18
19
20
21
22
23
  	extern "C"
  	size_t sharedMemPerBlock(){
  		int device;
  		cudaGetDevice(&device);		//get the id of the current device
  		cudaDeviceProp props;		//device property structure
  		cudaGetDeviceProperties(&props, device);
  		return props.sharedMemPerBlock;
  	}
8e4f8364   David Mayerich   started a new opt...
24
  
2a10ecf4   David Mayerich   updated files and...
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  	extern "C"
  	size_t constMem(){
  		int device;
  		cudaGetDevice(&device);		//get the id of the current device
  		cudaDeviceProp props;		//device property structure
  		cudaGetDeviceProperties(&props, device);
  		return props.totalConstMem;
  	}
  
  	//tests that a given device ID is valid and provides at least the specified compute capability
  	bool testDevice(int d, int major, int minor){
  		int nd;
  		cudaGetDeviceCount(&nd);		//get the number of CUDA devices
  		if(d < nd && d > 0)	{		//if the given ID has an associated device
  			cudaDeviceProp props;
  			cudaGetDeviceProperties(&props, d);	//get the device properties structure
  			if(props.major >= major && props.minor >= minor)
  					return true;
  		}
  		return false;
  	}
  
  	//tests each device ID in a list and returns the number of devices that fit the desired
  	//	compute capability
  	int testDevices(int* dlist, unsigned n_devices, int major, int minor){
  		int valid = 0;
  		for(int d = 0; d < n_devices; d++){
  			if(testDevice(dlist[d], major, minor))
  				valid++;
  		}
  		return valid;
  	}
a9275be5   David Mayerich   added vector fiel...
57
58
  }	//end namespace rts
  
8a86bd56   David Mayerich   changed rts names...
59
  #endif