10#define ENV_LOCAL_RANK_PALS "PALS_LOCAL_RANKID"
11#define ENV_RANK_PALS "PALS_RANKID"
12#define ENV_LOCAL_RANK_OMPI "OMPI_COMM_WORLD_LOCAL_RANK"
13#define ENV_RANK_OMPI "OMPI_COMM_WORLD_RANK"
14#define ENV_LOCAL_RANK_SLURM "SLURM_LOCALID"
15#define ENV_RANK_SLURM "SLURM_PROCID"
16#define ENV_LOCAL_RANK_MVAPICH "MV2_COMM_WORLD_LOCAL_RANK"
17#define ENV_RANK_MVAPICH "MV2_COMM_WORLD_RANK"
20cudaDeviceProp *gpu_props;
21cudaStream_t copyStream;
22cudaStream_t computeStream;
26 cudaGetDeviceCount(&nDevices);
27 gpu_props =
new cudaDeviceProp[nDevices];
29 char * localRankStr = NULL;
35 int slurm_rank = atoi(localRankStr);
37 std::cout <<
"Both SLURM and OMPI ranks detected and differ - " << slurm_rank <<
" != " <<
world_rank <<
"! Preferring the OMPI rank." << std::endl;
45 std::cout <<
"OPENMPI detected" << std::endl;
46 rank = atoi(localRankStr);
49 std::cout <<
"MVAPICH detected" << std::endl;
50 rank = atoi(localRankStr);
53 std::cout <<
"SLURM detected" << std::endl;
54 rank = atoi(localRankStr);
57 std::cout <<
"MPI version is unknown - bad things may happen" << std::endl;
60 size_t totalDeviceMem=0;
61 for (
int i = 0; i < nDevices; i++) {
63#define GPU_PROP_FMT(__name__,__value__) std::cout << "AcceleratorCudaInit[" << rank << "]: " #__name__ ": " << __value__ << std::endl;
64#define GPU_PROP(__name__) GPU_PROP_FMT(__name__, prop.__name__);
65 cudaGetDeviceProperties(&gpu_props[i], i);
68 totalDeviceMem = prop.totalGlobalMem;
71 std::cout <<
"AcceleratorCudaInit[" << rank <<
"]: ========================" << std::endl;
72 GPU_PROP_FMT(Device Number, i);
73 std::cout <<
"AcceleratorCudaInit[" << rank <<
"]: ========================" << std::endl;
74 GPU_PROP_FMT(Device identifier, prop.name);
76 GPU_PROP(totalGlobalMem);
77 GPU_PROP(managedMemory);
78 GPU_PROP(isMultiGpuBoard);
81 GPU_PROP(pciDeviceID);
82 std::cout <<
"AcceleratorCudaInit[" << rank <<
"]: maxGridSize (" << prop.maxGridSize[0] <<
"," << prop.maxGridSize[1] <<
"," << prop.maxGridSize[2] <<
")" << std::endl;
94#ifdef GRID_DEFAULT_GPU
98 std::cout <<
"AcceleratorCudaInit: using default device" << std::endl;
99 std::cout <<
"AcceleratorCudaInit: assume user either uses" << std::endl;
100 std::cout <<
"AcceleratorCudaInit: a) IBM jsrun, or " << std::endl;
101 std::cout <<
"AcceleratorCudaInit: b) invokes through a wrapping script to set CUDA_VISIBLE_DEVICES, UCX_NET_DEVICES, and numa binding " << std::endl;
102 std::cout <<
"AcceleratorCudaInit: Configure options --enable-setdevice=no " << std::endl;
106 std::cout <<
"AcceleratorCudaInit: rank " <<
world_rank <<
" setting device to node rank " << rank << std::endl;
107 std::cout <<
"AcceleratorCudaInit: Configure options --enable-setdevice=yes " << std::endl;
110 cudaSetDevice(device);
111 cudaStreamCreate(©Stream);
112 cudaStreamCreate(&computeStream);
116 cudaDeviceGetPCIBusId(busid, len, device);
117 std::cout <<
"local rank " << rank <<
" device " << device <<
" bus id: " << busid << std::endl;
120 if (
world_rank == 0 ) std::cout <<
"AcceleratorCudaInit: ================================================" << std::endl;
125hipDeviceProp_t *gpu_props;
126hipStream_t copyStream;
127hipStream_t computeStream;
131 auto discard = hipGetDeviceCount(&nDevices);
132 gpu_props =
new hipDeviceProp_t[nDevices];
134 char * localRankStr = NULL;
140 rank = atoi(localRankStr);
144 rank = atoi(localRankStr);
151 printf(
"world_rank %d has %d devices\n",
world_rank,nDevices);
152 size_t totalDeviceMem=0;
153 for (
int i = 0; i < nDevices; i++) {
155#define GPU_PROP_FMT(__name__, __value__) std::cout << "AcceleratorHipInit: " #__name__ ": " << __value__ << std::endl;
156#define GPU_PROP(__name__) GPU_PROP_FMT(__name__, prop.__name__);
158 discard = hipGetDeviceProperties(&gpu_props[i], i);
159 hipDeviceProp_t prop;
161 totalDeviceMem = prop.totalGlobalMem;
163 std::cout <<
"AcceleratorHipInit[" << rank <<
": ========================" << std::endl;
164 GPU_PROP_FMT(Device Number, i);
165 std::cout <<
"AcceleratorHipInit[" << rank <<
": ========================" << std::endl;
166 GPU_PROP_FMT(Device identifier, prop.name);
168 GPU_PROP(totalGlobalMem);
170 GPU_PROP(isMultiGpuBoard);
181#ifdef GRID_DEFAULT_GPU
183 std::cout <<
"AcceleratorHipInit: using default device " << std::endl;
184 std::cout <<
"AcceleratorHipInit: assume user or srun sets ROCR_VISIBLE_DEVICES and numa binding " << std::endl;
185 std::cout <<
"AcceleratorHipInit: Configure options --enable-setdevice=no " << std::endl;
190 std::cout <<
"AcceleratorHipInit: rank " <<
world_rank <<
" setting device to node rank " << rank << std::endl;
191 std::cout <<
"AcceleratorHipInit: Configure options --enable-setdevice=yes " << std::endl;
195 discard = hipSetDevice(device);
196 discard = hipStreamCreate(©Stream);
197 discard = hipStreamCreate(&computeStream);
201 discard = hipDeviceGetPCIBusId(busid, len, device);
202 std::cout <<
"local rank " << rank <<
" device " << device <<
" bus id: " << busid << std::endl;
204 if (
world_rank == 0 ) std::cout <<
"AcceleratorHipInit: ================================================" << std::endl;
211sycl::queue *theGridAccelerator;
212sycl::queue *theCopyAccelerator;
218 theGridAccelerator =
new sycl::queue (sycl::gpu_selector_v);
219 theCopyAccelerator =
new sycl::queue (sycl::gpu_selector_v);
222#ifdef GRID_SYCL_LEVEL_ZERO_IPC
226 char * localRankStr = NULL;
233 rank = atoi(localRankStr);
237 rank = atoi(localRankStr);
241 rank = atoi(localRankStr);
249 if ( rank==0 ) std::cout <<
"AcceleratorSyclInit world_rank " <<
world_rank <<
" is host " <<
hostname << std::endl;
251 auto devices = sycl::device::get_devices();
252 for(
int d = 0;d<devices.size();d++){
254#define GPU_PROP(__prop__) \
255 std::cout << "AcceleratorSyclInit: " #__prop__ ": " << devices[d].get_info<sycl::info::device::__prop__>() << std::endl;
276 GPU_PROP(global_mem_size);
281 auto name = theGridAccelerator->get_device().get_info<sycl::info::device::name>();
282 std::cout <<
"AcceleratorSyclInit: Selected device is " << name << std::endl;
283 std::cout <<
"AcceleratorSyclInit: ================================================" << std::endl;
288#if (!defined(GRID_CUDA)) && (!defined(GRID_SYCL))&& (!defined(GRID_HIP))
void acceleratorInit(void)
#define ENV_LOCAL_RANK_MVAPICH
uint32_t accelerator_threads
uint32_t acceleratorThreads(void)
#define ENV_LOCAL_RANK_PALS
#define ENV_LOCAL_RANK_OMPI
int acceleratorAbortOnGpuError
#define ENV_LOCAL_RANK_SLURM
char hostname[HOST_NAME_MAX+1]
#define NAMESPACE_BEGIN(A)
static uint64_t DeviceMaxBytes