how do I know how many streaming multiprocessors(SM) I have on my GTS 250?
You can Download the SDK and run deviceQuery
Device 0: "Tesla S2050" CUDA Driver Version: 3.10 CUDA Runtime Version: 3.10 CUDA Capability Major/Minor version number: 2.0 Total amount of global memory: 2817982464 bytes
And see this line:
Multiprocessors x Cores/MP = Cores: 14 (MP) x 32 (Cores/MP) = 448 (Cores)
Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 49152 bytes Total number of registers available per block: 32768 Warp size: 32 Maximum number of threads per block: 1024 Maximum sizes of each dimension of a block: 1024 x 1024 x 64 Maximum sizes of each dimension of a grid: 65535 x 65535 x 1 Maximum memory pitch: 2147483647 bytes Texture alignment: 512 bytes Clock rate: 1.15 GHz Concurrent copy and execution: Yes Run time limit on kernels: No Integrated: No Support host page-locked memory mapping: Yes Compute mode: Default (multiple host threads can use this device simultaneously) Concurrent kernel execution: Yes Device has ECC support enabled: Yes deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 3.10, CUDA Runtime Version = 3.10, NumDevs = 1, Device = Tesla S2050
The GTS 250 has 16 SMs and 8 cores per SM for a total of 128 CUDA cores. This wikipedia page has core counts for all GeForce devices. For GT200 series processors dividing the number of cores by 8 gives you the number of SMs.