remove variable length arrays in gpu lib
This commit is contained in:
@ -353,7 +353,7 @@ int UCL_Device::set_platform(int pid) {
|
|||||||
_num_devices=0;
|
_num_devices=0;
|
||||||
return UCL_ERROR;
|
return UCL_ERROR;
|
||||||
}
|
}
|
||||||
cl_device_id device_list[_num_devices];
|
cl_device_id *device_list = new cl_device_id[_num_devices];
|
||||||
CL_SAFE_CALL(clGetDeviceIDs(_cl_platform,CL_DEVICE_TYPE_ALL,n,device_list,
|
CL_SAFE_CALL(clGetDeviceIDs(_cl_platform,CL_DEVICE_TYPE_ALL,n,device_list,
|
||||||
&n));
|
&n));
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ int UCL_Device::set_platform(int pid) {
|
|||||||
_cl_devices.push_back(device_list[i]);
|
_cl_devices.push_back(device_list[i]);
|
||||||
add_properties(device_list[i]);
|
add_properties(device_list[i]);
|
||||||
}
|
}
|
||||||
|
delete[] device_list;
|
||||||
return UCL_SUCCESS;
|
return UCL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -518,13 +518,14 @@ int UCL_Device::device_type(const int i) {
|
|||||||
int UCL_Device::set(int num) {
|
int UCL_Device::set(int num) {
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
cl_device_id device_list[_num_devices];
|
cl_device_id *device_list = new cl_device_id[_num_devices];
|
||||||
cl_uint n;
|
cl_uint n;
|
||||||
CL_SAFE_CALL(clGetDeviceIDs(_cl_platform,CL_DEVICE_TYPE_ALL,_num_devices,
|
CL_SAFE_CALL(clGetDeviceIDs(_cl_platform,CL_DEVICE_TYPE_ALL,_num_devices,
|
||||||
device_list,&n));
|
device_list,&n));
|
||||||
|
|
||||||
_device=num;
|
_device=num;
|
||||||
_cl_device=device_list[_device];
|
_cl_device=device_list[_device];
|
||||||
|
delete[] device_list;
|
||||||
return create_context();
|
return create_context();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -111,7 +111,7 @@ class UCL_Program {
|
|||||||
size_t ms;
|
size_t ms;
|
||||||
CL_SAFE_CALL(clGetProgramBuildInfo(_program,_device,CL_PROGRAM_BUILD_LOG,0,
|
CL_SAFE_CALL(clGetProgramBuildInfo(_program,_device,CL_PROGRAM_BUILD_LOG,0,
|
||||||
NULL, &ms));
|
NULL, &ms));
|
||||||
char build_log[ms];
|
char *build_log = new char[ms];
|
||||||
CL_SAFE_CALL(clGetProgramBuildInfo(_program,_device,CL_PROGRAM_BUILD_LOG,ms,
|
CL_SAFE_CALL(clGetProgramBuildInfo(_program,_device,CL_PROGRAM_BUILD_LOG,ms,
|
||||||
build_log, NULL));
|
build_log, NULL));
|
||||||
|
|
||||||
@ -127,8 +127,9 @@ class UCL_Program {
|
|||||||
<< "----------------------------------------------------------\n";
|
<< "----------------------------------------------------------\n";
|
||||||
std::cerr << build_log << std::endl;
|
std::cerr << build_log << std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
delete[] build_log;
|
||||||
return UCL_COMPILE_ERROR;
|
return UCL_COMPILE_ERROR;
|
||||||
}
|
} else delete[] build_log;
|
||||||
}
|
}
|
||||||
|
|
||||||
return UCL_SUCCESS;
|
return UCL_SUCCESS;
|
||||||
|
|||||||
@ -407,7 +407,7 @@ inline void _ocl_build(cl_program &program, cl_device_id &device,
|
|||||||
size_t ms;
|
size_t ms;
|
||||||
CL_SAFE_CALL(clGetProgramBuildInfo(program, device,CL_PROGRAM_BUILD_LOG, 0,
|
CL_SAFE_CALL(clGetProgramBuildInfo(program, device,CL_PROGRAM_BUILD_LOG, 0,
|
||||||
NULL, &ms));
|
NULL, &ms));
|
||||||
char build_log[ms];
|
char *build_log = new char[ms];
|
||||||
CL_SAFE_CALL(clGetProgramBuildInfo(program,device,CL_PROGRAM_BUILD_LOG,ms,
|
CL_SAFE_CALL(clGetProgramBuildInfo(program,device,CL_PROGRAM_BUILD_LOG,ms,
|
||||||
build_log, NULL));
|
build_log, NULL));
|
||||||
|
|
||||||
@ -416,6 +416,7 @@ inline void _ocl_build(cl_program &program, cl_device_id &device,
|
|||||||
<< " Error compiling OpenCL Program...\n"
|
<< " Error compiling OpenCL Program...\n"
|
||||||
<< "----------------------------------------------------------\n";
|
<< "----------------------------------------------------------\n";
|
||||||
std::cerr << build_log << std::endl;
|
std::cerr << build_log << std::endl;
|
||||||
|
delete[] build_log;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void _ocl_kernel_from_source(cl_context &context, cl_device_id &device,
|
inline void _ocl_kernel_from_source(cl_context &context, cl_device_id &device,
|
||||||
|
|||||||
@ -78,7 +78,7 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu,
|
|||||||
// Get the names of all nodes
|
// Get the names of all nodes
|
||||||
int name_length;
|
int name_length;
|
||||||
char node_name[MPI_MAX_PROCESSOR_NAME];
|
char node_name[MPI_MAX_PROCESSOR_NAME];
|
||||||
char node_names[MPI_MAX_PROCESSOR_NAME*_world_size];
|
char *node_names = new char[MPI_MAX_PROCESSOR_NAME*_world_size];
|
||||||
MPI_Get_processor_name(node_name,&name_length);
|
MPI_Get_processor_name(node_name,&name_length);
|
||||||
MPI_Allgather(&node_name,MPI_MAX_PROCESSOR_NAME,MPI_CHAR,&node_names,
|
MPI_Allgather(&node_name,MPI_MAX_PROCESSOR_NAME,MPI_CHAR,&node_names,
|
||||||
MPI_MAX_PROCESSOR_NAME,MPI_CHAR,_comm_world);
|
MPI_MAX_PROCESSOR_NAME,MPI_CHAR,_comm_world);
|
||||||
@ -104,6 +104,7 @@ int DeviceT::init_device(MPI_Comm world, MPI_Comm replica, const int first_gpu,
|
|||||||
split_id=split_num;
|
split_id=split_num;
|
||||||
split_num++;
|
split_num++;
|
||||||
}
|
}
|
||||||
|
delete[] node_names;
|
||||||
|
|
||||||
// Set up a per node communicator and find rank within
|
// Set up a per node communicator and find rank within
|
||||||
MPI_Comm node_comm;
|
MPI_Comm node_comm;
|
||||||
|
|||||||
Reference in New Issue
Block a user