CUDA与CUDALA联合编程实例
本文将介绍如何在CUDA和CUDALA混合编程模式下进行算法开发,并给出相应的源代码。在开始之前,请确保您已经安装好了NVIDIA的CUDA和CUDALA工具包,并且对GPU编程有一定的了解。
首先,我们需要定义一些CUDA和CUDALA共同使用的宏和函数,如下所示:
#include <stdio.h>
#include <cuda_runtime.h>
#include <cudnn.h>
#define CHECK_CUDNN(call) \
{ \
cudnnStatus_t status = call; \
if (status != CUDNN_STATUS_SUCCESS) { \
fprintf(stderr, "CUDNN error: %s:%d code: %d, reason: %s\n", \
__FILE__, __LINE__, status, cudnnGetErrorString(status)); \
exit(EXIT_FAILURE); \
} \
}
#if CUDART_VERSION < 10000
#define CUDA_8
#else
#define CUDA_9
#endif
#ifdef CUDA_8
#define cudaHostRegister cudaHostRegisterPortable
#define cudaHostUnregister cudaHostUnregisterPortable
#endif
#ifdef CUDA_9
#define cudaEventRecordWithFlags cudaEventRecord
#endif
void print_device_info()
{
int deviceCount;
cudaGetDeviceC