本文整理汇总了C++中cuDeviceGet函数的典型用法代码示例。如果您正苦于以下问题:C++ cuDeviceGet函数的具体用法?C++ cuDeviceGet怎么用?C++ cuDeviceGet使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cuDeviceGet函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: 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
示例2: 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
示例3: 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
示例4: fprintf
void GPUInterface::GetDeviceDescription(int deviceNumber,
char* deviceDescription) {
#ifdef BEAGLE_DEBUG_FLOW
fprintf(stderr, "\t\t\tEntering GPUInterface::GetDeviceDescription\n");
#endif
CUdevice tmpCudaDevice;
SAFE_CUDA(cuDeviceGet(&tmpCudaDevice, (*resourceMap)[deviceNumber]));
#if CUDA_VERSION >= 3020
size_t totalGlobalMemory = 0;
#else
unsigned int totalGlobalMemory = 0;
#endif
int clockSpeed = 0;
int mpCount = 0;
int major = 0;
int minor = 0;
SAFE_CUDA(cuDeviceComputeCapability(&major, &minor, tmpCudaDevice));
SAFE_CUDA(cuDeviceTotalMem(&totalGlobalMemory, tmpCudaDevice));
SAFE_CUDA(cuDeviceGetAttribute(&clockSpeed, CU_DEVICE_ATTRIBUTE_CLOCK_RATE, tmpCudaDevice));
SAFE_CUDA(cuDeviceGetAttribute(&mpCount, CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT, tmpCudaDevice));
sprintf(deviceDescription,
"Global memory (MB): %d | Clock speed (Ghz): %1.2f | Number of cores: %d",
int(totalGlobalMemory / 1024.0 / 1024.0 + 0.5),
clockSpeed / 1000000.0,
nGpuArchCoresPerSM[major] * mpCount);
#ifdef BEAGLE_DEBUG_FLOW
fprintf(stderr, "\t\t\tLeaving GPUInterface::GetDeviceDescription\n");
#endif
}
开发者ID:answer19831020,项目名称:beagle-lib,代码行数:35,代码来源:GPUInterfaceCUDA.cpp
示例5: 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
示例6: main
main()
{
/* initialize CUDA */
CUresult res;
res = cuInit(0);
MY_CUDA_CHECK(res, "cuInit()");
/* check GPU is setted or not */
int device_num;
res = cuDeviceGetCount(&device_num);
MY_CUDA_CHECK(res, "cuDeviceGetCount()");
if (device_num == 0) { // no GPU is detected
fprintf(stderr, "no CUDA capable GPU is detected...\n");
exit(1);
}
printf("%d GPUs are detected\n", device_num);
for (int i=0; i<device_num; i++)
{
/* get device handle of GPU No.i */
CUdevice dev;
res = cuDeviceGet(&dev, i);
MY_CUDA_CHECK(res, "cuDeviceGet()");
/* search compute capability of GPU No.i */
int major=0, minor=0;
res = cuDeviceComputeCapability(&major, &minor, dev);
MY_CUDA_CHECK(res, "cuDeviceComputeCapability()");
printf("GPU[%d] : actual compute capability is : %d%d\n", i, major, minor);
}
}
开发者ID:Aand1,项目名称:ROSCH,代码行数:34,代码来源:check_GPU.c
示例7: printout_devices
void printout_devices( )
{
int ndevices;
cuDeviceGetCount( &ndevices );
for( int idevice = 0; idevice < ndevices; idevice++ )
{
char name[200];
#if CUDA_VERSION > 3010
size_t totalMem;
#else
unsigned int totalMem;
#endif
int clock;
CUdevice dev;
cuDeviceGet( &dev, idevice );
cuDeviceGetName( name, sizeof(name), dev );
cuDeviceTotalMem( &totalMem, dev );
cuDeviceGetAttribute( &clock,
CU_DEVICE_ATTRIBUTE_CLOCK_RATE, dev );
printf( "device %d: %s, %.1f MHz clock, %.1f MB memory\n",
idevice, name, clock/1000.f, totalMem/1024.f/1024.f );
}
}
开发者ID:cjy7117,项目名称:FT-MAGMA,代码行数:25,代码来源:auxiliary.cpp
示例8: 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
示例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: 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
示例11: 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
示例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: cuInit
device::device() {
cuInit(0);
cuDeviceGet(&cu_device, 0);
checkCudaError("device::device Init");
//cuCtxCreate(&cu_context, 0, cu_device);
//checkCudaError("device::device Create context");
device_name = props.name;
}
开发者ID:STEllAR-GROUP,项目名称:hpxcl,代码行数:8,代码来源:device_server.cpp
示例14: get_suitable_block_num
int get_suitable_block_num(int device,
int *max_block_num,
int *mp_num,
int word_size,
int thread_num,
int large_size)
{
#ifdef TODO
cudaDeviceProp dev;
CUdevice cuDevice;
int max_thread_dev;
int max_block, max_block_mem, max_block_dev;
int major, minor, ver;
//int regs, max_block_regs;
ccudaGetDeviceProperties(&dev, device);
cuDeviceGet(&cuDevice, device);
cuDeviceComputeCapability(&major, &minor, cuDevice);
//cudaFuncGetAttributes()
#if 0
if (word_size == 4) {
regs = 14;
} else {
regs = 16;
}
max_block_regs = dev.regsPerBlock / (regs * thread_num);
#endif
max_block_mem = dev.sharedMemPerBlock / (large_size * word_size + 16);
if (major == 9999 && minor == 9999) {
return -1;
}
ver = major * 100 + minor;
if (ver <= 101) {
max_thread_dev = 768;
} else if (ver <= 103) {
max_thread_dev = 1024;
} else if (ver <= 200) {
max_thread_dev = 1536;
} else {
max_thread_dev = 1536;
}
max_block_dev = max_thread_dev / thread_num;
if (max_block_mem < max_block_dev) {
max_block = max_block_mem;
} else {
max_block = max_block_dev;
}
#if 0
if (max_block_regs < max_block) {
max_block = max_block_regs;
}
#endif
*max_block_num = max_block;
*mp_num = dev.multiProcessorCount;
return max_block * dev.multiProcessorCount;
#endif
return 0;
}
开发者ID:alxames,项目名称:esthera,代码行数:58,代码来源:mtgp-util.c
示例15: SAFE_CUDA
bool GPUInterface::GetSupportsDoublePrecision(int deviceNumber) {
CUdevice tmpCudaDevice;
SAFE_CUDA(cuDeviceGet(&tmpCudaDevice, (*resourceMap)[deviceNumber]));
int major = 0;
int minor = 0;
SAFE_CUDA(cuDeviceComputeCapability(&major, &minor, tmpCudaDevice));
return (major >= 2 || (major >= 1 && minor >= 3));
}
开发者ID:answer19831020,项目名称:beagle-lib,代码行数:9,代码来源:GPUInterfaceCUDA.cpp
示例16: 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
示例17: cuCtxGetCurrent
static void *cuda_init(int ord, int flags, int *ret) {
CUdevice dev;
cuda_context *res;
static int init_done = 0;
if (ord == -2) {
CUcontext ctx;
/* Grab the ambient context */
err = cuCtxGetCurrent(&ctx);
CHKFAIL(NULL);
/* If somebody made a context, then the api is initialized */
init_done = 1;
res = cuda_make_ctx(ctx, DONTFREE);
if (res == NULL) {
FAIL(NULL, GA_IMPL_ERROR);
}
res->flags |= flags;
return res;
}
if (!init_done) {
err = cuInit(0);
CHKFAIL(NULL);
init_done = 1;
}
if (ord == -1) {
int i, c;
err = cuDeviceGetCount(&c);
CHKFAIL(NULL);
for (i = 0; i < c; i++) {
err = cuDeviceGet(&dev, i);
CHKFAIL(NULL);
res = do_init(dev, flags, NULL);
if (res != NULL)
return res;
}
FAIL(NULL, GA_NODEV_ERROR);
} else {
err = cuDeviceGet(&dev, ord);
CHKFAIL(NULL);
return do_init(dev, flags, ret);
}
}
开发者ID:qnix,项目名称:libgpuarray,代码行数:44,代码来源:gpuarray_buffer_cuda.c
示例18: getBestDevice
void getBestDevice(){
int num_devices;
int status;
int i;
CUdevice temp_device;
int curr_multiprocessors;
int max_multiprocessors = -1;
int max_i = -1;
status = cuDeviceGetCount(&num_devices);
if (CUDA_SUCCESS != status)
{
printf("error in cuDeviceGetCount\n");
}
for(i = 0; i < num_devices; ++i){
status = cuDeviceGet(&temp_device, i);
if (CUDA_SUCCESS != status)
{
printf("error in cuDeviceGet\n");
}
status = cuDeviceGetAttribute(&curr_multiprocessors, CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT, temp_device);
if (CUDA_SUCCESS != status)
{
printf("error in cuDeviceGetAttribute CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT\n");
}
if(curr_multiprocessors > max_multiprocessors)
{
max_multiprocessors = curr_multiprocessors;
max_i = i;
}
}
status = cuDeviceGet(&cuDevice, max_i);
if (CUDA_SUCCESS != status)
{
printf("error in cuDeviceGetName\n");
}
status = cuDeviceGetAttribute(&maxGridDim, CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X, cuDevice);
if (CUDA_SUCCESS != status)
{
printf("error in cuDeviceGetAttribute CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X\n");
}
numMultiProcessors = max_multiprocessors;
}
开发者ID:ealliaume,项目名称:rootbeer1,代码行数:44,代码来源:CudaRuntime2.c
示例19: 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
示例20: KVS_CU_CALL
/*===========================================================================*/
bool Device::create( const int ordinal )
{
KVS_CU_CALL( cuDeviceGet( &m_handler, ordinal ) );
if ( kvs::cuda::DriverAPI::HasError() ) return false;
KVS_CU_CALL( cuDeviceGetProperties( &m_property, m_handler ) );
if ( kvs::cuda::DriverAPI::HasError() ) return false;
return true;
}
开发者ID:digirea,项目名称:KVS,代码行数:11,代码来源:Device.cpp
注:本文中的cuDeviceGet函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论