GPUMLib  0.2.2
GPU Machine Learning Library
Utilities.h
1 /*
2  Noel Lopes is an Assistant Professor at the Polytechnic Institute of Guarda, Portugal
3  Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Noel de Jesus Mendonša Lopes
4 
5  This file is part of GPUMLib.
6 
7  GPUMLib is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 #ifndef GPUMLib_Utilities_h
22 #define GPUMLib_Utilities_h
23 
24 #include "CudaDefinitions.h"
25 #include "../memory/HostArray.h"
26 
27 namespace GPUMLib {
28 
31 
37 inline int NumberThreadsPerBlockThatBestFit(int threads, int maxThreadsPerBlock = MAX_THREADS_PER_BLOCK) {
38  int nt = 1;
39  while(nt < threads && nt < maxThreadsPerBlock) nt <<= 1;
40 
41  return nt;
42 }
43 
49 inline int NumberBlocks(int threads, int blockSize) {
50  int nb = threads / blockSize;
51 
52  if (threads % blockSize != 0) nb++;
53 
54  return nb;
55 }
56 
58 
59 }
60 
61 #endif
int NumberThreadsPerBlockThatBestFit(int threads, int maxThreadsPerBlock=MAX_THREADS_PER_BLOCK)
Definition: Utilities.h:37
int NumberBlocks(int threads, int blockSize)
Definition: Utilities.h:49
#define MAX_THREADS_PER_BLOCK
Defines the maximum threads per block.