当前位置: 首页 > news >正文

ubuntu 18.04 cuda 11.01 gpgpu-sim 裸机编译

1,环境

ubuntu 18.04

x86_64

cuda 11.01

gpgpu-sim master 

commit 90ec3399763d7c8512cfe7dc193473086c38ca38

2,预备环境

一个比较新的 ubuntu 18.04,为了迎合 cuda 11.01 的版本需求

安装如下软件:

sudo apt-get install -y     xutils-dev bison zlib1g-dev flex libglu1-mesa-dev doxygen graphviz     python-pmw python-ply python-numpy python-matplotlib python-pip libpng-dev

3,安装cuda sdk 11.01

下载:

wget https://developer.download.nvidia.com/compute/cuda/11.0.1/local_installers/cuda_11.0.1_450.36.06_linux.run

安装在目录  /home/hanmeimei/cuda/cuda

 bash cuda_11.0.1_450.36.06_linux.run --silent --toolkit --toolkitpath=/home/hanmeimei/cuda/cuda

设置环境变量:

export CUDA_INSTALL_PATH=/home/hanmeimei/cuda/cuda

4,下载编译 gpgpu-sim master

git clone https://github.com/gpgpu-sim/gpgpu-sim_distribution.git

cd gpgpu-sim_distribution/

设置环境:

 . setup_environment

make -j

5. 编译运行 cuda app

此时 nvcc 是刚才安装的 nvcc

 vim vectorAdd.cu

#include <iostream>
#include <cuda_runtime.h>#define N 16384// write kernel function of vector addition
__global__ void vecAdd(float *a, float *b, float *c, int n)
{int i = threadIdx.x + blockDim.x * blockIdx.x;if (i < n)c[i] = a[i] + b[i];
}int main()
{float *a, *b, *c;float *d_a, *d_b, *d_c;int size = N * sizeof(float);// allocate space for device copies of a, b, ccudaMalloc((void **)&d_a, size);cudaMalloc((void **)&d_b, size);cudaMalloc((void **)&d_c, size);// allocate space for host copies of a, b, c and setup input valuesa = (float *)malloc(size);b = (float *)malloc(size);c = (float *)malloc(size);for (int i = 0; i < N; i++){a[i] = i;b[i] = i * i;}// copy inputs to devicecudaMemcpy(d_a, a, size, cudaMemcpyHostToDevice);cudaMemcpy(d_b, b, size, cudaMemcpyHostToDevice);// launch vecAdd() kernel on GPUvecAdd<<<(N + 255) / 256, 256>>>(d_a, d_b, d_c, N);cudaDeviceSynchronize();// copy result back to hostcudaMemcpy(c, d_c, size, cudaMemcpyDeviceToHost);// verify resultfor (int i = 0; i < N; i++){if (a[i] + b[i] != c[i]){std::cout << "Error: " << a[i] << " + " << b[i] << " != " << c[i] << std::endl;break;}}std::cout << "Done!" << std::endl;// clean upfree(a);free(b);free(c);cudaFree(d_a);cudaFree(d_b);cudaFree(d_c);return 0;
}

编译:

nvcc vectorAdd.cu --cudart shared -o vectorAdd

拷贝 配置文件:

cp gpgpu-sim_distribution/configs/tested-cfgs/SM7_QV100/config_volta_islip.icnt ./
 cp gpgpu-sim_distribution/configs/tested-cfgs/SM7_QV100/gpgpusim.config ./

运行app;

./vectorAdd

运行结束:

http://www.lryc.cn/news/454219.html

相关文章:

  • 【Kubernetes】常见面试题汇总(五十二)
  • o1-preview 在 IMO 2024 第一题的实测表现
  • iOS--RunLoop原理
  • 并查集——从LeetCode题海中总结常见套路
  • 深入理解作用域【JavaScript】
  • 微信小程序实战教程:如何使用map组件实现地图功能
  • 张雪峰谈人工智能技术应用专业的就业前景!
  • 机器学习课程学习周报十五
  • rabbitMq------客户端模块
  • 地理定位营销与开源AI智能名片O2O商城小程序的融合与发展
  • 解决Vue应用中遇到路由刷新后出现 404 错误
  • 在window10下使用directml加速phi-3模型的一些记录
  • 通信工程学习:什么是OSPF开放式最短路径优先
  • 《中国电子报》报道: 安宝特AR为产线作业者的“秘密武器
  • 【Android】Handler消息机制
  • 大数据必懂知识点:Parquet、ORC还是Avro作为数据存储格式,哪种在性能和压缩率上更优
  • P1387 最大正方形
  • Python知识点:如何使用Multiprocessing进行并行任务管理
  • React常见优化问题
  • css 简单网页布局——浮动(一)
  • 设计模式(3)builder
  • Day01-MySQL数据库介绍及部署
  • 分享一个餐饮连锁店点餐系统 餐馆食材采购系统Java、python、php三个版本(源码、调试、LW、开题、PPT)
  • 解决跨域问题
  • 面试知识储备-多线程
  • 边缘计算插上AI的翅膀会咋样?
  • 脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO
  • 周报_2024/10/6
  • [深度学习][python]yolov11+bytetrack+pyqt5实现目标追踪
  • 如何使用ssm实现基于Web的穿戴搭配系统的设计与实现+vue