
cuda
蓝鲸123
做更好的自己
展开
-
cuda-gdb
官方文档kernel之间切换查看当前所在的kernel(cuda-gdb) cuda device sm warp lane block threadblock (0,0,0), thread (0,0,0), device 0, sm 0, warp 0, lane 0 (cuda-gdb) cuda kernel block threadkernel 1, block (0,0,0), thread (0,0,0)(cuda-gdb) cuda kernelkernel 1切换原创 2021-07-04 15:34:33 · 610 阅读 · 0 评论 -
ImportError: libcudart.so.9.2: cannot open shared object file: No such file or directory
找到这些文件,然后复制到/usr/local/lib或者sudo ldconfig /usr/local/cuda/lib64原创 2018-12-28 15:33:36 · 1144 阅读 · 0 评论 -
CUDA ---- Memory Model
Memorykernel性能高低是不能单纯的从warp的执行上来解释的。比如之前博文涉及到的,将block的维度设置为warp大小的一半会导致load efficiency降低,这个问题无法用warp的调度或者并行性来解释。根本原因是获取global memory的方式很差劲。众所周知,memory的操作在讲求效率的语言中占有极重的地位。low-latency和high-bandwidth是高...转载 2018-11-25 19:29:34 · 518 阅读 · 0 评论 -
CUDA SHARED MEMORY
在global Memory部分,数据对齐和连续是很重要的话题,当使用L1的时候,对齐问题可以忽略,但是非连续的获取内存依然会降低性能。依赖于算法本质,某些情况下,非连续访问是不可避免的。使用shared memory是另一种提高性能的方式。GPU上的memory有两种:On-board memoryOn-chip memoryglobal memory就是一块很大的on-bo...转载 2018-11-25 19:01:59 · 2427 阅读 · 0 评论 -
CUDA 的 Stream and Event
CUDA Stream 和EventStreamStream和event简介Cuda StreamsStream SchedulingFalse DependenciesHyper-QStream PrioritiesCuda Events同步stream执行Stream Synchronization阻塞和非阻塞streamImplicit SynchronizationExplicit Syn...转载 2018-11-23 10:18:40 · 788 阅读 · 0 评论 -
CUDA多个流的使用
转自:https://blog.youkuaiyun.com/dcrmg/article/details/55113703/CUDA中使用多个流并行执行数据复制和核函数运算可以进一步提高计算性能。以下程序使用2个流执行运算:#include "cuda_runtime.h" #include <iostream> #include <stdio.h> #incl...转载 2018-11-23 09:50:45 · 800 阅读 · 0 评论 -
cuda和Nvidia驱动卸载
卸载cuda 和Nvidia 驱动卸载Nvidia第一种方法:sudo apt-get install autoremove --purge nvidia*也可以卸载命令位置/usr/bin/nvidia-uninstall,以下命令即可卸载。 sudo /usr/bin/nvidia-uninstall卸载cudacuda的默认安装在 /usr/local/cuda-9.0下,用...原创 2018-11-17 14:30:32 · 7131 阅读 · 0 评论 -
CUDA atomic原子操作
CUDA的原子操作可以理解为对一个变量进行“读取-修改-写入”这三个操作的一个最小单位的执行过程,这个执行过程不能够再分解为更小的部分,在它执行过程中,不允许其他并行线程对该变量进行读取和写入的操作。基于这个机制,原子操作实现了对在多个线程间共享的变量的互斥保护,确保任何一次对变量的操作的结果的正确性。**原子操作确保了在多个并行线程间共享的内存的读写保护,每次只能有一个线程对该变量进行读写操作...转载 2018-11-22 21:39:08 · 626 阅读 · 0 评论 -
cuda curand随机数生成
最近要在device函数中使用curand库生成随机数,查找了下资料,除了NVIDIA官网的介绍外,其他介绍deviceAPI的我没有找到,倒是介绍hostAPI的一大堆,因此简单整理下自己所理解的deviceAPI的使用。curand--device API一、简介二、device API1.创建随机算法状态对象2.对算法状态进行初始化3.生成随机数一、简介curand由两部分组成:hos...转载 2018-11-11 10:27:38 · 2675 阅读 · 0 评论 -
CUDA error 8: invalid device function
遇到这种问题:很可能是cuda编译运算的架构,与你当前的显卡不符合。虽然可以编译通过,但是运行时却会出现错误。解决办法:'--gpu-architecture=compute_61', # change compute_70 -> compute_61 '--gpu-code=sm_61', #change sm_70 -> sm_61...原创 2018-11-06 14:54:20 · 6781 阅读 · 7 评论 -
Ubuntu环境下安装CUDA9.0或者CUDA9.2
转自:http://www.mamicode.com/info-detail-2244408.html本篇文章是基于安装CUDA 9.0的经验写,CUDA9.0目前支持Ubuntu16.04和Ubuntu17.04两个版本,如下图所示(最下面的安装方式我们选择第一个,即runfile方式):安装教程一.安装建议:二. 安装过程:三、选择安装方式四、runfile安装cudaIA给出官方指导手册...原创 2018-10-26 10:57:08 · 1818 阅读 · 0 评论 -
GPU CUDA编程中threadIdx, blockIdx, blockDim, gridDim之间的区别与联系
在启动kernel的时候,要通过指定gridsize和blocksize才行,举下面的例子说说:dim3 gridsize(2,2);dim3 blocksize(4,4);gridsize相当于是一个2*2的block,gridDim.x,gridDim.y,gridDim.z相当于这个dim3的x,y,z方向的维度,这里是2*2*1。序号从0到3,且是从上到下的顺序,就是说是下面的情况:...原创 2018-10-09 15:36:01 · 12290 阅读 · 0 评论 -
cuda lambda函数小例子
template &lt;typename T, typename SizeT, typename Compare&gt;__device__ SizeT binarySearch(T* elements, SizeT lower_bound, SizeT upper_bound, T element_to_find, Compare lessThan){ while (lower_b...原创 2018-10-09 14:50:02 · 870 阅读 · 0 评论 -
linux16.04安装cuda和cudnn, TensorRT
安装cudawget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.debsudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.debsudo apt-key adv --...原创 2018-09-21 17:03:38 · 746 阅读 · 0 评论 -
nccl 函数 ncclReduce和ncclAllReduce
下面代码中实现了ncclReduce和ncclAllReduce的例子,以ncclReduce举例(其中把隐藏的ncclAllReduce去掉就可以实现ncclAllREduce)://测试NCCL的reduce#include<stdio.h>#include <malloc.h>#include<stdlib.h>#include "cuda_r...原创 2018-07-20 16:10:28 · 5584 阅读 · 1 评论 -
CUDA查询和选取设备信息
CUDA C中的cudaGetDeviceProperties函数可以很方便的获取到设备的信息。#include "cuda_runtime.h"#include "device_launch_parameters.h"#include <iostream>using namespace std;int main(){ cudaDeviceProp dev...原创 2018-07-25 15:51:16 · 1846 阅读 · 0 评论 -
nvidia-nccl 学习
1.ncclResult_t ncclGetUniqueId(ncclUniqueId* uniqueId) 创建一个被初始化函数(ncclCommInitRank)使用的Id。该函数只能被调用一次(在整个分布式计算中只能被一个地方调用),调用后产生的Id需要分发给分布式任务中其他所有的任务,然后在进行ncclCommInitRank初始化操作(该初始化操作需要使用全局统一Id)。comm...原创 2018-07-18 15:12:47 · 2616 阅读 · 0 评论 -
cuda 在GPU和CPU之间复制数组
int nDev=2; float** sendbuff = (float**)malloc(nDev * sizeof(float*)); float** recvbuff = (float**)malloc(nDev * sizeof(float*)); cudaStream_t* s = (cudaStream_t*)malloc(sizeof(cudaStream_t)*nDe...原创 2018-07-18 14:58:28 · 3704 阅读 · 0 评论 -
使用nccl 编译运行程序,nccl 的lib出错 undefined reference to `ncclCommInitAll'
undefined reference to ncclCommInitAll' undefined reference toncclGetErrorString’ undefined reference to `ncclGroupStart’需要加载nccl的动态库: 编译方法:nvcc -o first_cuda singleProcess.cpp -I/usr/local...原创 2018-07-17 22:32:22 · 2586 阅读 · 1 评论