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.xdnf.cn/news/1553271.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3 proxy跨域代理

一、跨域问题 假设vue项目的运行地址为&#xff1a;http://localhost:5173&#xff0c;此时我们想要调用后端服务的rest api&#xff0c;而后端接口暴露的地址为&#xff1a;https://192.168.1.1:8080/user。 可以发现前端服务与后端服务的域名是不同的&#xff0c;默认情况下…

MySQL 中变量的使用指南

一、引言 在 MySQL 数据库中&#xff0c;变量可以帮助我们更灵活地处理数据和执行查询。变量可以存储各种类型的值&#xff0c;并且可以在 SQL 语句中进行引用和操作。本文将介绍如何在 MySQL 中使用变量&#xff0c;包括用户定义变量和系统变量&#xff0c;并分享一些实际案例…

体验鸿蒙开发第一课

Index.ets: // 导入页面路由模块 import router from ohos.router; Entry Component struct Index {State message: string 我是没头脑build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold) // 添加一个按钮Button() {Text("Open Pa…

Redis中一些其他的数据类型渐进式遍历

我们之前说了redis中的五个类型 分别是&#xff1a;String List Hash Set ZSet&#xff0c;那除了这五个redis文档中还给我们提供了一些其他的数据类型 &#xff08;一&#xff09;一些其他的数据类型 1.stream 这里的数据类型我们只做简单的一些介绍&#xff0c;如果想了解具体…

探索未来:掌握python-can库,开启AI通信新纪元

文章目录 **探索未来&#xff1a;掌握python-can库&#xff0c;开启AI通信新纪元**背景介绍**python-can**库简介安装指南函数使用示例应用场景常见问题及解决方案总结 探索未来&#xff1a;掌握python-can库&#xff0c;开启AI通信新纪元 背景介绍 在人工智能和物联网的飞速…

鸢尾花书实践和知识记录[数学要素3-3几何]

书的作者 文章目录 思维导图使用到的函数几何的介绍&#xff08;略&#xff09;点线面和定义欧几里得几何原本的公理正多边形代码&#xff1a;如何绘制正多边形 三维的几何体柏拉图立体几何变换 角度和弧度角度弧度正负角&#xff08;相位&#xff09;三个角 勾股定理到三角函…

算法笔记(五)——分治

文章目录 算法笔记&#xff08;五&#xff09;——分治快排颜色分类排序数组数组中的第K个最大元素库存管理 III 归并排序数组交易逆序对的总数计算右侧小于当前元素的个数翻转对 算法笔记&#xff08;五&#xff09;——分治 分治算法字面上的解释是“分而治之”&#xff0c;就…

绘制随k变化的等熵面积比公式

xmax 4; Ma 0.1:0.05:xmax; figure; hold on; xlim([0,xmax]); ylim([0,10]);% 预定义k值的向量 k_values 1.2:0.1:1.4;% 创建一个细胞数组来存储图例标签 legendStrings cell(1, length(k_values));% 绘制每条曲线并记录图例标签 lines []; for idx 1:length(k_values)k…

LabVIEW自动生成NI-DAQmx代码

在现代数据采集和控制系统中&#xff0c;LabVIEW被广泛应用于各种工业和科研领域。其中&#xff0c;NI-DAQmx是一个强大的驱动程序&#xff0c;可以帮助用户高效地管理和配置数据采集任务。本文将介绍如何在LabVIEW中通过DAQ Assistant Express VI和任务常量自动生成NI-DAQmx代…

【leetcode】 45.跳跃游戏 ||

如果我们「贪心」地进行正向查找&#xff0c;每次找到可到达的最远位置&#xff0c;就可以在线性时间内得到最少的跳跃次数。 例如&#xff0c;对于数组 [2,3,1,2,4,2,3]&#xff0c;初始位置是下标 0&#xff0c;从下标 0 出发&#xff0c;最远可到达下标 2。下标 0 可到达的…

2024最新的软件测试面试大全(含答案+文档)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、软件测试基础面试题 1、阐述软件生命周期都有哪些阶段? 常见的软件生命周期模型有哪些? 软件生命周期是指一个计算机软件从功能确定设计&#xff0c;到…

【YOLO目标检测行人与车数据集】共5607张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式&#xff1a;YOLO格式 图片数量&#xff1a;5607 标注数量(txt文件个数)&#xff1a;5607 标注类别数&#xff1a;2 标注类别名称&#xff1a;person、car 数据集下载&#xff1a;行人与车数据集 图片示例 数据集图片&#xff1a; …

JAVA基础语法 Day11

一、Set集合 Set特点&#xff1a;无序&#xff08;添加数据的顺序和获取出的数据顺序不一致&#xff09;&#xff0c;不重复&#xff0c;无索引 public class demo1 {public static void main(String[] args) {//1.创建一个集合//HashSet特点&#xff1a;无序&#xff0c;不重…

Linux高级编程_27_系统调用

文章目录 系统调用函数分类系统编程概述系统调用概述**类UNIX系统的软件层次** 用户态和内核态系统调用与库函数的关系文件操作符概述文件磁盘权限 系统调用之文件操作open:打开文件close:关闭文件write:写入read:读取 文件状态fcntl 函数stat 函数 st_mode的值示例 1&#xff…

synchronized底层是怎么通过monitor进行加锁的?

一、monitor是什么 monitor叫做对象监视器、也叫作监视器锁&#xff0c;JVM规定了每一个java对象都有一个monitor对象与之对应&#xff0c;这monitor是JVM帮我们创建的&#xff0c;在底层使用C实现的。 ObjectMonitor() {_header;_count ; // 非常重要&#xff0c;表示锁计数…

【论文速看】DL最新进展20241002-自动驾驶、自监督学习、扩散模型、多模态与图像分割

目录 【自动驾驶】【自监督学习】【扩散模型】【多模态与图像分割】 【自动驾驶】 [轨迹预测] CASPFormer: Trajectory Prediction from BEV Images with Deformable Attention 论文链接&#xff1a;https://arxiv.org/pdf/2409.17790 代码链接&#xff1a;无 运动预测是自动…

基于深度学习的乳腺癌分类识别与诊断系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 乳腺癌是全球最常见的癌症之一&#xff0c;早期诊断对于治疗效果至关重要。近年来&#xff0c;深度学习技术在医学图像分析领域取得了显著进展&#xff0c;能够从大量的医学影像数据中自动学习和提…

[动态规划] 二叉树中的最大路径和##树形DP#DFS

标题&#xff1a;[动态规划] 二叉树中的最大路径和##树形DP#DFS 个人主页水墨不写bug &#xff08;图片来源于网络&#xff09; 目录 一 、什么是树形DP 二、题目描述&#xff08;点击题目转跳至题目&#xff09; NC6 二叉树中的最大路径和 算法思路&#xff1a; 讲解与参考代…

建筑业挂靠行为的防范建议

在建筑行业中&#xff0c;挂靠行为的普遍存在给许多企业带来了法律风险和信誉风险。为了防范这些风险&#xff0c;企业需要采取一系列有效的措施。 一、加强资质管理 企业应当通过合法途径获取和提升自身的资质等级&#xff0c;避免因资质不足而产生挂靠的需求。加强资质管理是…

Python从入门到高手4.2节-掌握循环控制语句

目录 4.2.1 理解循环控制 4.2.2 for循环结构 4.2.3 循环结构的else语句 4.2.4 while循环结构 4.2.5 循环结构可以嵌套 4.2.6 国庆节吃好玩好 4.2.1 理解循环控制 我们先来搞清楚循环的含义。以下内容引自汉语词典: 循环意指往复回旋&#xff0c;指事物周而复始地运动或变…