/*************************************************************************** *cr *cr (C) Copyright 2010 The Board of Trustees of the *cr University of Illinois *cr All Rights Reserved *cr ***************************************************************************/ //#include #include #include #include #include #include "gpu_info.h" void compute_active_thread(size_t *thread, size_t *grid, int task, int pad, int major, int minor, int sm) { int max_thread; int max_block=8; if(major==1) { if(minor>=2) max_thread=1024; else max_thread=768; } else if(major==2) max_thread=1536; else //newer GPU //keep using 2.0 max_thread=1536; int _grid; int _thread; if(task*pad>sm*max_thread) { _thread=max_thread/max_block; _grid = ((task*pad+_thread-1)/_thread)*_thread; } else { _thread=pad; _grid=task*pad; } thread[0]=_thread; grid[0]=_grid; }