LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
CudaSelectGpu.h
Go to the documentation of this file.
1 // -*- LSST-C++ -*-
2 
3 /*
4  * LSST Data Management System
5  * Copyright 2008, 2009, 2010 LSST Corporation.
6  *
7  * This product includes software developed by the
8  * LSST Project (http://www.lsst.org/).
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the LSST License Statement and
21  * the GNU General Public License along with this program. If not,
22  * see <http://www.lsstcorp.org/LegalNotices/>.
23  */
24 
38 namespace lsst {
39 namespace afw {
40 namespace gpu {
41 namespace detail {
42 
43 
45 void SetCudaDevice(int devId);
46 
48 void CudaReserveDevice();
49 
51 void CudaThreadExit();
52 
53 // gets the preferred cuda device id from a CUDA_DEVICE environment variable
54 // if the CUDA_DEVICE environment variable is not set, returns -2 (preferred device not specified)
56 
57 // returns true when preffered device has been selected
58 // returns false when preffered device is not specified
59 // throws exception when unable to select the preffered device
61 
62 // If cuda device is already selected and reserved, does nothing
63 // otherwise, attempts to select the best available GPU
64 // throws exception when automatic selection fails
66 
67 // verifies basic parameters of selected cuda device
68 // throws exceptions when the selected GPU is not 'good enough'
69 // Intention was mainly to guard against integrated GPUs or very old GPUs
70 void VerifyCudaDevice();
71 
72 // Tries to select a cuda device, but only the first time this function is called.
73 // All subsequent calls will return the previous result.
74 // To select again, set reselect to true.
75 // Attempts to use the preferred device.
76 // If a preferred device is not specified, it attempts to auto-select.
77 // Finally, it verifies the selected cuda device.
78 // returns true if gpu device was sucesssfully selected at this call or at a previous call
79 // returns false if gpu device selection failed at this call or at a previous call
80 // Throws exceptions if device selection fails due to any reason (only on a first call or on reselect)
81 // When noExceptions is set to true, no exceptions will be thrown.
82 bool TryToSelectCudaDevice(bool noExceptions, bool reselect=false);
83 
84 
85 }}}} //namespace lsst::afw::math::detail::gpu ends
86 
bool TryToSelectCudaDevice(bool noExceptions, bool reselect=false)
void SetCudaDevice(int devId)
selects a cuda device
void CudaThreadExit()
frees resources and releases current cuda device
void CudaReserveDevice()
reserves cuda device