本文整理汇总了C++中cuCtxCreate函数的典型用法代码示例。如果您正苦于以下问题:C++ cuCtxCreate函数的具体用法?C++ cuCtxCreate怎么用?C++ cuCtxCreate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cuCtxCreate函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: CUDADevice
CUDADevice(DeviceInfo& info, Stats &stats, bool background_) : Device(stats)
{
background = background_;
cuDevId = info.num;
cuDevice = 0;
cuContext = 0;
/* intialize */
if(cuda_error(cuInit(0)))
return;
/* setup device and context */
if(cuda_error(cuDeviceGet(&cuDevice, cuDevId)))
return;
CUresult result;
if(background) {
result = cuCtxCreate(&cuContext, 0, cuDevice);
}
else {
result = cuGLCtxCreate(&cuContext, 0, cuDevice);
if(result != CUDA_SUCCESS) {
result = cuCtxCreate(&cuContext, 0, cuDevice);
background = true;
}
}
if(cuda_error_(result, "cuCtxCreate"))
return;
cuda_pop_context();
}
开发者ID:baysmith,项目名称:blender,代码行数:35,代码来源:device_cuda.cpp
示例2: CHKFAIL
static void *do_init(CUdevice dev, int flags, int *ret) {
cuda_context *res;
CUcontext ctx;
unsigned int fl = CU_CTX_SCHED_AUTO;
int i;
CHKFAIL(NULL);
if (flags & GA_CTX_SINGLE_THREAD)
fl = CU_CTX_SCHED_SPIN;
if (flags & GA_CTX_MULTI_THREAD)
fl = CU_CTX_SCHED_YIELD;
err = cuDeviceGetAttribute(&i, CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING, dev);
CHKFAIL(NULL);
if (i != 1)
FAIL(NULL, GA_UNSUPPORTED_ERROR);
err = cuCtxCreate(&ctx, fl, dev);
CHKFAIL(NULL);
res = cuda_make_ctx(ctx, 0);
if (res == NULL) {
cuCtxDestroy(ctx);
FAIL(NULL, GA_IMPL_ERROR);
}
res->flags |= flags;
/* Don't leave the context on the thread stack */
cuCtxPopCurrent(NULL);
return res;
}
开发者ID:qnix,项目名称:libgpuarray,代码行数:28,代码来源:gpuarray_buffer_cuda.c
示例3: initCuda
bool initCuda(CUcontext & cuContext)
{
// Initialize Cuda
CUresult cerr;
int deviceCount;
cudaGetDeviceCount(&deviceCount);
if (deviceCount == 0)
{
fprintf(stderr, "Sorry, no CUDA device found");
return false;
}
int selectedDevice = 0;
if (selectedDevice >= deviceCount)
{
fprintf(stderr, "Choose device ID between 0 and %d\n", deviceCount-1);
return false;
}
// Initialize the CUDA device
CUdevice cuDevice;
cerr = cuDeviceGet(&cuDevice,selectedDevice);
checkError(cerr);
cerr = cuCtxCreate(&cuContext, CU_CTX_MAP_HOST|CU_CTX_BLOCKING_SYNC, cuDevice);
checkError(cerr);
}
开发者ID:caomw,项目名称:calibrig,代码行数:28,代码来源:main.cpp
示例4: mcopy_gpu_init
int mcopy_gpu_init(struct device_info *device_info)
{
char fname[256];
CUresult res;
/* printf("madd_gpu_init called.\n"); */
/* Initialization */
if ((res = cuInit(0)) != CUDA_SUCCESS) {
printf("cuInit failed: res = %lu\n", (unsigned long)res);
return -1;
}
if ((res = cuDeviceGet(&device_info->dev, 0)) != CUDA_SUCCESS) {
printf("cuDeviceGet failed: res = %lu\n", (unsigned long)res);
return -1;
}
if ((res = cuCtxCreate(&device_info->context, 0, device_info->dev)) !=
CUDA_SUCCESS) {
printf("cuCtxCreate failed: res = %lu\n", (unsigned long)res);
return -1;
}
return 0;
}
开发者ID:Constellation,项目名称:gdev-bench,代码行数:26,代码来源:mcopy.c
示例5: initContext
size_t initContext(JNIEnv * env, jint max_blocks_per_proc, jint max_threads_per_block)
{
size_t to_space_size;
int status;
int deviceCount = 0;
size_t f_mem;
size_t t_mem;
jint num_blocks;
status = cuDeviceGetCount(&deviceCount);
CHECK_STATUS_RTN(env,"error in cuDeviceGetCount",status, 0);
getBestDevice(env);
status = cuCtxCreate(&cuContext, CU_CTX_MAP_HOST, cuDevice);
CHECK_STATUS_RTN(env,"error in cuCtxCreate",status, 0)
status = cuMemGetInfo (&f_mem, &t_mem);
CHECK_STATUS_RTN(env,"error in cuMemGetInfo",status, 0)
to_space_size = f_mem;
//space for 100 types in the scene
classMemSize = sizeof(jint)*100;
num_blocks = numMultiProcessors * max_threads_per_block * max_blocks_per_proc;
gc_space_size = 1024;
to_space_size -= (num_blocks * sizeof(jlong));
to_space_size -= (num_blocks * sizeof(jlong));
to_space_size -= gc_space_size;
to_space_size -= classMemSize;
return to_space_size;
}
开发者ID:Chiru2015,项目名称:rootbeer1,代码行数:35,代码来源:CudaRuntime2.c
示例6: main
int main() {
int ngpu;
CUdevice cuDevice;
CUcontext cuContext;
cuInit(0);
cuDeviceGetCount(&ngpu);
//printf("ngpu = %d\n", ngpu);
size_t *totals, *frees ;
totals = (size_t *) calloc (ngpu, sizeof(size_t));
frees = (size_t *) calloc (ngpu, sizeof(size_t));
int tid;
omp_set_num_threads(ngpu);
#pragma omp parallel private(tid, cuDevice, cuContext) shared(frees, totals)
{
tid = omp_get_thread_num();
//printf("nthreads = %d, tid = %d\n", omp_get_num_threads(), tid);
cuDeviceGet(&cuDevice, tid);
cuCtxCreate(&cuContext, tid, cuDevice);
cuMemGetInfo((size_t*)&frees[tid], (size_t*)&totals[tid]);
}
printf ("\ttotal\t\tfree\t\tused\n");
for(int i=0; i<ngpu; i++) {
printf("GPU %d\t%lu\t%lu\t%lu\n", i, (size_t)totals[i], (size_t)frees[i], (size_t)totals[i]-(size_t)frees[i]);
}
return 0;
}
开发者ID:wbkifun,项目名称:my_stuff,代码行数:31,代码来源:gfree.c
示例7: cuda_driver_api_init
CUresult cuda_driver_api_init(CUcontext *pctx, CUmodule *pmod, const char *f)
{
CUresult res;
CUdevice dev;
res = cuInit(0);
if (res != CUDA_SUCCESS) {
printf("cuInit failed: res = %lu\n", (unsigned long)res);
return res;
}
res = cuDeviceGet(&dev, 0);
if (res != CUDA_SUCCESS) {
printf("cuDeviceGet failed: res = %lu\n", (unsigned long)res);
return res;
}
res = cuCtxCreate(pctx, 0, dev);
if (res != CUDA_SUCCESS) {
printf("cuCtxCreate failed: res = %lu\n", (unsigned long)res);
return res;
}
res = cuModuleLoad(pmod, f);
if (res != CUDA_SUCCESS) {
printf("cuModuleLoad() failed\n");
cuCtxDestroy(*pctx);
return res;
}
return CUDA_SUCCESS;
}
开发者ID:Constellation,项目名称:gdev-bench,代码行数:32,代码来源:util.c
示例8: Q_ASSERT
bool GLInteropResource::ensureResource(int w, int h, int H, GLuint tex, int plane)
{
Q_ASSERT(plane < 2 && "plane number must be 0 or 1 for NV12");
TexRes &r = res[plane];
if (r.texture == tex && r.w == w && r.h == h && r.H == H && r.cuRes)
return true;
if (!ctx) {
// TODO: how to use pop/push decoder's context without the context in opengl context
CUDA_ENSURE(cuCtxCreate(&ctx, CU_CTX_SCHED_BLOCKING_SYNC, dev), false);
if (USE_STREAM) {
CUDA_WARN(cuStreamCreate(&res[0].stream, CU_STREAM_DEFAULT));
CUDA_WARN(cuStreamCreate(&res[1].stream, CU_STREAM_DEFAULT));
}
qDebug("cuda contex on gl thread: %p", ctx);
CUDA_ENSURE(cuCtxPopCurrent(&ctx), false); // TODO: why cuMemcpy2D need this
}
if (r.cuRes) {
CUDA_ENSURE(cuGraphicsUnregisterResource(r.cuRes), false);
r.cuRes = NULL;
}
// CU_GRAPHICS_REGISTER_FLAGS_WRITE_DISCARD works too for opengl, but not d3d
CUDA_ENSURE(cuGraphicsGLRegisterImage(&r.cuRes, tex, GL_TEXTURE_2D, CU_GRAPHICS_REGISTER_FLAGS_NONE), false);
r.texture = tex;
r.w = w;
r.h = h;
r.H = H;
return true;
}
开发者ID:ntibor22,项目名称:QtAV,代码行数:28,代码来源:SurfaceInteropCUDA.cpp
示例9: init_cuda_context
int
init_cuda_context (void)
{
#ifdef _ENABLE_CUDA_
CUresult curesult = CUDA_SUCCESS;
CUdevice cuDevice;
int local_rank, dev_count;
int dev_id = 0;
char * str;
if ((str = getenv("LOCAL_RANK")) != NULL) {
cudaGetDeviceCount(&dev_count);
local_rank = atoi(str);
dev_id = local_rank % dev_count;
}
curesult = cuInit(0);
if (curesult != CUDA_SUCCESS) {
return 1;
}
curesult = cuDeviceGet(&cuDevice, dev_id);
if (curesult != CUDA_SUCCESS) {
return 1;
}
curesult = cuCtxCreate(&cuContext, 0, cuDevice);
if (curesult != CUDA_SUCCESS) {
return 1;
}
#endif
return 0;
}
开发者ID:LLNL,项目名称:mpi-tools,代码行数:33,代码来源:osu_bw.c
示例10: sarafft_init
extern "C" void sarafft_init() {
printf( "Cuda is about to be initialized!\n" );
fflush ( stdout );
char *OMPI_COMM_WORLD_LOCAL_RANK = getenv( "OMPI_COMM_WORLD_LOCAL_RANK" );
if ( NULL == OMPI_COMM_WORLD_LOCAL_RANK ) {
printf( "OMPI_COMM_WORLD_LOCAL_RANK not set!\n" );
fflush ( stdout );
exit( 80 );
}
int localRank = atoi( OMPI_COMM_WORLD_LOCAL_RANK );
printf( "Local rank is %d\n", localRank );
fflush ( stdout );
if ( CUDA_SUCCESS != cuInit( 0 ) ) {
printf( "cuInit failed!\n" );
fflush ( stdout );
exit( 81 );
}
CUdevice device;
if ( CUDA_SUCCESS != cuDeviceGet( &device, localRank ) ) {
printf( "cuDeviceGet failed!\n" );
fflush ( stdout );
exit( 82 );
}
if ( CUDA_SUCCESS != cuCtxCreate( &cuda_context, CU_CTX_SCHED_YIELD, device ) ) {
printf( "cuCtxCreate failed!\n" );
fflush ( stdout );
exit( 83 );
}
printf( "Cuda was initialized successfully!\n" );
fflush ( stdout );
}
开发者ID:sara-nl,项目名称:Omnimatch,代码行数:31,代码来源:saracufft.cpp
示例11: main
int main(int argc, char* argv[])
{
cuInit(0);
int devs = 0;
cuDeviceGetCount(&devs);
assert(devs > 0);
CUdevice dev;
CUresult status;
CUcontext ctx = 0;
cuDeviceGet(&dev, 0);
cuCtxCreate(&ctx, 0, dev);
{
size_t f = 0, t = 0;
CUresult r = cuMemGetInfo(&f, &t);
fprintf( stderr, "Do cuMemGetInfo: %d, %zu/%zu\n", r, f, t );
}
__init("\n");
printf("\nPress any key to exit...");
char c;
scanf("%c", &c);
return 0;
}
开发者ID:FreeAlex,项目名称:Halide,代码行数:25,代码来源:run_cuda_init.cpp
示例12: cuda_over_map
Object cuda_over_map(Object self, int nparts, int *argcv,
Object *argv, int flags) {
CUresult error;
cuInit(0);
int deviceCount = 0;
error = cuDeviceGetCount(&deviceCount);
if (deviceCount == 0) {
raiseError("No CUDA devices found");
}
CUdevice cuDevice;
CUcontext cuContext;
CUmodule cuModule;
CUfunction cuFunc;
error = cuDeviceGet(&cuDevice, 0);
error = cuCtxCreate(&cuContext, 0, cuDevice);
CUdeviceptr d_A;
CUdeviceptr d_B;
CUdeviceptr d_res;
errcheck(cuModuleLoad(&cuModule, grcstring(argv[argcv[0]])));
CUdeviceptr dps[argcv[0]];
void *args[argcv[0]+2];
int size = INT_MAX;
for (int i=0; i<argcv[0]; i++) {
struct CudaFloatArray *a = (struct CudaFloatArray *)argv[i];
if (a->size < size)
size = a->size;
errcheck(cuMemAlloc(&dps[i], size * sizeof(float)));
errcheck(cuMemcpyHtoD(dps[i], &a->data, size * sizeof(float)));
args[i+1] = &dps[i];
}
struct CudaFloatArray *r =
(struct CudaFloatArray *)(alloc_CudaFloatArray(size));
int fsize = sizeof(float) * size;
errcheck(cuMemAlloc(&d_res, fsize));
errcheck(cuMemcpyHtoD(d_res, &r->data, fsize));
args[0] = &d_res;
args[argcv[0]+1] = &size;
int threadsPerBlock = 256;
int blocksPerGrid = (size + threadsPerBlock - 1) / threadsPerBlock;
char name[256];
strcpy(name, "block");
strcat(name, grcstring(argv[argcv[0]]) + strlen("_cuda/"));
for (int i=0; name[i] != 0; i++)
if (name[i] == '.') {
name[i] = 0;
break;
}
errcheck(cuModuleGetFunction(&cuFunc, cuModule, name));
errcheck(cuLaunchKernel(cuFunc, blocksPerGrid, 1, 1,
threadsPerBlock, 1, 1,
0,
NULL, args, NULL));
errcheck(cuMemcpyDtoH(&r->data, d_res, fsize));
cuMemFree(d_res);
for (int i=0; i<argcv[0]; i++)
cuMemFree(dps[i]);
return (Object)r;
}
开发者ID:mwh,项目名称:grace-cuda,代码行数:59,代码来源:cuda.c
示例13: initCuda
static CUresult
initCuda(CUcontext _cuContext, char* executablePath, CUfunction *mathop,
int argc, char** argv, const char* cubin_name, const char* kernel_name)
{
CUdevice cuDevice;
CUT_DEVICE_INIT_DRV(cuDevice, argc, argv);
print_GetProperties(cuDevice);
CUresult status = cuCtxCreate( &_cuContext, 0, cuDevice );
if ( CUDA_SUCCESS != status ) {
Error(_cuContext, status);
}
else printf("(1) context creation successful\n");
char* module_path = cutFindFilePath(cubin_name, executablePath);
printf ("\t cubin:%s, path:%s, mmp_ptr:%lu\n", cubin_name, executablePath, module_path);
if(module_path != NULL)
printf ("\t cubin:%s, path:%s, module_path:%c%c%c%c\n", cubin_name, executablePath, *module_path, *(module_path+1), *(module_path+2), *(module_path+3));
char* data_path = "./data/";
size_t len_path = strlen(data_path);
size_t len_fn = strlen(cubin_name);
// printf ("Sizes: data:%lu, cubinname:%lu\n", len_path, len_fn);
char* module_path_new = (char*)malloc(sizeof(char) * (len_path + len_fn));
strcpy(module_path_new, data_path);
strcat(module_path_new, cubin_name);
strcat(module_path_new, "\0");
if (module_path_new == 0) {
status = CUDA_ERROR_NOT_FOUND;
Error(_cuContext, status);
}
FILE *fp = fopen(module_path_new,"r");
if( fp ) {
printf("(2) cubin_File found in modulepath:%s\n", module_path_new);
fclose(fp);
} else {
printf("(2) cubin file not exist: %s\n", module_path_new);
}
CUmodule cuModule;
status = cuModuleLoad(&cuModule, module_path_new);
cutFree(module_path_new);
if ( CUDA_SUCCESS != status ) {
Error(_cuContext, status);
}
else printf ("(3) module Load successful\n");
CUfunction cuFunction = 0;
status = cuModuleGetFunction(&cuFunction, cuModule, kernel_name);
if ( CUDA_SUCCESS != status) {
Error(_cuContext, status);
}
else printf ("(4) getFunction successful w/cuFunction\n");
*mathop = cuFunction;
return CUDA_SUCCESS;
}
开发者ID:skchoe,项目名称:2012.Functional-GPU-Programming,代码行数:58,代码来源:pass_drv.cpp
示例14: init_accel
int
init_accel (void)
{
#if defined(_ENABLE_OPENACC_) || defined(_ENABLE_CUDA_)
char * str;
int local_rank, dev_count;
int dev_id = 0;
#endif
#ifdef _ENABLE_CUDA_
CUresult curesult = CUDA_SUCCESS;
CUdevice cuDevice;
#endif
switch (options.accel) {
#ifdef _ENABLE_CUDA_
case managed:
case cuda:
if ((str = getenv("LOCAL_RANK")) != NULL) {
cudaGetDeviceCount(&dev_count);
local_rank = atoi(str);
dev_id = local_rank % dev_count;
}
curesult = cuInit(0);
if (curesult != CUDA_SUCCESS) {
return 1;
}
curesult = cuDeviceGet(&cuDevice, dev_id);
if (curesult != CUDA_SUCCESS) {
return 1;
}
curesult = cuCtxCreate(&cuContext, 0, cuDevice);
if (curesult != CUDA_SUCCESS) {
return 1;
}
break;
#endif
#ifdef _ENABLE_OPENACC_
case openacc:
if ((str = getenv("LOCAL_RANK")) != NULL) {
dev_count = acc_get_num_devices(acc_device_not_host);
local_rank = atoi(str);
dev_id = local_rank % dev_count;
}
acc_set_device_num (dev_id, acc_device_not_host);
break;
#endif
default:
fprintf(stderr, "Invalid device type, should be cuda or openacc\n");
return 1;
}
return 0;
}
开发者ID:forresti,项目名称:osu-micro-benchmarks,代码行数:57,代码来源:osu_coll.c
示例15: fprintf
void GPUInterface::SetDevice(int deviceNumber, int paddedStateCount, int categoryCount, int paddedPatternCount,
long flags) {
#ifdef BEAGLE_DEBUG_FLOW
fprintf(stderr,"\t\t\tEntering GPUInterface::SetDevice\n");
#endif
SAFE_CUDA(cuDeviceGet(&cudaDevice, (*resourceMap)[deviceNumber]));
if (flags & BEAGLE_FLAG_SCALING_DYNAMIC) {
SAFE_CUDA(cuCtxCreate(&cudaContext, CU_CTX_SCHED_AUTO | CU_CTX_MAP_HOST, cudaDevice));
} else {
SAFE_CUDA(cuCtxCreate(&cudaContext, CU_CTX_SCHED_AUTO, cudaDevice));
}
if (kernelMap == NULL) {
// kernels have not yet been initialized; do so now. Hopefully, this only occurs once per library load.
InitializeKernelMap();
}
int id = paddedStateCount;
if (flags & BEAGLE_FLAG_PRECISION_DOUBLE) {
id *= -1;
}
if (kernelMap->count(id) == 0) {
fprintf(stderr,"Critical error: unable to find kernel code for %d states.\n",paddedStateCount);
exit(-1);
}
kernelResource = (*kernelMap)[id].copy();
kernelResource->categoryCount = categoryCount;
kernelResource->patternCount = paddedPatternCount;
kernelResource->flags = flags;
SAFE_CUDA(cuModuleLoadData(&cudaModule, kernelResource->kernelCode));
SAFE_CUDA(cuCtxPopCurrent(&cudaContext));
#ifdef BEAGLE_DEBUG_FLOW
fprintf(stderr,"\t\t\tLeaving GPUInterface::SetDevice\n");
#endif
}
开发者ID:answer19831020,项目名称:beagle-lib,代码行数:44,代码来源:GPUInterfaceCUDA.cpp
示例16: main
/**
* This measures the overhead in launching a kernel function on each GPU in the
* system.
*
* It does this by executing a small kernel (copying 1 value in global memory) a
* very large number of times and taking the average execution time. This
* program uses the CUDA driver API.
*/
int main() {
CU_ERROR_CHECK(cuInit(0));
int count;
CU_ERROR_CHECK(cuDeviceGetCount(&count));
float x = 5.0f;
for (int d = 0; d < count; d++) {
CUdevice device;
CU_ERROR_CHECK(cuDeviceGet(&device, d));
CUcontext context;
CU_ERROR_CHECK(cuCtxCreate(&context, 0, device));
CUdeviceptr in, out;
CU_ERROR_CHECK(cuMemAlloc(&in, sizeof(float)));
CU_ERROR_CHECK(cuMemAlloc(&out, sizeof(float)));
CU_ERROR_CHECK(cuMemcpyHtoD(in, &x, sizeof(float)));
CUmodule module;
CU_ERROR_CHECK(cuModuleLoadData(&module, imageBytes));
CUfunction function;
CU_ERROR_CHECK(cuModuleGetFunction(&function, module, "kernel"));
void * params[] = { &in, &out };
CUevent start, stop;
CU_ERROR_CHECK(cuEventCreate(&start, 0));
CU_ERROR_CHECK(cuEventCreate(&stop, 0));
CU_ERROR_CHECK(cuEventRecord(start, 0));
for (int i = 0; i < ITERATIONS; i++)
CU_ERROR_CHECK(cuLaunchKernel(function, 1, 1, 1, 1, 1, 1, 0, 0, params, NULL));
CU_ERROR_CHECK(cuEventRecord(stop, 0));
CU_ERROR_CHECK(cuEventSynchronize(stop));
float time;
CU_ERROR_CHECK(cuEventElapsedTime(&time, start, stop));
CU_ERROR_CHECK(cuEventDestroy(start));
CU_ERROR_CHECK(cuEventDestroy(stop));
CU_ERROR_CHECK(cuMemFree(in));
CU_ERROR_CHECK(cuMemFree(out));
fprintf(stdout, "Device %d: %fms\n", d, (time / (double)ITERATIONS));
CU_ERROR_CHECK(cuModuleUnload(module));
CU_ERROR_CHECK(cuCtxDestroy(context));
}
return 0;
}
开发者ID:garymacindoe,项目名称:cuda-cholesky,代码行数:64,代码来源:kernel-test.c
示例17: CreateCuContext
CUresult CreateCuContext(CuDevice* device, uint flags, ContextPtr* ppContext) {
ContextPtr context(new CuContext(true));
CUresult result = cuCtxCreate(&context->_h, flags, device->Handle());
HANDLE_RESULT();
context->_destroyOnDtor = true;
context->_device = device;
ppContext->swap(context);
return CUDA_SUCCESS;
}
开发者ID:CindyYang85,项目名称:mgpu,代码行数:11,代码来源:cucpp.cpp
示例18: init_cuda
/*
* Initializaiton in order to use kernel program
*/
void
init_cuda(void){
thread_num = (N <= 16) ? N : 16 ;
block_num = N / (thread_num*thread_num);
if(N % (thread_num*thread_num) != 0) block_num++;
res = cuInit(0);
if(res != CUDA_SUCCESS){
printf("cuInit failed: res = %s\n", conv(res));
exit(1);
}
res = cuDeviceGet(&dev, 0);
if(res != CUDA_SUCCESS){
printf("cuDeviceGet failed: res = %s\n", conv(res));
exit(1);
}
res = cuCtxCreate(&ctx, 0, dev);
if(res != CUDA_SUCCESS){
printf("cuCtxCreate failed: res = %s\n", conv(res));
exit(1);
}
res = cuModuleLoad(&module, "./cuda_main.cubin");
if(res != CUDA_SUCCESS){
printf("cuModuleLoad() failed: res = %s\n", conv(res));
exit(1);
}
res = cuModuleGetFunction(&function, module, "cuda_main");
if(res != CUDA_SUCCESS){
printf("cuModuleGetFunction() failed: res = %s\n", conv(res));
exit(1);
}
/*
* preparation for launch kernel
*/
res = cuFuncSetSharedSize(function, 0x40); /* just random */
if(res != CUDA_SUCCESS){
printf("cuFuncSetSharedSize() failed: res = %s\n", conv(res));
exit(1);
}
res = cuFuncSetBlockShape(function, thread_num, thread_num, 1);
if(res != CUDA_SUCCESS){
printf("cuFuncSetBlockShape() failed: res = %s\n", conv(res));
exit(1);
}
}
开发者ID:CPFL,项目名称:gtraffic,代码行数:57,代码来源:ov.c
示例19: main
int main(int argc, char *argv[])
{
char c;
CUcontext ctx;
CUdevice dev = 0;
void *toSpace;
int status, free, total;
CUdeviceptr ptr = (CUdeviceptr)NULL;
int size;
if(argc != 2){
fprintf(stderr,"Usage: mem_alloc.exe [MEMORY TO ALLOCATE IN MB]\n");
exit(1);
}
printf("All status results should be 0, if not an error has occured.\nIf 2 is reported an out of memory error has occured for\nwhich you should decrease the memory input\n");
size = atoi(argv[1]);
printf("\nTrying to allocate %iMB of memory on host and GPU\n",size);
if(size <= 0){
fprintf(stderr,"\nERROR: Memory must be greater than 0\n");
exit(1);
}
status = cuInit(0);
printf("Init status: %i\n",status);
status = cuCtxCreate(&ctx, 0, dev);
printf("Context creation status: %i\n",status);
cuMemGetInfo(&free, &total);
printf("Get memory info status: %i\n",status);
printf("\n%.1f/%.1f (Free/Total) MB\n", free/1024.0/1024.0, total/1024.0/1024.0);
status = cuMemHostAlloc(&toSpace, size*1024*1024, 0);
printf("Host allocation status: %i %s\n",status, (status==CUDA_SUCCESS) ? "SUCCESS" : "FAILED");
status = cuMemAlloc(&ptr, size*1024*1024);
printf("GPU allocation status: %i %s\n",status, (status==CUDA_SUCCESS) ? "SUCCESS" : "FAILED");
printf("\nPress any key to exit...");
scanf("%c", &c);
status = cuCtxDestroy(ctx);
printf("Context destroy status: %i\n",status);
return 0;
}
开发者ID:Arella,项目名称:rootbeer1,代码行数:50,代码来源:mem_alloc.c
示例20: R_cuCtxCreate
SEXP
R_cuCtxCreate(SEXP r_flags, SEXP r_dev)
{
SEXP r_ans = R_NilValue;
CUcontext pctx;
unsigned int flags = REAL(r_flags)[0];
int dev = INTEGER(r_dev)[0];
CUresult ans;
ans = cuCtxCreate(& pctx, flags, dev);
if(ans)
return(R_cudaErrorInfo(ans));
r_ans = R_createRef(pctx, "CUcontext") ;
return(r_ans);
}
开发者ID:PachoAlvarez,项目名称:RCUDA,代码行数:14,代码来源:context.c
注:本文中的cuCtxCreate函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论