Skip to content
Snippets Groups Projects
Select Git revision
  • 1b509e0836bc80765032d6b5d134090b93698939
  • master default protected
2 results

test_pykat_gui.py

Blame
  • gpu_detect.cpp 14.17 KiB
    // This file is part of BOINC.
    // http://boinc.berkeley.edu
    // Copyright (C) 2009 University of California
    //
    // BOINC is free software; you can redistribute it and/or modify it
    // under the terms of the GNU Lesser General Public License
    // as published by the Free Software Foundation,
    // either version 3 of the License, or (at your option) any later version.
    //
    // BOINC is distributed in the hope that it will be useful,
    // but WITHOUT ANY WARRANTY; without even the implied warranty of
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    // See the GNU Lesser General Public License for more details.
    //
    // You should have received a copy of the GNU Lesser General Public License
    // along with BOINC.  If not, see <http://www.gnu.org/licenses/>.
    
    
    // client-specific GPU code.  Mostly GPU detection
    
    #define USE_CHILD_PROCESS_TO_DETECT_GPUS 1
    
    #include "cpp.h"
    
    #ifdef _WIN32
    #include "boinc_win.h"
    #ifdef _MSC_VER
    #define snprintf _snprintf
    #define chdir _chdir
    #endif
    #else
    #include "config.h"
    #include <setjmp.h>
    #include <signal.h>
    #endif
    
    #include "coproc.h"
    #include "file_names.h"
    #include "util.h"
    #include "str_replace.h"
    #include "client_msgs.h"
    
    using std::string;
    using std::vector;
    
    #ifndef _WIN32
    jmp_buf resume;
    
    void segv_handler(int) {
        longjmp(resume, 1);
    }
    #endif
    
    vector<COPROC_ATI> ati_gpus;
    vector<COPROC_NVIDIA> nvidia_gpus;
    vector<COPROC_INTEL> intel_gpus;
    vector<OPENCL_DEVICE_PROP> ati_opencls;
    vector<OPENCL_DEVICE_PROP> nvidia_opencls;
    vector<OPENCL_DEVICE_PROP> intel_gpu_opencls;
    
    static char* client_path;
    static char client_dir[MAXPATHLEN];
    
    void COPROCS::get(
        bool use_all, vector<string>&descs, vector<string>&warnings,
        IGNORE_GPU_INSTANCE& ignore_gpu_instance
    ) {
    #if USE_CHILD_PROCESS_TO_DETECT_GPUS
        int retval = 0;
        char buf[256];