1*da0073e9SAndroid Build Coastguard Worker /** 2*da0073e9SAndroid Build Coastguard Worker * Copyright (c) 2016-present, Facebook, Inc. 3*da0073e9SAndroid Build Coastguard Worker * 4*da0073e9SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*da0073e9SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*da0073e9SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*da0073e9SAndroid Build Coastguard Worker * 8*da0073e9SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*da0073e9SAndroid Build Coastguard Worker * 10*da0073e9SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*da0073e9SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*da0073e9SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*da0073e9SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*da0073e9SAndroid Build Coastguard Worker * limitations under the License. 15*da0073e9SAndroid Build Coastguard Worker */ 16*da0073e9SAndroid Build Coastguard Worker 17*da0073e9SAndroid Build Coastguard Worker #include <cuda_runtime.h> 18*da0073e9SAndroid Build Coastguard Worker 19*da0073e9SAndroid Build Coastguard Worker #include <sstream> 20*da0073e9SAndroid Build Coastguard Worker #include <vector> 21*da0073e9SAndroid Build Coastguard Worker 22*da0073e9SAndroid Build Coastguard Worker #include "c10/util/Flags.h" 23*da0073e9SAndroid Build Coastguard Worker #include "caffe2/core/common_gpu.h" 24*da0073e9SAndroid Build Coastguard Worker #include "caffe2/core/init.h" 25*da0073e9SAndroid Build Coastguard Worker #include "caffe2/core/logging.h" 26*da0073e9SAndroid Build Coastguard Worker 27*da0073e9SAndroid Build Coastguard Worker using std::vector; 28*da0073e9SAndroid Build Coastguard Worker 29*da0073e9SAndroid Build Coastguard Worker C10_DECLARE_int(caffe2_log_level); 30*da0073e9SAndroid Build Coastguard Worker main(int argc,char ** argv)31*da0073e9SAndroid Build Coastguard Workerint main(int argc, char** argv) { 32*da0073e9SAndroid Build Coastguard Worker caffe2::GlobalInit(&argc, &argv); 33*da0073e9SAndroid Build Coastguard Worker c10::SetUsageMessage( 34*da0073e9SAndroid Build Coastguard Worker "Inspects the GPUs on the current machine and prints out their details " 35*da0073e9SAndroid Build Coastguard Worker "provided by cuda."); 36*da0073e9SAndroid Build Coastguard Worker 37*da0073e9SAndroid Build Coastguard Worker int gpu_count; 38*da0073e9SAndroid Build Coastguard Worker CUDA_ENFORCE(cudaGetDeviceCount(&gpu_count)); 39*da0073e9SAndroid Build Coastguard Worker for (int i = 0; i < gpu_count; ++i) { 40*da0073e9SAndroid Build Coastguard Worker LOG(INFO) << "Querying device ID = " << i; 41*da0073e9SAndroid Build Coastguard Worker caffe2::DeviceQuery(i); 42*da0073e9SAndroid Build Coastguard Worker } 43*da0073e9SAndroid Build Coastguard Worker 44*da0073e9SAndroid Build Coastguard Worker vector<vector<bool> > access_pattern; 45*da0073e9SAndroid Build Coastguard Worker CAFFE_ENFORCE(caffe2::GetCudaPeerAccessPattern(&access_pattern)); 46*da0073e9SAndroid Build Coastguard Worker 47*da0073e9SAndroid Build Coastguard Worker std::stringstream sstream; 48*da0073e9SAndroid Build Coastguard Worker // Find topology 49*da0073e9SAndroid Build Coastguard Worker for (int i = 0; i < gpu_count; ++i) { 50*da0073e9SAndroid Build Coastguard Worker for (int j = 0; j < gpu_count; ++j) { 51*da0073e9SAndroid Build Coastguard Worker sstream << (access_pattern[i][j] ? "+" : "-") << " "; 52*da0073e9SAndroid Build Coastguard Worker } 53*da0073e9SAndroid Build Coastguard Worker sstream << std::endl; 54*da0073e9SAndroid Build Coastguard Worker } 55*da0073e9SAndroid Build Coastguard Worker LOG(INFO) << "Access pattern: " << std::endl << sstream.str(); 56*da0073e9SAndroid Build Coastguard Worker 57*da0073e9SAndroid Build Coastguard Worker return 0; 58*da0073e9SAndroid Build Coastguard Worker } 59