本文整理汇总了C++中cublasDestroy函数的典型用法代码示例。如果您正苦于以下问题:C++ cublasDestroy函数的具体用法?C++ cublasDestroy怎么用?C++ cublasDestroy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cublasDestroy函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: CUDA_CHECK
void Caffe::SetDevice(const int device_id) {
int current_device;
CUDA_CHECK(cudaGetDevice(¤t_device));
if (current_device == device_id) {
return;
}
// The call to cudaSetDevice must come before any calls to Get, which
// may perform initialization using the GPU.
CUDA_CHECK(cudaSetDevice(device_id));
if (Get().cublas_handle_) CUBLAS_CHECK(cublasDestroy(Get().cublas_handle_));
if (Get().cusparse_descr_)CUSPARSE_CHECK(cusparseDestroyMatDescr(Get().cusparse_descr_));
if (Get().cusparse_handle_)CUSPARSE_CHECK(cusparseDestroy(Get().cusparse_handle_));
if (Get().curand_generator_) {
CURAND_CHECK(curandDestroyGenerator(Get().curand_generator_));
}
CUSPARSE_CHECK(cusparseCreate(&Get().cusparse_handle_));
CUSPARSE_CHECK(cusparseCreateMatDescr(&Get().cusparse_descr_));
// cusparseSetMatType(cusparse_descr_,CUSPARSE_MATRIX_TYPE_GENERAL);
// cusparseSetMatIndexBase(cusparse_descr_,CUSPARSE_INDEX_BASE_ZERO);
LOG(INFO)<<"set descr";
CUBLAS_CHECK(cublasCreate(&Get().cublas_handle_));
CURAND_CHECK(curandCreateGenerator(&Get().curand_generator_,
CURAND_RNG_PSEUDO_DEFAULT));
CURAND_CHECK(curandSetPseudoRandomGeneratorSeed(Get().curand_generator_,
cluster_seedgen()));
}
开发者ID:ZhouYuSong,项目名称:caffe-pruned,代码行数:26,代码来源:common.cpp
示例2: cublasDestroy
void CudaUtil::cublasClose(cublasHandle_t handle)
{
cublasStatus_t status = cublasDestroy(handle);
if (status != CUBLAS_STATUS_SUCCESS) {
throw CudaException("CUBALS destroy error");
}
}
开发者ID:onedigit,项目名称:org.onedigit.cuda.cpp,代码行数:7,代码来源:CudaUtil.cpp
示例3: gpu_cublas1
void gpu_cublas1(double *A, double *B, double *C, double *D, double *r, double *nrmC, int N, int N2)
{
#pragma acc data present(A, B, C, D)
{
#pragma acc host_data use_device(A, B, C, D)
{
cublasHandle_t handle;
cublasCreate(&handle);
const double alpha = 1.0;
const double beta = 0.0;
cublasDgemm(handle, CUBLAS_OP_T, CUBLAS_OP_T, N, N, N, &alpha, A, N, B, N, &beta, C, N);
printf(" gpu gemm success \n");
cublasDdot(handle, N2, C, 1, B, 1, r);
printf(" gpu dot success \n");
*r = -1.0 * *r;
cublasDaxpy(handle, N2, r, B, 1, C, 1);
printf(" gpu axpy success \n");
cublasDnrm2(handle, N2, C, 1, nrmC);
printf(" gpu nrm2 success \n");
cublasDcopy(handle, N2, C, 1, D, 1);
printf(" gpu copy success \n");
*nrmC = 1.0 / *nrmC;
cublasDscal(handle, N2, nrmC, D, 1);
printf(" gpu scal success \n");
cublasDestroy(handle);
printf(" gpu destroy success \n");
}
}
}
开发者ID:xflying777,项目名称:OpenAcc,代码行数:29,代码来源:cublas_level_1.cpp
示例4:
Caffe::~Caffe() {
if (cusparse_descr_) CUSPARSE_CHECK(cusparseDestroyMatDescr(cusparse_descr_));
if (cublas_handle_) CUBLAS_CHECK(cublasDestroy(cublas_handle_));
if (cusparse_handle_) CUSPARSE_CHECK(cusparseDestroy(cusparse_handle_));
if (curand_generator_) {
CURAND_CHECK(curandDestroyGenerator(curand_generator_));
}
}
开发者ID:ZhouYuSong,项目名称:caffe-pruned,代码行数:8,代码来源:common.cpp
示例5: ActivateDevice
GpuDevice::Impl::~Impl() {
ActivateDevice();
for (size_t i = 0; i < kParallelism; ++i) {
CUDNN_CALL(cudnnDestroy(cudnn_handle[i]));
CUBLAS_CALL(cublasDestroy(cublas_handle[i]));
CUDA_CALL(cudaStreamDestroy(stream[i]));
}
}
开发者ID:AI42,项目名称:minerva,代码行数:8,代码来源:device.cpp
示例6: cublasDestroy
cuda_running_configuration::~cuda_running_configuration()
{
if (cublas_handle)
cublasDestroy(cublas_handle);
if (cusparse_handle)
cusparseDestroy(cusparse_handle);
cudaDeviceReset();
}
开发者ID:yzxyzh,项目名称:nnForge,代码行数:8,代码来源:cuda_running_configuration.cpp
示例7: contractTT
void contractTT(sTensorGPU *TT1, sTensorGPU *TT2, const int n, const int size)
{
cublasHandle_t handle;
cublasCreate(&handle);
type result=0;
sTensorGPU temp1 = emptyTensor(size*size,2);
sTensorGPU temp2 = emptyTensor(size*size*2,3);
cudaEvent_t start;
cudaEventCreate(&start);
cudaEvent_t stop;
cudaEventCreate(&stop);
//printf("Start contractTT\n");
cudaEventRecord(start, NULL);
int indA = TT1[0].size[0];
int indB = TT2[0].size[0];
sTensorCPU tt1start = copyToCPU(TT1[0]);
sTensorCPU tt2start = copyToCPU(TT2[0]);
sTensorCPU tt1end = copyToCPU(TT1[n - 1]);
sTensorCPU tt2end = copyToCPU( TT2[n - 1]);
for (int i = 0; i < indA; i++){
TT1[0] = prepareTensorStart(tt1start, i);
TT1[n - 1] = prepareTensorEnd(tt1end, i);
for (int j = 0; j < indB; j++){
TT2[0] = prepareTensorStart(tt2start, j);
TT2[n - 1] = prepareTensorEnd(tt2end, j);
contractTensor(handle, TT1[0], TT2[0], temp1);
for (int i = 1; i < n; i++){
contractTensor(handle, temp1, TT1[i], temp2);
contractTensor(handle, temp2, TT2[i], temp1, 2);
}
type add = 0;
cudaMemcpy(&add, temp1.deviceData, sizeof(type), cudaMemcpyDeviceToHost);
//printf("%e ", add);
result += add;
}
}
cudaEventRecord(stop, NULL);
cudaEventSynchronize(stop);
float msecTotal = 0.0f;
cudaEventElapsedTime(&msecTotal, start, stop);
printf("Time: %.3fms\n", msecTotal);
printf("Ops: %.0f\n", bops);
double gigaFlops = (bops * 1.0e-9f) / (msecTotal / 1000.0f);
printf("Perf= %.2f GFlop/s\n", gigaFlops);
cublasDestroy(handle);
cudaDeviceReset();
printf("%.5e \n", result);
exit(0);
}
开发者ID:thomas-hoer,项目名称:cuTT,代码行数:58,代码来源:bigSizeTensors.cpp
示例8: CUBLAS_CHECK
Caffe::~Caffe()
{
if (cublas_handle_)
CUBLAS_CHECK(cublasDestroy(cublas_handle_));
if (curand_generator_)
CURAND_CHECK(curandDestroyGenerator(curand_generator_));
if (vsl_stream_)
VSL_CHECK(vslDeleteStream(&vsl_stream_));
}
开发者ID:xiaobinxu,项目名称:recaffe,代码行数:9,代码来源:common.cpp
示例9: CUDA_CALL
GpuDevice::~GpuDevice() {
CUDA_CALL(cudaSetDevice(device_));
pool_.WaitForAllFinished();
for (size_t i = 0; i < kParallelism; ++i) {
CUDNN_CALL(cudnnDestroy(cudnn_handle_[i]));
CUBLAS_CALL(cublasDestroy(cublas_handle_[i]));
CUDA_CALL(cudaStreamDestroy(stream_[i]));
}
delete data_store_;
}
开发者ID:Exlsunshine,项目名称:minerva,代码行数:10,代码来源:device.cpp
示例10: CUBLAS_CHECK
Caffe::~Caffe() {
// Make sure all device contexts and
// dependent memory blocks are freed properly
device_contexts_.clear();
#ifdef USE_CUDA
if (cublas_handle_)
CUBLAS_CHECK(cublasDestroy(cublas_handle_));
if (curand_generator_) {
CURAND_CHECK(curandDestroyGenerator(curand_generator_));
}
#endif // USE_CUDA
}
开发者ID:aharrison24,项目名称:caffe,代码行数:12,代码来源:common.cpp
示例11: micronn_free
uint micronn_free(micronn* net)
{
uint i;
for(i = 0; i <= net->nhidden; i++) {
micronn_matrix_free(net->weights[i]);
}
free(net->chidden);
free(net->weights);
cublasDestroy(net->handle);
free(net);
return 1;
};
开发者ID:microo8,项目名称:micronn,代码行数:12,代码来源:micronn.c
示例12: dot_gpu
void dot_gpu(double *x, double *y, double *result, int N)
{
#pragma acc data present(x, y)
{
#pragma acc host_data use_device(x, y)
{
cublasHandle_t h;
cublasCreate(&h);
cublasDdot(h, N, x, 1, y, 1, result);
cublasDestroy(h);
}
}
}
开发者ID:xflying777,项目名称:OpenAcc,代码行数:13,代码来源:gmres_part.cpp
示例13: cudaFree
CUDAManager::~CUDAManager()
{
if(m_tempBuffer)
cudaFree(m_tempBuffer);
cudaFree(m_tempRetBuffer);
#ifdef USE_CUSPARSE
if(cusparseHandle) cusparseDestroy(cusparseHandle);
#endif
if(cublasHandle) cublasDestroy(cublasHandle);
cudaDeviceReset();
cout << "Cleaned up CUDA." << endl;
}
开发者ID:bsumirak,项目名称:ugcore,代码行数:13,代码来源:cuda_manager.cpp
示例14: norm_gpu
void norm_gpu(double *x, double *norm, int N)
{
#pragma acc data present(x)
{
#pragma acc host_data use_device(x)
{
cublasHandle_t h;
cublasCreate(&h);
cublasDnrm2(h, N, x, 1, norm);
cublasDestroy(h);
}
}
}
开发者ID:xflying777,项目名称:OpenAcc,代码行数:13,代码来源:gmres_part.cpp
示例15: blasx_resource_dest
void blasx_resource_dest(int GPUs, cublasHandle_t* handles, cudaStream_t* streams, cudaEvent_t* events, float** C_dev)
{
int GPU_id;
for (GPU_id = 0; GPU_id < GPUs; GPU_id++) {
cudaSetDevice( GPU_id );
int i = 0;
for (i = 0; i < STREAMNUM; i++) {
cudaStreamDestroy( streams[i+GPU_id*STREAMNUM] );
cudaEventDestroy( events[i+GPU_id*STREAMNUM] );
}
for (i = 0; i < STREAMNUM*2; i++) cudaFree( C_dev[i+GPU_id*STREAMNUM*2] );
cublasDestroy( handles[GPU_id] );
}
}
开发者ID:529038378,项目名称:BLASX,代码行数:14,代码来源:blasx_tile_resource.c
示例16: CUBLAS_CHECK
Caffe::~Caffe() {
for (vector<cublasHandle_t>& group_cublas_handles : cublas_handles_) {
for (cublasHandle_t h : group_cublas_handles) {
if (h) {
CUBLAS_CHECK(cublasDestroy(h));
}
}
}
for_each(curand_generators_.begin(), curand_generators_.end(), [](curandGenerator_t h) {
if (h) {
CURAND_CHECK(curandDestroyGenerator(h));
}
});
}
开发者ID:Caffe-MPI,项目名称:Caffe-MPI.github.io,代码行数:14,代码来源:common.cpp
示例17: THCudaShutdown
void THCudaShutdown(THCState* state)
{
THCRandom_shutdown(state);
free(state->rngState);
free(state->cudaHostAllocator);
free(state->deviceProperties);
int deviceCount = 0;
int prevDev = -1;
THCudaCheck(cudaGetDevice(&prevDev));
THCudaCheck(cudaGetDeviceCount(&deviceCount));
/* cleanup p2p access state */
for (int dev = 0; dev < deviceCount; ++dev) {
free(state->p2pAccessEnabled[dev]);
}
free(state->p2pAccessEnabled);
/* cleanup per-device state */
for (int dev = 0; dev < deviceCount; ++dev) {
THCudaCheck(cudaSetDevice(dev));
/* Free Torch-defined streams (0 is the default stream) */
for (int stream = 1; stream <= state->numUserStreams; ++stream) {
THCudaCheck(cudaStreamDestroy(
THCState_getDeviceStream(state, dev, stream)));
}
/* Free Torch-defined handles (0 is NULL for consistency with streams API) */
for (int handle = 1; handle <= state->numUserBlasHandles; ++handle) {
THCublasCheck(cublasDestroy(
THCState_getDeviceBlasHandle(state, dev, handle)));
}
/* Free per-stream scratch space; starts at 0 because there is space for
the default stream as well*/
for (int stream = 0; stream <= state->numUserStreams; ++stream) {
THCudaCheck(THCudaFree(state, THCState_getDeviceScratchSpace(state, dev, stream)));
}
free(state->resourcesPerDevice[dev].streams);
free(state->resourcesPerDevice[dev].blasHandles);
free(state->resourcesPerDevice[dev].devScratchSpacePerStream);
}
free(state->resourcesPerDevice);
state->cudaDeviceAllocator.shutdown(state->cudaDeviceAllocator.state);
THCThreadLocal_free(state->currentPerDeviceStream);
THCThreadLocal_free(state->currentPerDeviceBlasHandle);
THCudaCheck(cudaSetDevice(prevDev));
}
开发者ID:ibcn-cloudlet,项目名称:cutorch,代码行数:49,代码来源:THCGeneral.c
示例18: cublas_gemm
void cublas_gemm(const double *A, const double *B, double *C, int N)
{
#pragma acc data present(A, B, C)
{
#pragma acc host_data use_device(A, B, C)
{
cublasHandle_t h;
cublasCreate(&h);
const double alpha = 1.0;
const double beta = 0.0;
cublasDgemm(h, CUBLAS_OP_T, CUBLAS_OP_T, N, N, N, &alpha, A, N, B, N, &beta, C, N);
cublasDestroy(h);
}
}
}
开发者ID:xflying777,项目名称:OpenAcc,代码行数:15,代码来源:cublas_level_1.cpp
示例19: gemv_gpu
void gemv_gpu(double *a, double *b, double *c1, int N)
{
#pragma acc data present(a, b, c1)
{
#pragma acc host_data use_device(a, b, c1)
{
cublasHandle_t handle;
cublasCreate(&handle);
const double alpha = 1.0;
const double beta = 0.0;
cublasDgemv(handle, CUBLAS_OP_T, N, N, &alpha, a, N, b, 1, &beta, c1, 1);
cublasDestroy(handle);
}
} // end pragma data
}
开发者ID:xflying777,项目名称:OpenAcc,代码行数:15,代码来源:dgemv_test2.cpp
示例20: cublas_gemm
// Note : cublasDgemm( handle, CUBLAS_OP_N, CUBLAS_OP_N, n,n,n, &alpha, A, n, B, n, &beta, C, n)
// means matrix C = B * A
void cublas_gemm(int n, double *c, double *b, double *a )
{
#pragma acc data present(a, b, c)
{
#pragma acc host_data use_device(a, b, c)
{
cublasHandle_t handle;
cublasCreate(&handle);
const double alpha = 1.0;
const double beta = 0.0;
cublasDgemm( handle, CUBLAS_OP_N, CUBLAS_OP_N, n,n,n, &alpha, a, n, b, n, &beta, c, n);
cublasDestroy(handle);
}
}
}
开发者ID:xflying777,项目名称:OpenAcc,代码行数:17,代码来源:gmres_part.cpp
注:本文中的cublasDestroy函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论