Cmake+Ubuntu+CUDA+C混合编译

本文介绍了如何在Ubuntu系统中,使用Cmake进行CUDA和C++的混合编译。提到了在遇到链接错误时,如何在CMakeLists.txt中设置CMAKE_C_COMPILER为g++来解决,并指出在使用gcc链接库时,-lstdc++应放在末尾。此外,还解决了在CUDA编译中遇到的std::to_string未定义问题,通过在/cuda/CMakeLists.txt中添加CUDA_NVCC_FLAGS -std=c++11来指定C++11标准。
摘要由CSDN通过智能技术生成

一. 环境
Jetson TK1 开发套件+Ubuntu 14.04
Cmake安装:sudo apt-get install cmake

二.示例
1.目录树

2.源码
/cuda/cube.cu
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#include "cube.cuh"

__global__ void cube_core(int *dev_a, int *dev_b){
	int tid=blockIdx.x;
	int tmp=*(dev_a+tid);
	*(dev_b+tid)=tmp*tmp*tmp;	
}


void cube(int result[], int n){
	int a[n];
	for(int i=0;i<n;i++){
		a[i]=i;	
	}	
	int *dev_a=NULL;
	int *dev_b=NULL;
	cudaMalloc((void**)&dev_a,n*sizeof(int));
	cudaMemset((void**)&dev_a,0,n*sizeof(int));
	cudaMalloc((void**)&dev_b,n*sizeof(int));
	cudaMemset((void**)&dev_b,0,n*sizeof(int));
	cudaMemcpy(dev_a,(void**)&a,n*sizeof(int),cudaMemcpyHostToDevice);
	cube_core<<<n,1>>>(dev_a,dev_b);
	cudaMemcpy((void **)&result[0],dev_b,n*sizeof(int),cudaMemcpyDeviceToHost);
}
/cuda/cu.cuh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值