本文整理汇总了C++中clCreateCommandQueue函数 的典型用法代码示例。如果您正苦于以下问题:C++ clCreateCommandQueue函数的具体用法?C++ clCreateCommandQueue怎么用?C++ clCreateCommandQueue使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了clCreateCommandQueue函数 的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char* argv[]) {
struct pb_Parameters *parameters;
parameters = pb_ReadParameters(&argc, argv);
if (!parameters)
return -1;
if(!parameters->inpFiles[0]){
fputs("Input file expected\n", stderr);
return -1;
}
struct pb_TimerSet timers;
char oclOverhead[] = "OCL Overhead";
char intermediates[] = "IntermediatesKernel";
char finals[] = "FinalKernel";
pb_InitializeTimerSet(&timers);
pb_AddSubTimer(&timers, oclOverhead, pb_TimerID_KERNEL);
pb_AddSubTimer(&timers, intermediates, pb_TimerID_KERNEL);
pb_AddSubTimer(&timers, finals, pb_TimerID_KERNEL);
pb_SwitchToTimer(&timers, pb_TimerID_IO);
int numIterations;
if (argc >= 2){
numIterations = atoi(argv[1]);
} else {
fputs("Expected at least one command line argument\n", stderr);
return -1;
}
unsigned int img_width, img_height;
unsigned int histo_width, histo_height;
FILE* f = fopen(parameters->inpFiles[0],"rb");
int result = 0;
result += fread(&img_width, sizeof(unsigned int), 1, f);
result += fread(&img_height, sizeof(unsigned int), 1, f);
result += fread(&histo_width, sizeof(unsigned int), 1, f);
result += fread(&histo_height, sizeof(unsigned int), 1, f);
if (result != 4){
fputs("Error reading input and output dimensions from file\n", stderr);
return -1;
}
unsigned int* img = (unsigned int*) malloc (img_width*img_height*sizeof(unsigned int));
unsigned char* histo = (unsigned char*) calloc (histo_width*histo_height, sizeof(unsigned char));
result = fread(img, sizeof(unsigned int), img_width*img_height, f);
fclose(f);
if (result != img_width*img_height){
fputs("Error reading input array from file\n", stderr);
return -1;
}
cl_int ciErrNum;
pb_Context* pb_context;
pb_context = pb_InitOpenCLContext(parameters);
if (pb_context == NULL) {
fprintf (stderr, "Error: No OpenCL platform/device can be found.");
return -1;
}
cl_device_id clDevice = (cl_device_id) pb_context->clDeviceId;
cl_platform_id clPlatform = (cl_platform_id) pb_context->clPlatformId;
cl_context clContext = (cl_context) pb_context->clContext;
cl_command_queue clCommandQueue;
cl_program clProgram[2];
cl_kernel histo_intermediates_kernel;
cl_kernel histo_final_kernel;
cl_mem input;
cl_mem ranges;
cl_mem sm_mappings;
cl_mem global_subhisto;
cl_mem global_overflow;
cl_mem final_histo;
clCommandQueue = clCreateCommandQueue(clContext, clDevice, CL_QUEUE_PROFILING_ENABLE, &ciErrNum);
OCL_ERRCK_VAR(ciErrNum);
pb_SetOpenCL(&clContext, &clCommandQueue);
pb_SwitchToSubTimer(&timers, oclOverhead, pb_TimerID_KERNEL);
cl_uint workItemDimensions;
OCL_ERRCK_RETVAL( clGetDeviceInfo(clDevice, CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, sizeof(cl_uint), &workItemDimensions, NULL) );
size_t workItemSizes[workItemDimensions];
OCL_ERRCK_RETVAL( clGetDeviceInfo(clDevice, CL_DEVICE_MAX_WORK_ITEM_SIZES, workItemDimensions*sizeof(size_t), workItemSizes, NULL) );
//.........这里部分代码省略.........
开发者ID:abduld, 项目名称:Parboil, 代码行数:101, 代码来源:main.cpp
示例2: init_cladsyn
static int init_cladsyn(CSOUND *csound, CLADSYN *p){
int asize, ipsize, fpsize, err;
cl_device_id device_ids[32], device_id;
cl_context context;
cl_command_queue commands;
cl_program program;
cl_kernel kernel1, kernel2;
cl_uint num = 0, nump = 0;
cl_platform_id platforms[16];
uint i;
if(p->fsig->overlap > 1024)
return csound->InitError(csound, "overlap is too large\n");
err = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, 32, device_ids, &num);
if (err != CL_SUCCESS){
clGetPlatformIDs(16, platforms, &nump);
int devs = 0;
for(i=0; i < nump && devs < 32; i++){
char name[128];
clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME, 128, name, NULL);
csound->Message(csound, "available platform[%d] %s\n",i, name);
err = clGetDeviceIDs(platforms[i], CL_DEVICE_TYPE_ALL, 32-devs, &device_ids[devs], &num);
if (err != CL_SUCCESS)
csound->InitError(csound, "failed to find an OpenCL device! %s \n", cl_error_string(err));
}
devs += num;
}
for(i=0; i < num; i++){
char name[128];
cl_device_type type;
clGetDeviceInfo(device_ids[i], CL_DEVICE_NAME, 128, name, NULL);
clGetDeviceInfo(device_ids[i], CL_DEVICE_TYPE, sizeof(cl_device_type), &type, NULL);
if(type & CL_DEVICE_TYPE_CPU)
csound->Message(csound, "available CPU[device %d] %s\n",i, name);
else if(type & CL_DEVICE_TYPE_GPU)
csound->Message(csound, "available GPU[device %d] %s\n",i, name);
else if(type & CL_DEVICE_TYPE_ACCELERATOR)
csound->Message(csound, "available ACCELLERATOR[device %d] %s\n",i, name);
else
csound->Message(csound, "available generic [device %d] %s\n",i, name);;
}
// SELECT THE GPU HERE
if(*p->idev < num)
device_id = device_ids[(int)*p->idev];
else
device_id = device_ids[num-1];
context = clCreateContext(0, 1, &device_id, NULL, NULL, &err);
if (!context)
return csound->InitError(csound, "Failed to create a compute context! %s\n",
cl_error_string(err));
// Create a command commands
//
commands = clCreateCommandQueue(context, device_id, 0, &err);
if (!commands)
return csound->InitError(csound, "Failed to create a command commands! %s\n",
cl_error_string(err));
// Create the compute program from the source buffer
//
program = clCreateProgramWithSource(context, 1, (const char **) &code, NULL, &err);
if (!program)
return csound->InitError(csound, "Failed to create compute program! %s\n",
cl_error_string(err));
err = clBuildProgram(program, 0, NULL, NULL, NULL, NULL);
if (err != CL_SUCCESS)
{
size_t len;
char buffer[2048];
csound->Message(csound, "Failed to build program executable! %s\n",
cl_error_string(err));
clGetProgramBuildInfo(program, device_id, CL_PROGRAM_BUILD_LOG, sizeof(buffer), buffer, &len);
return csound->InitError(csound, "%s\n", buffer);
}
kernel1 = clCreateKernel(program, "sample", &err);
if (!kernel1 || err != CL_SUCCESS)
return csound->InitError(csound, "Failed to create sample compute kernel! %s\n",
cl_error_string(err));
kernel2 = clCreateKernel(program, "update", &err);
if (!kernel2 || err != CL_SUCCESS)
return csound->InitError(csound,"Failed to create update compute kernel! %s\n",
cl_error_string(err));
char name[128];
clGetDeviceInfo(device_id, CL_DEVICE_NAME, 128, name, NULL);
csound->Message(csound, "using device: %s\n",name);
p->bins = (p->fsig->N)/2;
if(*p->inum > 0 && *p->inum < p->bins) p->bins = *p->inum;
//.........这里部分代码省略.........
开发者ID:amitkumar3968, 项目名称:csound, 代码行数:101, 代码来源:cladsynth.c
示例3: main
int main(int argc, char const *argv[])
{
/* Get platform */
cl_platform_id platform;
cl_uint num_platforms;
cl_int ret = clGetPlatformIDs(1, &platform, &num_platforms);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clGetPlatformIDs' failed\n");
exit(1);
}
printf("Number of platforms: %d\n", num_platforms);
printf("platform=%p\n", platform);
/* Get platform name */
char platform_name[100];
ret = clGetPlatformInfo(platform, CL_PLATFORM_NAME, sizeof(platform_name), platform_name, NULL);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clGetPlatformInfo' failed\n");
exit(1);
}
printf("platform.name='%s'\n\n", platform_name);
/* Get device */
cl_device_id device;
cl_uint num_devices;
ret = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, &num_devices);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clGetDeviceIDs' failed\n");
exit(1);
}
printf("Number of devices: %d\n", num_devices);
printf("device=%p\n", device);
/* Get device name */
char device_name[100];
ret = clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(device_name),
device_name, NULL);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clGetDeviceInfo' failed\n");
exit(1);
}
printf("device.name='%s'\n", device_name);
printf("\n");
/* Create a Context Object */
cl_context context;
context = clCreateContext(NULL, 1, &device, NULL, NULL, &ret);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clCreateContext' failed\n");
exit(1);
}
printf("context=%p\n", context);
/* Create a Command Queue Object*/
cl_command_queue command_queue;
command_queue = clCreateCommandQueue(context, device, 0, &ret);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clCreateCommandQueue' failed\n");
exit(1);
}
printf("command_queue=%p\n", command_queue);
printf("\n");
/* Program source */
unsigned char *source_code;
size_t source_length;
/* Read program from 'max_int16int16.cl' */
source_code = read_buffer("max_int16int16.cl", &source_length);
/* Create a program */
cl_program program;
program = clCreateProgramWithSource(context, 1, (const char **)&source_code, &source_length, &ret);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clCreateProgramWithSource' failed\n");
exit(1);
}
printf("program=%p\n", program);
/* Build program */
ret = clBuildProgram(program, 1, &device, NULL, NULL, NULL);
if (ret != CL_SUCCESS )
{
size_t size;
char *log;
//.........这里部分代码省略.........
开发者ID:xianggong, 项目名称:m2c-llvm-devtools-host, 代码行数:101, 代码来源:max_int16int16_src.c
示例4: main
int main( void )
{
cl_int err;
cl_platform_id platform = 0;
cl_device_id device = 0;
cl_context_properties props[3] = { CL_CONTEXT_PLATFORM, 0, 0 };
cl_context ctx = 0;
cl_command_queue queue = 0;
cl_mem bufA, bufB, bufC;
cl_event event = NULL;
int ret = 0;
/* Setup OpenCL environment. */
err = clGetPlatformIDs( 1, &platform, NULL );
err = clGetDeviceIDs( platform, CL_DEVICE_TYPE_GPU, 1, &device, NULL );
props[1] = (cl_context_properties)platform;
ctx = clCreateContext( props, 1, &device, NULL, NULL, &err );
queue = clCreateCommandQueue( ctx, device, 0, &err );
/* Setup clBLAS */
err = clblasSetup( );
/* Prepare OpenCL memory objects and place matrices inside them. */
bufA = clCreateBuffer( ctx, CL_MEM_READ_ONLY, M * K * sizeof(*A),
NULL, &err );
bufB = clCreateBuffer( ctx, CL_MEM_READ_ONLY, K * N * sizeof(*B),
NULL, &err );
bufC = clCreateBuffer( ctx, CL_MEM_READ_WRITE, M * N * sizeof(*C),
NULL, &err );
err = clEnqueueWriteBuffer( queue, bufA, CL_TRUE, 0,
M * K * sizeof( *A ), A, 0, NULL, NULL );
err = clEnqueueWriteBuffer( queue, bufB, CL_TRUE, 0,
K * N * sizeof( *B ), B, 0, NULL, NULL );
err = clEnqueueWriteBuffer( queue, bufC, CL_TRUE, 0,
M * N * sizeof( *C ), C, 0, NULL, NULL );
/* Call clBLAS extended function. Perform gemm for the lower right sub-matrices */
err = clblasSgemm( clblasRowMajor, clblasNoTrans, clblasNoTrans,
M, N, K,
alpha, bufA, 0, lda,
bufB, 0, ldb, beta,
bufC, 0, ldc,
1, &queue, 0, NULL, &event );
/* Wait for calculations to be finished. */
err = clWaitForEvents( 1, &event );
/* Fetch results of calculations from GPU memory. */
err = clEnqueueReadBuffer( queue, bufC, CL_TRUE, 0,
M * N * sizeof(*result),
result, 0, NULL, NULL );
/* Release OpenCL memory objects. */
clReleaseMemObject( bufC );
clReleaseMemObject( bufB );
clReleaseMemObject( bufA );
/* Finalize work with clBLAS */
clblasTeardown( );
/* Release OpenCL working objects. */
clReleaseCommandQueue( queue );
clReleaseContext( ctx );
return ret;
}
开发者ID:ConfusedReality, 项目名称:core_hunter, 代码行数:68, 代码来源:foo.cpp
示例5: oclGetPlatformID
GPUBase::GPUBase(char* source, char* KernelName)
{
kernelFuncName = KernelName;
size_t szKernelLength;
size_t szKernelLengthFilter;
size_t szKernelLengthSum;
char* SourceOpenCLShared;
char* SourceOpenCL;
iBlockDimX = 16;
iBlockDimY = 16;
GPUError = oclGetPlatformID(&cpPlatform);
CheckError(GPUError);
cl_uint uiNumAllDevs = 0;
// Get the number of GPU devices available to the platform
GPUError = clGetDeviceIDs(cpPlatform, CL_DEVICE_TYPE_GPU, 0, NULL, &uiNumAllDevs);
CheckError(GPUError);
uiDevCount = uiNumAllDevs;
// Create the device list
cdDevices = new cl_device_id [uiDevCount];
GPUError = clGetDeviceIDs(cpPlatform, CL_DEVICE_TYPE_GPU, uiDevCount, cdDevices, NULL);
CheckError(GPUError);
// Create the OpenCL context on a GPU device
GPUContext = clCreateContext(0, uiNumAllDevs, cdDevices, NULL, NULL, &GPUError);
CheckError(GPUError);
//The command-queue can be used to queue a set of operations (referred to as commands) in order.
GPUCommandQueue = clCreateCommandQueue(GPUContext, cdDevices[0], 0, &GPUError);
CheckError(GPUError);
oclPrintDevName(LOGBOTH, cdDevices[0]);
// Load OpenCL kernel
SourceOpenCLShared = oclLoadProgSource("C:\\Dropbox\\MGR\\GPUFeatureExtraction\\GPU\\OpenCL\\GPUCode.cl", "// My comment\n", &szKernelLength);
SourceOpenCL = oclLoadProgSource(source, "// My comment\n", &szKernelLengthFilter);
szKernelLengthSum = szKernelLength + szKernelLengthFilter;
char* sourceCL = new char[szKernelLengthSum];
strcpy(sourceCL,SourceOpenCLShared);
strcat (sourceCL, SourceOpenCL);
GPUProgram = clCreateProgramWithSource( GPUContext , 1, (const char **)&sourceCL, &szKernelLengthSum, &GPUError);
CheckError(GPUError);
// Build the program with 'mad' Optimization option
char *flags = "-cl-unsafe-math-optimizations -cl-fast-relaxed-math -cl-mad-enable";
GPUError = clBuildProgram(GPUProgram, 0, NULL, flags, NULL, NULL);
//error checking code
if(!GPUError)
{
//print kernel compilation error
char programLog[1024];
clGetProgramBuildInfo(GPUProgram, cdDevices[0], CL_PROGRAM_BUILD_LOG, 1024, programLog, 0);
cout<<programLog<<endl;
}
cout << kernelFuncName << endl;
GPUKernel = clCreateKernel(GPUProgram, kernelFuncName, &GPUError);
CheckError(GPUError);
}
开发者ID:mateuszpruchniak, 项目名称:GPUFeatureExtraction, 代码行数:70, 代码来源:GPUBase.cpp
示例6: test_opencl_opengl_interop
static void test_opencl_opengl_interop()
{
cl_int status;
cl_device_id renderer;
#ifndef __EMSCRIPTEN__
CGLContextObj gl_context = CGLGetCurrentContext();
// const char * err = CGLErrorString(kCGLContext);
CGLShareGroupObj kCGLShareGroup = CGLGetShareGroup(gl_context);
cl_context_properties properties[] = {
CL_CONTEXT_PROPERTY_USE_CGL_SHAREGROUP_APPLE,
(cl_context_properties)kCGLShareGroup, 0
};
clData.ctx = clCreateContext(properties, 0, 0, 0, 0, &status);
CHECK_CL_ERROR(status, "clCreateContext");
// And now we can ask OpenCL which particular device is being used by
// OpenGL to do the rendering, currently:
clGetGLContextInfoAPPLE(clData.ctx, gl_context,
CL_CGL_DEVICE_FOR_CURRENT_VIRTUAL_SCREEN_APPLE, sizeof(renderer),
&renderer, NULL);
#else
cl_context_properties cps[] = {
CL_GL_CONTEXT_KHR, (cl_context_properties) 0, CL_WGL_HDC_KHR, (cl_context_properties) 0, 0};
//Probably won't work because &dev should correspond to glContext
clData.ctx = clCreateContext(cps, 1, &renderer, NULL, NULL, &status);
CHECK_CL_ERROR(status, "clCreateContext");
#endif
cl_uint id_in_use;
clGetDeviceInfo(renderer, CL_DEVICE_VENDOR_ID, sizeof(cl_uint),
&id_in_use, NULL);
clData.device = renderer;
cl_command_queue_properties qprops = 0;
clData.queue = clCreateCommandQueue(clData.ctx, clData.device, qprops, &status);
CHECK_CL_ERROR(status, "clCreateCommandQueue");
int extensionExists = 0;
size_t extensionSize;
int ciErrNum = clGetDeviceInfo( clData.device, CL_DEVICE_EXTENSIONS, 0, NULL, &extensionSize );
char* extensions = (char*) malloc( extensionSize);
ciErrNum = clGetDeviceInfo( clData.device, CL_DEVICE_EXTENSIONS, extensionSize, extensions, &extensionSize);
char * pch;
//printf ("Splitting extensions string \"%s\" into tokens:\n",extensions);
pch = strtok (extensions," ");
while (pch != NULL)
{
printf ("%s\n",pch);
if(strcmp(pch, GL_SHARING_EXTENSION) == 0) {
printf("Device supports gl sharing\n");
extensionExists = 1;
break;
}
pch = strtok (NULL, " ");
}
}
开发者ID:wolfviking0, 项目名称:webcl-translator, 代码行数:76, 代码来源:main.c
示例7: nbnxn_gpu_init
//! This function is documented in the header file
void nbnxn_gpu_init(gmx_nbnxn_ocl_t **p_nb,
const gmx_device_info_t *deviceInfo,
const interaction_const_t *ic,
const NbnxnListParameters *listParams,
const nbnxn_atomdata_t *nbat,
int rank,
gmx_bool bLocalAndNonlocal)
{
gmx_nbnxn_ocl_t *nb;
cl_int cl_error;
cl_command_queue_properties queue_properties;
assert(ic);
if (p_nb == nullptr)
{
return;
}
snew(nb, 1);
snew(nb->atdat, 1);
snew(nb->nbparam, 1);
snew(nb->plist[eintLocal], 1);
if (bLocalAndNonlocal)
{
snew(nb->plist[eintNonlocal], 1);
}
nb->bUseTwoStreams = static_cast<cl_bool>(bLocalAndNonlocal);
nb->timers = new cl_timers_t();
snew(nb->timings, 1);
/* set device info, just point it to the right GPU among the detected ones */
nb->dev_info = deviceInfo;
snew(nb->dev_rundata, 1);
/* init nbst */
pmalloc(reinterpret_cast<void**>(&nb->nbst.e_lj), sizeof(*nb->nbst.e_lj));
pmalloc(reinterpret_cast<void**>(&nb->nbst.e_el), sizeof(*nb->nbst.e_el));
pmalloc(reinterpret_cast<void**>(&nb->nbst.fshift), SHIFTS * sizeof(*nb->nbst.fshift));
init_plist(nb->plist[eintLocal]);
/* OpenCL timing disabled if GMX_DISABLE_GPU_TIMING is defined. */
nb->bDoTime = static_cast<cl_bool>(getenv("GMX_DISABLE_GPU_TIMING") == nullptr);
/* Create queues only after bDoTime has been initialized */
if (nb->bDoTime)
{
queue_properties = CL_QUEUE_PROFILING_ENABLE;
}
else
{
queue_properties = 0;
}
nbnxn_gpu_create_context(nb->dev_rundata, nb->dev_info, rank);
/* local/non-local GPU streams */
nb->stream[eintLocal] = clCreateCommandQueue(nb->dev_rundata->context, nb->dev_info->ocl_gpu_id.ocl_device_id, queue_properties, &cl_error);
if (CL_SUCCESS != cl_error)
{
gmx_fatal(FARGS, "On rank %d failed to create context for GPU #%s: OpenCL error %d",
rank,
nb->dev_info->device_name,
cl_error);
}
if (nb->bUseTwoStreams)
{
init_plist(nb->plist[eintNonlocal]);
nb->stream[eintNonlocal] = clCreateCommandQueue(nb->dev_rundata->context, nb->dev_info->ocl_gpu_id.ocl_device_id, queue_properties, &cl_error);
if (CL_SUCCESS != cl_error)
{
gmx_fatal(FARGS, "On rank %d failed to create context for GPU #%s: OpenCL error %d",
rank,
nb->dev_info->device_name,
cl_error);
}
}
if (nb->bDoTime)
{
init_timers(nb->timers, nb->bUseTwoStreams == CL_TRUE);
init_timings(nb->timings);
}
nbnxn_ocl_init_const(nb, ic, listParams, nbat);
/* Enable LJ param manual prefetch for AMD or Intel or if we request through env. var.
* TODO: decide about NVIDIA
*/
nb->bPrefetchLjParam =
(getenv("GMX_OCL_DISABLE_I_PREFETCH") == nullptr) &&
((nb->dev_info->vendor_e == OCL_VENDOR_AMD) || (nb->dev_info->vendor_e == OCL_VENDOR_INTEL)
|| (getenv("GMX_OCL_ENABLE_I_PREFETCH") != nullptr));
//.........这里部分代码省略.........
开发者ID:friforever, 项目名称:gromacs, 代码行数:101, 代码来源:nbnxn_ocl_data_mgmt.cpp
示例8: tmr_ocl_create_command_queues
//.........这里部分代码省略.........
device = platform_struct.list_of_devices[idev].id;
platform_struct.list_of_devices[idev].tmc_type = TMC_OCL_DEVICE_CPU;
icon = 0;
}
else{
device = NULL;
}
}
// check whether this is a GPU device - then context is no 1
else if(platform_struct.list_of_devices[idev].type ==
CL_DEVICE_TYPE_GPU){
if(Device_type == TMC_OCL_ALL_DEVICES ||
Device_type == TMC_OCL_DEVICE_GPU){
device = platform_struct.list_of_devices[idev].id;
platform_struct.list_of_devices[idev].tmc_type = TMC_OCL_DEVICE_GPU;
icon = 1;
}
else{
device = NULL;
}
}
// check whether this is an ACCELERATOR device - then context is no 2
else if(platform_struct.list_of_devices[idev].type ==
CL_DEVICE_TYPE_ACCELERATOR){
if(Device_type == TMC_OCL_ALL_DEVICES ||
Device_type == TMC_OCL_DEVICE_ACCELERATOR){
device = platform_struct.list_of_devices[idev].id;
platform_struct.list_of_devices[idev].tmc_type = TMC_OCL_DEVICE_ACCELERATOR;
icon = 2;
}
else{
device = NULL;
}
}
if(device != NULL){
// choose OpenCL context selected for a device
cl_context context = platform_struct.list_of_contexts[icon];
platform_struct.list_of_devices[idev].context_index = icon;
// if context exist
if(context != NULL){
if(Monitor>TMC_PRINT_INFO){
if(platform_struct.list_of_devices[idev].tmc_type == TMC_OCL_DEVICE_CPU){
fprintf(Interactive_output,"\nCreating command queue for CPU context %d, device index %d, platform %d\n",
icon, idev, platform_index);
}
if(platform_struct.list_of_devices[idev].tmc_type == TMC_OCL_DEVICE_GPU){
fprintf(Interactive_output,"\nCreating command queue for GPU context %d, device index %d, platform %d\n",
icon, idev, platform_index);
}
if(platform_struct.list_of_devices[idev].tmc_type == TMC_OCL_DEVICE_ACCELERATOR){
fprintf(Interactive_output,"\nCreating command queue for ACCELERATOR context %d, device index %d, platform %d\n",
icon, idev, platform_index);
}
}
// Create a command-queue on the device for the context
cl_command_queue_properties prop = 0;
prop |= CL_QUEUE_PROFILING_ENABLE;
platform_struct.list_of_devices[idev].command_queue =
clCreateCommandQueue(context, device, prop, NULL);
if (platform_struct.list_of_devices[idev].command_queue == NULL)
{
fprintf(Interactive_output,"Failed to create command queue for context %d, device %d, platform %d\n",
icon, idev, platform_index);
exit(-1);
}
} // end if context exist for a given device
} // end if device is of specified type
} // end loop over devices
} // end if platform is of specified type
} // end loop over platforms
return(1);
}
开发者ID:nestaaaa, 项目名称:mgrmgrabarc, 代码行数:101, 代码来源:tms_ocl_intf.c
示例9: main
int
main(void)
{
cl_int err;
cl_platform_id platform = 0;
cl_device_id device = 0;
cl_context_properties props[3] = { CL_CONTEXT_PLATFORM, 0, 0 };
cl_context ctx = 0;
cl_command_queue queue = 0;
cl_mem bufA, bufX;
cl_event event = NULL;
int ret = 0;
/* Setup OpenCL environment. */
err = clGetPlatformIDs(1, &platform, NULL);
if (err != CL_SUCCESS) {
printf( "clGetPlatformIDs() failed with %d\n", err );
return 1;
}
err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, NULL);
if (err != CL_SUCCESS) {
printf( "clGetDeviceIDs() failed with %d\n", err );
return 1;
}
props[1] = (cl_context_properties)platform;
ctx = clCreateContext(props, 1, &device, NULL, NULL, &err);
if (err != CL_SUCCESS) {
printf( "clCreateContext() failed with %d\n", err );
return 1;
}
queue = clCreateCommandQueue(ctx, device, 0, &err);
if (err != CL_SUCCESS) {
printf( "clCreateCommandQueue() failed with %d\n", err );
clReleaseContext(ctx);
return 1;
}
/* Setup clblas. */
err = clblasSetup();
if (err != CL_SUCCESS) {
printf("clblasSetup() failed with %d\n", err);
clReleaseCommandQueue(queue);
clReleaseContext(ctx);
return 1;
}
/* Prepare OpenCL memory objects and place matrices inside them. */
bufA = clCreateBuffer(ctx, CL_MEM_READ_ONLY, N * lda * sizeof(cl_float),
NULL, &err);
bufX = clCreateBuffer(ctx, CL_MEM_READ_WRITE, N * sizeof(cl_float),
NULL, &err);
err = clEnqueueWriteBuffer(queue, bufA, CL_TRUE, 0,
N * lda * sizeof(cl_float), A, 0, NULL, NULL);
err = clEnqueueWriteBuffer(queue, bufX, CL_TRUE, 0,
N * sizeof(cl_float), X, 0, NULL, NULL);
/* Call clblas function. */
err = clblasStbsv(order, uplo, trans, diag, N, K,
bufA, 0, lda, bufX, 0, incx, 1, &queue, 0, NULL, &event);
if (err != CL_SUCCESS) {
printf("clblasStbsv() failed with %d\n", err);
ret = 1;
}
else {
/* Wait for calculations to be finished. */
err = clWaitForEvents(1, &event);
/* Fetch results of calculations from GPU memory. */
err = clEnqueueReadBuffer(queue, bufX, CL_TRUE, 0, N * sizeof(cl_float),
X, 0, NULL, NULL);
/* At this point you will get the result of STBSV placed in X array. */
printResult();
}
/* Release OpenCL memory objects. */
clReleaseMemObject(bufX);
clReleaseMemObject(bufA);
/* Finalize work with clblas. */
clblasTeardown();
/* Release OpenCL working objects. */
clReleaseCommandQueue(queue);
clReleaseContext(ctx);
return ret;
}
开发者ID:EmergentOrder, 项目名称:clBLAS, 代码行数:93, 代码来源:example_stbsv.c
示例10: main
int main(int argc, char **argv)
{
cl_int ret;
/*
* Command line
*/
char *binary_path;
if (argc != 2)
{
printf("syntax: %s <binary>\n", argv[0]);
exit(1);
}
binary_path = argv[1];
/*
* Platform
*/
/* Get platform */
cl_platform_id platform;
cl_uint num_platforms;
ret = clGetPlatformIDs(1, &platform, &num_platforms);
if (ret != CL_SUCCESS)
{
printf("error: second call to 'clGetPlatformIDs' failed\n");
exit(1);
}
printf("Number of platforms: %d\n", num_platforms);
/* Get platform name */
char platform_name[100];
ret = clGetPlatformInfo(platform, CL_PLATFORM_NAME, sizeof(platform_name), platform_name, NULL);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clGetPlatformInfo' failed\n");
exit(1);
}
printf("platform.name='%s'\n", platform_name);
printf("\n");
/*
* Device
*/
/* Get device */
cl_device_id device;
cl_uint num_devices;
ret = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, &num_devices);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clGetDeviceIDs' failed\n");
exit(1);
}
printf("Number of devices: %d\n", num_devices);
/* Get device name */
char device_name[100];
ret = clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(device_name), device_name, NULL);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clGetDeviceInfo' failed\n");
exit(1);
}
printf("device.name='%s'\n", device_name);
printf("\n");
/*
* Context
*/
/* Create context */
cl_context context;
context = clCreateContext(NULL, 1, &device, NULL, NULL, &ret);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clCreateContext' failed\n");
exit(1);
}
/*
* Command Queue
*/
/* Create command queue */
cl_command_queue command_queue;
command_queue = clCreateCommandQueue(context, device, 0, &ret);
if (ret != CL_SUCCESS)
{
printf("error: call to 'clCreateCommandQueue' failed\n");
exit(1);
//.........这里部分代码省略.........
开发者ID:multi2sim-upv, 项目名称:multi2sim-tests, 代码行数:101, 代码来源:if.c
示例11: getPlatform
int
FastWalshTransform::setupCL(void)
{
cl_int status = 0;
cl_device_type dType;
if(sampleArgs->deviceType.compare("cpu") == 0)
{
dType = CL_DEVICE_TYPE_CPU;
}
else //sampleArgs->deviceType = "gpu"
{
dType = CL_DEVICE_TYPE_GPU;
if(sampleArgs->isThereGPU() == false)
{
std::cout << "GPU not found. Falling back to CPU device" << std::endl;
dType = CL_DEVICE_TYPE_CPU;
}
}
/*
* Have a look at the available platforms and pick either
* the AMD one if available or a reasonable default.
*/
cl_platform_id platform = NULL;
int retValue = getPlatform(platform, sampleArgs->platformId,
sampleArgs->isPlatformEnabled());
CHECK_ERROR(retValue, SDK_SUCCESS, "getPlatform() failed");
// Display available devices.
retValue = displayDevices(platform, dType);
CHECK_ERROR(retValue, SDK_SUCCESS, "displayDevices() failed");
/*
* If we could find our platform, use it. Otherwise use just available platform.
*/
cl_context_properties cps[3] =
{
CL_CONTEXT_PLATFORM,
(cl_context_properties)platform,
0
};
context = clCreateContextFromType(
cps,
dType,
NULL,
NULL,
&status);
CHECK_OPENCL_ERROR( status, "clCreateContextFromType failed.");
// getting device on which to run the sample
status = getDevices(context, &devices, sampleArgs->deviceId,
sampleArgs->isDeviceIdEnabled());
CHECK_ERROR(status, SDK_SUCCESS, "getDevices() failed");
{
// The block is to move the declaration of prop closer to its use
cl_command_queue_properties prop = 0;
commandQueue = clCreateCommandQueue(
context,
devices[sampleArgs->deviceId],
prop,
&status);
CHECK_OPENCL_ERROR( status, "clCreateCommandQueue failed.");
}
//Set device info of given cl_device_id
retValue = deviceInfo.setDeviceInfo(devices[sampleArgs->deviceId]);
CHECK_ERROR(retValue, SDK_SUCCESS, "SDKDeviceInfo::setDeviceInfo() failed");
inputBuffer = clCreateBuffer(
context,
CL_MEM_READ_WRITE,
sizeof(cl_float) * length,
0,
&status);
CHECK_OPENCL_ERROR(status, "clCreateBuffer failed. (inputBuffer)");
// create a CL program using the kernel source
buildProgramData buildData;
buildData.kernelName = std::string("FastWalshTransform_Kernels.cl");
buildData.devices = devices;
buildData.deviceId = sampleArgs->deviceId;
buildData.flagsStr = std::string("");
if(sampleArgs->isLoadBinaryEnabled())
{
buildData.binaryName = std::string(sampleArgs->loadBinary.c_str());
}
if(sampleArgs->isComplierFlagsSpecified())
{
buildData.flagsFileName = std::string(sampleArgs->flags.c_str());
}
retValue = buildOpenCLProgram(program, context, buildData);
CHECK_ERROR(retValue, SDK_SUCCESS, "buildOpenCLProgram() failed");
// get a kernel object handle for a kernel with the given name
//.........这里部分代码省略.........
开发者ID:morellid, 项目名称:featureBasedScheduling, 代码行数:101, 代码来源:FastWalshTransform.cpp
示例12: initGPU
int initGPU(int n)
{
#pragma mark Device Information
// Find the CPU CL device, as a fallback
err = clGetDeviceIDs(NULL, CL_DEVICE_TYPE_CPU, 1, &cpu, NULL);
assert(err == CL_SUCCESS);
// Find the GPU CL device, this is what we really want
// If there is no GPU device is CL capable, fall back to CPU
err |= clGetDeviceIDs(NULL, CL_DEVICE_TYPE_GPU, 1, &device, NULL);
if (err != CL_SUCCESS) device = cpu;
assert(device);
// Get some information about the returned device
cl_char vendor_name[1024] = {0};
cl_char device_name[1024] = {0};
err |= clGetDeviceInfo(device, CL_DEVICE_VENDOR, sizeof(vendor_name), vendor_name, &returned_size);
err |= clGetDeviceInfo(device, CL_DEVICE_NAME, sizeof(device_name), device_name, &returned_size);
assert(err == CL_SUCCESS);
printf("Connecting to %s %s...", vendor_name, device_name);
#pragma mark Context and Command Queue
// Now create a context to perform our calculation with the
// specified device
context = clCreateContext(0, 1, &device, NULL, NULL, &err);
assert(err == CL_SUCCESS);
// And also a command queue for the context
cmd_queue = clCreateCommandQueue(context, device, 0, NULL);
#pragma mark Program and Kernel Creation
// Load the program source from disk
// The kernel/program is the project directory and in Xcode the executable
// is set to launch from that directory hence we use a relative path
const char * filename = "kernel.cl";
char *program_source = load_program_source(filename);
program[0] = clCreateProgramWithSource(context, 1, (const char**)&program_source, NULL, &err);
assert(err == CL_SUCCESS);
err |= clBuildProgram(program[0], 0, NULL, NULL, NULL, NULL);
assert(err == CL_SUCCESS);
// Now create the kernel "objects" that we want to use in the example file
kernel[0] = clCreateKernel(program[0], "add", &err);
assert(err == CL_SUCCESS);
#pragma mark Memory Allocation
// Allocate memory on the device to hold our data and store the results into
buffer_size = sizeof(int) * n;
mem_c_position = clCreateBuffer(context, CL_MEM_READ_ONLY, buffer_size, NULL, &err);
mem_c_velocity = clCreateBuffer(context, CL_MEM_READ_ONLY, buffer_size, NULL, &err);
mem_p_angle = clCreateBuffer(context, CL_MEM_READ_ONLY, buffer_size, NULL, &err);
mem_p_velocity = clCreateBuffer(context, CL_MEM_READ_ONLY, buffer_size, NULL, &err);
assert(err == CL_SUCCESS);
mem_fitness = clCreateBuffer(context, CL_MEM_WRITE_ONLY, buffer_size, NULL, &err);
assert(err == CL_SUCCESS);
// Get all of the stuff written and allocated
clFinish(cmd_queue);
printf(" done\n");
return err; // CL_SUCCESS
}
开发者ID:Mikulas, 项目名称:PoleBalanceGPU, 代码行数:66, 代码来源:main.c
示例13: isPlatformEnabled
int
BinomialOption::setupCL()
{
cl_int status = CL_SUCCESS;
cl_device_type dType;
if(deviceType.compare("cpu") == 0)
{
dType = CL_DEVICE_TYPE_CPU;
}
else //deviceType = "gpu"
{
dType = CL_DEVICE_TYPE_GPU;
if(isThereGPU() == false)
{
std::cout << "GPU not found. Falling back to CPU device" << std::endl;
dType = CL_DEVICE_TYPE_CPU;
}
}
/*
* Have a look at the available platforms and pick either
* the AMD one if available or a reasonable default.
*/
cl_platform_id platform = NULL;
int retValue = sampleCommon->getPlatform(platform, platformId, isPlatformEnabled());
CHECK_ERROR(retValue, SDK_SUCCESS, "sampleCommon::getPlatform() failed");
// Display available devices.
retValue = sampleCommon->displayDevices(platform, dType);
CHECK_ERROR(retValue, SDK_SUCCESS, "sampleCommon::displayDevices() failed");
/*
* If we could find our platform, use it. Otherwise use just available platform.
*/
cl_context_properties cps[3] =
{
CL_CONTEXT_PLATFORM,
(cl_context_properties)platform,
0
};
context = clCreateContextFromType(cps,
dType,
NULL,
NULL,
&status);
CHECK_OPENCL_ERROR(status, "clCreateContextFromType failed.");
// getting device on which to run the sample
status = sampleCommon->getDevices(context, &devices, deviceId, isDeviceIdEnabled());
CHECK_ERROR(status, SDK_SUCCESS, "sampleCommon::getDevices() failed");
status = deviceInfo.setDeviceInfo(devices[deviceId]);
CHECK_OPENCL_ERROR(status, "deviceInfo.setDeviceInfo failed");
{
// The block is to move the declaration of prop closer to its use
cl_command_queue_properties prop = 0;
commandQueue = clCreateCommandQueue(context,
devices[deviceId],
prop,
&status);
CHECK_OPENCL_ERROR(status, "clCreateCommandQueue failed.");
}
// Create and initialize memory objects
// Set Presistent memory only for AMD platform
cl_mem_flags inMemFlags = CL_MEM_READ_ONLY;
// if(isAmdPlatform())
// inMemFlags |= CL_MEM_USE_PERSISTENT_MEM_AMD;
// Create memory object for stock price
randBuffer = clCreateBuffer(context,
inMemFlags,
numSamples * sizeof(cl_float4),
NULL,
&status);
CHECK_OPENCL_ERROR(status, "clCreateBuffer failed. (randBuffer)");
// Create memory object for output array
outBuffer = clCreateBuffer(context,
CL_MEM_WRITE_ONLY | CL_MEM_ALLOC_HOST_PTR,
numSamples * sizeof(cl_float4),
NULL,
&status);
CHECK_OPENCL_ERROR(status, "clCreateBuffer failed. (outBuffer)");
// create a CL program using the kernel source
streamsdk::buildProgramData buildData;
buildData.kernelName = std::string("BinomialOption_Kernels.cl");
buildData.devices = devices;
buildData.deviceId = deviceId;
buildData.flagsStr = std::string("");
if(isLoadBinaryEnabled())
buildData.binaryName = std::string(loadBinary.c_str());
if(isComplierFlagsSpecified())
buildData.flagsFileName = std::string(flags.c_str());
//.........这里部分代码省略.........
开发者ID:HIPERFIT, 项目名称:vectorprogramming, 代码行数:101, 代码来源:BinomialOption.cpp
示例14: clGetPlatformIDs
// SETUP
int CLContext::setupCL()
{
cl_int status = CL_SUCCESS;
cl_device_type dType;
int gpu = 1;
if(gpu == 0)
dType = CL_DEVICE_TYPE_CPU;
else //deviceType = "gpu"
dType = CL_DEVICE_TYPE_GPU;
/*
* Have a look at the available platforms and pick either
* the AMD one if available or a reasonable default. <----- LOL check out the amd propaganda
*/
cl_uint numPlatforms;
cl_platform_id platform = NULL;
status = clGetPlatformIDs(0, NULL, &numPlatforms);
if(!checkVal(status, CL_SUCCESS, "clGetPlatformIDs failed."))
return CL_FAILURE;
if (0 < numPlatforms)
{
cl_platform_id* platforms = new cl_platform_id[numPlatforms];
status = clGetPlatformIDs(numPlatforms, platforms, NULL);
if(!checkVal(status, CL_SUCCESS, "clGetPlatformIDs failed."))
return CL_FAILURE;
for (unsigned i = 0; i < numPlatforms; ++i)
{
char pbuf[100];
status = clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR, sizeof(pbuf), pbuf, NULL);
if(!checkVal(status, CL_SUCCESS, "clGetPlatformInfo failed."))
return CL_FAILURE;
platform = platforms[i];
if (!strcmp(pbuf, "Advanced Micro Devices, Inc."))
break;
}
delete[] platforms;
}
/*
* If we could find our platform, use it. Otherwise pass a NULL and get whatever the
* implementation thinks we should be using.
*/
cl_context_properties cps[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)platform, 0 };
/* Use NULL for backward compatibility */
cl_context_properties* cprops = (NULL == platform) ? NULL : cps;
context = clCreateContextFromType( cprops, dType, NULL, NULL, &status);
if(!checkVal( status, CL_SUCCESS, "clCreateContextFromType failed."))
return CL_FAILURE;
size_t deviceListSize;
/* First, get the size of device list data */
status = clGetContextInfo( context, CL_CONTEXT_DEVICES, 0, NULL, &deviceListSize);
if(!checkVal( status, CL_SUCCESS, "clGetContextInfo failed."))
return CL_FAILURE;
/* Now allocate memory for device list based on the size we got earlier */
devices = (cl_device_id*)malloc(deviceListSize);
if(devices==NULL)
{
cout << "Failed to allocate memory (devices)." << endl;
return CL_FAILURE;
}
/* Now, get the device list data */
status = clGetContextInfo( context, CL_CONTEXT_DEVICES, deviceListSize, devices, NULL);
if(!checkVal( status, CL_SUCCESS, "clGetContextInfo failed."))
return CL_FAILURE;
/* Create command queue */
commandQueue = clCreateCommandQueue( context, devices[0], 0, &status);
if(!checkVal( status, CL_SUCCESS, "clCreateCommandQueue failed."))
return CL_FAILURE;
/* Get Device specific Information */
status = clGetDeviceInfo( devices[0], CL_DEVICE_MAX_WORK_GROUP_SIZE, sizeof(size_t), (void*)&maxWorkGroupSize, NULL);
if(!checkVal( status, CL_SUCCESS, "clGetDeviceInfo CL_DEVICE_MAX_WORK_GROUP_SIZE failed."))
return CL_FAILURE;
status = clGetDeviceInfo( devices[0], CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS, sizeof(cl_uint), (void*)&maxDimensions, NULL);
if(!checkVal( status, CL_SUCCESS, "clGetDeviceInfo CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS failed."))
return CL_FAILURE;
maxWorkItemSizes = (size_t *)malloc(maxDimensions * sizeof(unsigned int));
status = clGetDeviceInfo( devices[0], CL_DEVICE_MAX_WORK_ITEM_SIZES, sizeof(size_t) * maxDimensions, (void*)maxWorkItemSizes, NULL);
if(!checkVal( status, CL_SUCCESS, "clGetDeviceInfo CL_DEVICE_MAX_WORK_ITEM_SIZES failed."))
return CL_FAILURE;
//.........这里部分代码省略.........
开发者ID:ethicalfive, 项目名称:critterding, 代码行数:101, 代码来源:clcontext.cpp
六六分期app的软件客服如何联系?不知道吗?加qq群【895510560】即可!标题:六六分期
阅读:18130| 2023-10-27
今天小编告诉大家如何处理win10系统火狐flash插件总是崩溃的问题,可能很多用户都不知
阅读:9628| 2022-11-06
今天小编告诉大家如何对win10系统删除桌面回收站图标进行设置,可能很多用户都不知道
阅读:8159| 2022-11-06
今天小编告诉大家如何对win10系统电脑设置节能降温的设置方法,想必大家都遇到过需要
阅读:8538| 2022-11-06
我们在使用xp系统的过程中,经常需要对xp系统无线网络安装向导设置进行设置,可能很多
阅读:8439| 2022-11-06
今天小编告诉大家如何处理win7系统玩cf老是与主机连接不稳定的问题,可能很多用户都不
阅读:9356| 2022-11-06
电脑对日常生活的重要性小编就不多说了,可是一旦碰到win7系统设置cf烟雾头的问题,很
阅读:8407| 2022-11-06
我们在日常使用电脑的时候,有的小伙伴们可能在打开应用的时候会遇见提示应用程序无法
阅读:7843| 2022-11-06
今天小编告诉大家如何对win7系统打开vcf文件进行设置,可能很多用户都不知道怎么对win
阅读:8393| 2022-11-06
今天小编告诉大家如何对win10系统s4开启USB调试模式进行设置,可能很多用户都不知道怎
阅读:7385| 2022-11-06
请发表评论