Ubuntu下的CUDA + OPENCL安装

OpenCL 教程:从基础到实践 OpenCL(Open Computing Language)是一个开放标准的并行编程框架,用于在异构系统上编写高性能计算程序。它允许开发者利用各种计算设备(如 CPU、GPU、FPGA 等)来加速计算密集型任务。通过本教程,我们已经深入探讨了 OpenCL 的核心概念、编程模型、内存模型和执行模型。我们还通过实际的例子展示了如何实现和优化 OpenCL 程序。记住,优化是一个迭代的过程。始终使用性能分析工具来测量你的优化效果,并根据具体的硬件和问题特性来调整你的策略。 阅读详情

CUDA和OPENCL安装

前言:最近需要做一些GPU并行计算,因而入坑CUDA和OPENCL,两者都有用到一些,刚好有点时间,同时记录一些学习过程,排掉一些坑,这篇是环境安装篇,基本跟着走就没什么问题。

环境:ubuntu18.04 / ubuntu20.04 显卡:Nvidia

CUDA安装

1.查看电脑是否识别GPU
lspci | grep -i nvidia

在这里插入图片描述

2.查看电脑可以安装的显卡驱动版本
  ubuntu-drivers devices

在这里插入图片描述

3.安装显卡驱动,选择上图的recommended
sudo apt install nvidia-driver-XXX
reboot #重启
4.查看显卡信息
nvidia-smi

在这里插入图片描述

5.安装CUDA

到nivida官网下载自己可安装的版本

在这里插入图片描述

复制Base Installer的执行代码,下载脚本(3个多G,可能有点久)

wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run #选择自己的版本

运行脚本进行安装cuda库

sudo sh cuda_11.4.0_470.42.01_linux.run

在弹出的安装界面中选“continue”,如果选了会跳出安装,就说明安装失败,给了失败日志的路径,可以自己查看原因。
在这里插入图片描述

进入下一步,输入accept

在这里插入图片描述

把Driver选项的X去掉,不然它会再给你装一次驱动,会冲突,报错。然后选择Install

在这里插入图片描述

等待安装,没什么问题就成功了。

6.配置环境变量
gedit ~/.bashrc

最后一行增加

export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda

注意查看自己的cuda真是安装路径

7.检查是否安装成功

重新打开终端

nvcc -V

在这里插入图片描述

8.添加cuda lib 路径

注意自己的版本号

sudo echo '/usr/local/cuda-11.4/lib64/' >> /etc/ld.so.conf
sudo ldconfig

CUDA安装成功之后会在终端当前所在目录库生成一个NVIDIA_CUDA-11.4_Samples的编程例子的文件夹,可以用来测试。直接进去目录里面make就行。

OPENCL安装

1.安装

其实CUDA安装是包含了OPENCL的,但是你要使用OPENCL还需要配置一下。

也可以单独安装头文件和库

sudo apt install opencl-headers 
sudo apt install ocl-icd-libopencl1 
sudo apt install ocl-icd-opencl-dev
sudo apt install clinfo
#sudo apt install intel-opencl-icd  #Install NEO OpenCL runtime for Intel GPU

查看电脑当前安装信息

clinfo

在这里插入图片描述

基本OK,接下来就可以愉快的写代码了。

2.测试opencl
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
 
#ifdef MAC  
#include <OpenCL/cl.h>  
#else  
#include <CL/cl.h>  
#endif  
 
int main() {  
 
    /* Host data structures */  
    cl_platform_id *platforms;  
    //每一个cl_platform_id 结构表示一个在主机上的OpenCL执行平台,就是指电脑中支持OpenCL的硬件,如nvidia显卡,intel CPU和显卡,AMD显卡和CPU等  
    cl_uint num_platforms;  
    cl_int i, err, platform_index = -1;  
 
    /* Extension data */  
    char* ext_data;                           
    size_t ext_size;     
    const char icd_ext[] = "cl_khr_icd";  
 
    //要使platform工作,需要两个步骤。1 需要为cl_platform_id结构分配内存空间。2 需要调用clGetPlatformIDs初始化这些数据结构。一般还需要步骤0:询问主机上有多少platforms  
 
    /* Find number of platforms */  
    //返回值如果为-1就说明调用函数失败,如果为0标明成功  
    //第二个参数为NULL代表要咨询主机上有多少个platform,并使用num_platforms取得实际flatform数量。  
    //第一个参数为1,代表我们需要取最多1个platform。可以改为任意大如:INT_MAX整数最大值。但是据说0,否则会报错,实际测试好像不会报错。下面是步骤0:询问主机有多少platforms  
    err = clGetPlatformIDs(5, NULL, &num_platforms);          
    if(err < 0) {          
        perror("Couldn't find any platforms.");           
        exit(1);                              
    }                                     
 
    printf("I have platforms: %d\n", num_platforms); //本人计算机上显示为2,有intel和nvidia两个平台  
 
    /* Access all installed platforms */  
    //步骤1 创建cl_platform_id,并分配空间  
    platforms = (cl_platform_id*)                     
        malloc(sizeof(cl_platform_id) * num_platforms);   
    //步骤2 第二个参数用指针platforms存储platform  
    clGetPlatformIDs(num_platforms, platforms, NULL);         
 
    /* Find extensions of all platforms */  
    //获取额外的平台信息。上面已经取得了平台id了,那么就可以进一步获取更加详细的信息了。  
    //一个for循环获取所有的主机上的platforms信息  
    for(i=0; i<num_platforms; i++)   
    {  
        /* Find size of extension data */  
        //也是和前面一样,先设置第三和第四个参数为0和NULL,然后就可以用第五个参数ext_size获取额外信息的长度了。  
        err = clGetPlatformInfo(platforms[i],             
            CL_PLATFORM_EXTENSIONS, 0, NULL, &ext_size);      
        if(err < 0)   
        {  
            perror("Couldn't read extension data.");              
            exit(1);  
        }     
 
        printf("The size of extension data is: %d\n", (int)ext_size);//我的计算机显示224.  
 
        /* Access extension data */    
        //这里的ext_data相当于一个缓存,存储相关信息。  
        ext_data = (char*)malloc(ext_size);   
        //这个函数就是获取相关信息的函数,第二个参数指明了需要什么样的信息,如这里的CL_PLATFORM_EXTENSIONS表示是opencl支持的扩展功能信息。我计算机输出一大串,机器比较新(专门为了学图形学而购置的电脑),支持的东西比较多。  
        clGetPlatformInfo(platforms[i], CL_PLATFORM_EXTENSIONS,       
            ext_size, ext_data, NULL);                
        printf("Platform %d supports extensions: %s\n", i, ext_data);  
 
        //这里是输出生产商的名字,比如我显卡信息是:NVIDIA CUDA  
        char *name = (char*)malloc(ext_size);  
        clGetPlatformInfo(platforms[i], CL_PLATFORM_NAME,     
            ext_size, name, NULL);                
        printf("Platform %d name: %s\n", i, name);  
 
        //这里是供应商信息,我显卡信息:NVIDIA Corporation  
        char *vendor = (char*)malloc(ext_size);  
        clGetPlatformInfo(platforms[i], CL_PLATFORM_VENDOR,       
            ext_size, vendor, NULL);                  
        printf("Platform %d vendor: %s\n", i, vendor);  
 
        //最高支持的OpenCL版本,本机显示:OpenCL1.1 CUDA 4.2.1  
        char *version = (char*)malloc(ext_size);  
        clGetPlatformInfo(platforms[i], CL_PLATFORM_VERSION,      
            ext_size, version, NULL);                 
        printf("Platform %d version: %s\n", i, version);  
 
        //这个只有两个值:full profile 和 embeded profile  
        char *profile = (char*)malloc(ext_size);  
        clGetPlatformInfo(platforms[i], CL_PLATFORM_PROFILE,      
            ext_size, profile, NULL);                 
        printf("Platform %d full profile or embeded profile?: %s\n", i, profile);  
 
        /* Look for ICD extension */     
        //如果支持ICD这一扩展功能的platform,输出显示,本机的Intel和Nvidia都支持这一扩展功能  
        if(strstr(ext_data, icd_ext) != NULL)   
            platform_index = i;  
        //std::cout<<"Platform_index = "<<platform_index<<std::endl;  
        printf("Platform_index is: %d\n", platform_index);  
        /* Display whether ICD extension is supported */  
        if(platform_index > -1)  
            printf("Platform %d supports the %s extension.\n",   
            platform_index, icd_ext);  
 
 
        //释放空间  
        free(ext_data);  
        free(name);  
        free(vendor);  
        free(version);  
        free(profile);  
    }  
 
    if(platform_index <= -1)  
        printf("No platforms support the %s extension.\n", icd_ext);  
 
    /* Deallocate resources */  
    free(platforms);  
    return 0;  
}   

用gcc编译以上程序:

gcc opencl_hello.c -o opencl_hello -lOpenCL

若有类似如下输出,则表示opencl配置正确:
在这里插入图片描述

ubtunu20.04 opencl 安装 ubuntu20.04 opencl 安装 阅读详情

相关推荐

Ubuntu16.04 + CUDA8.0 + OpenCL + Nvidia 安装配置和问题总结

1. 安装Nvidia的Driver(推荐配置时在其它移动设备参考本文章,部分步骤会关闭图形处理器,进入纯命令行界面,如果没有在别的地方打开或是记住下面的步骤则无法进行下去) The input tool was broken, so just use English. I try to use runfile to install, but failed.  There are some

无厘头码农一枚 9272

Ubuntu20.04安装OpenCL

Ubuntu20.04 OpenCL安装

Linda的博客 2741

ubuntu16.04 配置ffmpeg,cuda,opencl环境

本文介绍了如何在新装的ubuntu16.04系统上配置ffmpeg环境,cuda环境和opencl环境。

smallflyingpig的专栏 6215

ubuntu安装OpenCL

ubuntu安装OpenCL

s565469612的博客 2300

Tensorflow-opencl ubuntu安装教程(第一帖)

由于需要在opencl上做一些深度学习的分析,而且我又只会tensorflow所以开始了tensorflow-opencl的下载。   当时在github上发现了两个项目,一个是tf-coriander:https://github.com/hughperkins/tf-coriander。还有一个是tensorflow-opencl:https://github.com/benoitstein

subshall的博客 8420

ubuntu12.04 CUDA/OpenCL环境搭建

I have not installed an input method right now so I have to write this bolg in English. http://blog.csdn.net/xianbt/article/details/18871851

XianBT的专栏 3051

ubuntu16.04安装NVIDIA及CUDA,配置OpenCL

ubuntu16.04安装NVIDIA及cuda 说明:拟使用ubuntu16.04LTS,NVIDIA driver384及cuda9.0,jdk1.8,scala2.11.8,hadoop2.7.6,spark2.1.0,eclipseForScala4.7.0,maven3.5.0,opencl1.2,具体参数见详细步骤。 1 Linux系统安装 1.1 下载准备材料 下载ubu...

Fortuna_i的博客 4170

Ubuntu 安装 CUDA 与 OPENCL

前言:最近需要做一些GPU并行计算,因而入坑CUDA和OPENCL,两者都有用到一些,刚好有点时间,同时记录一些学习过程,排掉一些坑,这篇是环境安装篇,基本跟着走就没什么问题。CUDA安装成功之后会在终端当前所在目录库生成一个NVIDIA_CUDA-11.4_Samples的编程例子的文件夹,可以用来测试。在弹出的安装界面中选“continue”,如果选了会跳出安装,就说明安装失败,给了失败日志的路径,可以自己查看原因。把Driver选项的X去掉,不然它会再给你装一次驱动,会冲突,报错。

专注基础架构领域 2373

Ubuntu 18.04 安装Nvidia 驱动 +cuda+opencl

一 检查nvidia显卡类型及驱动版本 1 检查nvidia显卡类型 lspci | grep -i nvidia (base) windmil@windmil-Inspiron-7472:~$ lspci | grep -i nvidia 01:00.0 3D controller: NVIDIA Corporation GP108M [GeForce MX150] (rev a1) 检查类型为 GeForce MX150 2 检查建议驱动版本 ubuntu-drivers devices (ba

windmilatholland的博客 3288

纯JS实现SM3加密算法(兼容IE浏览器)

纯JS实现SM3加密,IE、谷歌、火狐等浏览器可以直接使用。

qianpou的博客 7344

Sylvester结式法求解多项式方程

Sylvester结式法,结式,消元法,ctfshow 七夕杯 LUCK7,crypto,WriteUp

u010883831的博客 4522

【cuda+opencl安装记录】ubuntu18.04+cuda(含opencl)+cudnn

只要是从英伟达官方下载的cuda包,那么opencl就是包含在里面的。 我参考的三篇博文:一、 二、 三 感谢各位博主! 一、安装英伟达显卡驱动,网上博客很多,不再赘述。 二、安装cuda和cudnn 网上教程也很多,推荐一篇 (安装并配置好cuda后,命令行输入nvcc --version可显示cuda版本号。) 三、配置opencl opencl包含在cuda里,只需配置一下即可。 包括两部分, (1)确认: 1 opencl header -> /usr/l...

怕走崎岖路,莫想登高峰 1394

步进电机梯形加减速算法的实现

步进电机梯形加减速算法的实现

m0_69251699的博客 1312

ubuntu14.04下配置cuda8.0以及测试OpenCL(测试通过)

标签(空格分隔):linux cuda OpenCL环境: 系统:ubuntu14.04(linux) 显卡:NVIDIA cuda版本:cuda8.0安装cuda8.0(使用deb安装)并测试官方下载安装包:https://developer.nvidia.com/cuda-downloads 这里我使用的是基于ubuntu14.04的deb的local版本 下载完成之后参考 CUDA

hust_sheng的专栏 6968

STM32F103RCT6的FLASH读写操作

STM32F103RCT6是一款常用的32位微控制器,它具有内置的FLASH存储器,可以用于存储程序代码和数据。在本文中,我们将详细介绍如何进行STM32F103RCT6的FLASH读写操作,并提供相应的源代码。写入数据时,我们通过将数据直接写入FLASH地址来完成。通过使用适当的API和规则,我们可以有效地读取和写入数据。写入FLASH时,我们需要按特定的规则进行编程。首先,我们需要包含适当的头文件和定义相关的宏和变量,以便在代码中使用FLASH API。类型的指针,我们可以直接读取FLASH中的数据。

UplKubernetes的博客 1029

无人船 | 基于ROS的轻量级多无人艇自主导航仿真框架

无人水面艇USV是海上自主无人系统的关键组成部分,在民用、军用领域应用广泛,例如海上救援、水质测量、扫雷反潜等,因此对USV导航算法的研究具有重要意义。为了便于进行USV相关算法的验证与部署,本文介绍的这套基于ROS的多无人艇的自主导航仿真平台,轻量化地实现了建图、规划、控制等多种功能,同时自研框架保证了功能的高度可拓展和可定制

FRIGIDWINTER的博客 7970

OpenCL编程初探

首先参考如下文章部署CUDA开发环境 FairMOT部署 Cuda环境搭建并进行推理验证_tugouxp的专栏-CSDN博客环境准备1.PC Host Ubuntu 18.04.6,Linux Kernel 5.4,内核版本关系不大,记录下来备查。2.安装基础工具,比如GCC,CMAKE,VIM,GIT等等,工具尽量完备, 如果做不到,遇到问题临时下载也可。3.安装python3发行版,我用的是anaconda发行版,具体版本是 Anaconda3-2020.11-Linux-x86_64.sh下载地址在

tugouxp的专栏 2117

MATLAB船舶开尔文尾迹三维仿真建模

开尔文尾迹介绍 Kelvin最早研究舰船在水面运动在水面上形成波纹的原理,主要针对静水中点源运动的尾迹问题,并给出尾迹的张角和波高分布情况。由 Kelvin 的理论,一般情况下假设由一个理想点源来代替舰船,开尔文尾迹由分歧波和横断波组成,分歧波向船的两侧扩散,而横断波主要向船的后方传播,在相遇的地方两波相干形成尖头波,且尖头波位于尾迹角16°到19.5°之间,又因为尖头波波长过短,以至于无法单独的区分出每个尖头波的波前,所有的波前在视觉效果上就连成一条直线表现为亮线,称为开尔文臂,开尔文臂以船身对称,且角度

qq_19512613的博客 3840

矩池云上nvidia opencl安装及测试教程

本教程租用的是2080ti,3.7多框架镜像。 添加nvidia-cuda的阿里源 curl -fsSL https://mirrors.aliyun.com/nvidia-cuda/ubuntu1804/x86_64/7fa2af80.pub | apt-key add - echo "deb https://mirrors.aliyun.com/nvidia-cuda/ubuntu1804/x86_64/ /" > /etc/apt/sources.list.d/cuda.list apt .

机器学习是魔鬼的博客 1171

K230在原有LVGL控件触摸屏控制的基础上,增加USB鼠标控制!

搭配CanMV图形化编程,中小学生可快速开发“键鼠控制AI小游戏”“智能画板”等趣味项目,降低AI学习门槛;:HDMI屏幕+键鼠组合,直接在开发板上调试代码、修改ISP参数、查看AI推理日志,无需频繁连接电脑;:打造带交互的AI设备(如工业控制面板、智能显示器),鼠标操作菜单、键盘输入指令,体验媲美小型PC;:无网络场景下,通过键盘直接向AI设备录入数据、配置参数,适配野外监测、本地工控等场景。,自动识别、快速响应,完美适配交互控制、参数调试、数据输入等场景。

weixin_47446386的博客 141

Cesium+Vue3教程(003):基于Vue3的Cesium自定义地图和地图叠加

在 Cesium 中,是用于加载地表影像图层的核心接口。通过它,您可以将各种地图服务(如卫星影像、街道地图、自定义瓦片等)加载到 Cesium 的地球上。Cesium 提供了多个内置的。

WwLK123的博客 628

Ubuntu 20.04显卡驱、cuda和cudnn安装以及OpenCV3.3.1的加上openCL和cuda功能编译

文章目录一、显卡驱动安装1.1 卸载Ubuntu的SoftWare Update中安装的显卡驱动和将neavue黑名单二、cuda安装注意事项和错误解决三、编译OpenCV错误解决 一、显卡驱动安装   参考链接:https://blog.csdn.net/qq_38649880/article/details/95795902   1.1 卸载Ubuntu的SoftWare Update中安装的显卡驱动和将neavue黑名单   在安装显卡驱动之前需要先把之前安装的失败的驱动和通过Ubuntu自带的

qq_40250056的博客 960

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Ubuntu验证查看库的安装情况

以下是ubuntu系统安装完成一些库后,验证查看各个库的安装情况。 1. CUDA8.0 yuanlibin@yuanlibin:~$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005 - 2016 NVIDIA Corporation Built on Sun_Sep__4_22: 14 :0...

aaa8493077的博客 1442

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

在Ubuntu22.04上下载katago并部署到Sabaki上(更新中)

在Ubuntu上,我推荐使用Sabaki,因为它下载即可打开使用,而Lizzieyzy虽然功能更齐全,但它需要java环境而且容易报错。在合适的位置新建文件夹katago,在下面再新建一个文件夹katago_opencl,将这个安装包解压至katago_opencl下,结果如下所示。如果你的电脑有一个不错的独显并且希望快速开始的话,OpenCL是最好的选择,它不需要配置CUDA或者cuDNN。29的超大棋盘,不过对电脑性能的要求也更高,想玩的就可以下载带bs29的版本。,对于Ubuntu选择。

weixin_72935337的博客 3370

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ubantu18.04安装NVIDIA驱动 CUDA cuDNN (笔记)

ubantu环境配置安装NVIDIA驱动NVIDIA显卡型号查询驱动安装安装CUDANVIDIA/CUDA/CUDNN型号查询CUDA安装添加环境变量安装CUDANN 安装NVIDIA驱动 NVIDIA显卡型号查询 驱动安装 安装CUDA NVIDIA/CUDA/CUDNN型号查询 CUDA安装 添加环境变量 方法1:修改home目录下的 .bashrc 文件(用户级变量) 打开home目录的 .bashrc文件 cd ~ #进入home目录 vim .bashrc #打开bashrc文件 在.

m0_37351127的博客 503
上一篇: 阿里云主机安装MySQL,并用datagrip连接
下一篇: 使用ros1_bridge将ROS的消息和服务接入ROS2
long--0217
博客等级 码龄9年 15粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值