TH_NUM的博客

日常积累

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

阅读数 116

评论数 0

CUDA ---- Memory Model

Memory kernel性能高低是不能单纯的从warp的执行上来解释的。比如之前博文涉及到的,将block的维度设置为warp大小的一半会导致load efficiency降低,这个问题无法用warp的调度或者并行性来解释。根本原因是获取global memory的方式很差劲。 众所周知,mem...

2018-11-25 19:29:34

阅读数 70

评论数 0

CUDA SHARED MEMORY

在global Memory部分,数据对齐和连续是很重要的话题,当使用L1的时候,对齐问题可以忽略,但是非连续的获取内存依然会降低性能。依赖于算法本质,某些情况下,非连续访问是不可避免的。使用shared memory是另一种提高性能的方式。 GPU上的memory有两种: On-board ...

2018-11-25 19:01:59

阅读数 118

评论数 0

CUDA 的 Stream and Event

CUDA Stream 和EventStreamStream和event简介Cuda StreamsStream SchedulingFalse DependenciesHyper-QStream PrioritiesCuda Events同步stream执行Stream Synchronizat...

2018-11-23 10:18:40

阅读数 57

评论数 0

CUDA多个流的使用

转自:https://blog.csdn.net/dcrmg/article/details/55113703/ CUDA中使用多个流并行执行数据复制和核函数运算可以进一步提高计算性能。以下程序使用2个流执行运算: #include "cuda_runtime.h&quo...

2018-11-23 09:50:45

阅读数 33

评论数 0

CUDA atomic原子操作

CUDA的原子操作可以理解为对一个变量进行“读取-修改-写入”这三个操作的一个最小单位的执行过程,这个执行过程不能够再分解为更小的部分,在它执行过程中,不允许其他并行线程对该变量进行读取和写入的操作。基于这个机制,原子操作实现了对在多个线程间共享的变量的互斥保护,确保任何一次对变量的操作的结果的正...

2018-11-22 21:39:08

阅读数 45

评论数 0

cuda和Nvidia驱动卸载

卸载cuda 和Nvidia 驱动 卸载Nvidia 第一种方法:sudo apt-get install autoremove --purge nvidia* 也可以卸载命令位置/usr/bin/nvidia-uninstall,以下命令即可卸载。 sudo /usr/bin/nvidia...

2018-11-17 14:30:32

阅读数 249

评论数 0

cuda curand随机数生成

最近要在device函数中使用curand库生成随机数,查找了下资料,除了NVIDIA官网的介绍外,其他介绍deviceAPI的我没有找到,倒是介绍hostAPI的一大堆,因此简单整理下自己所理解的deviceAPI的使用。 curand--device API一、简介二、device API1....

2018-11-11 10:27:38

阅读数 279

评论数 0

CUDA error 8: invalid device function

遇到这种问题:很可能是cuda编译运算的架构,与你当前的显卡不符合。虽然可以编译通过,但是运行时却会出现错误。 解决办法: '--gpu-architecture=compute_61', # change compute_70 -> compute_61 ...

2018-11-06 14:54:20

阅读数 290

评论数 0

Ubuntu环境下安装CUDA9.0或者CUDA9.2

转自:http://www.mamicode.com/info-detail-2244408.html 本篇文章是基于安装CUDA 9.0的经验写,CUDA9.0目前支持Ubuntu16.04和Ubuntu17.04两个版本,如下图所示(最下面的安装方式我们选择第一个,即runfile方式): 安...

2018-10-26 10:57:08

阅读数 167

评论数 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相当于...

2018-10-09 15:36:01

阅读数 544

评论数 0

cuda lambda函数小例子

template <typename T, typename SizeT, typename Compare> __device__ SizeT binarySearch(T* elements, SizeT lower_bound, ...

2018-10-09 14:50:02

阅读数 100

评论数 0

linux16.04安装cuda和cudnn

安装cuda wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb sudo dpkg -i cuda-repo...

2018-09-21 17:03:38

阅读数 80

评论数 0

CUDA查询和选取设备信息

CUDA C中的cudaGetDeviceProperties函数可以很方便的获取到设备的信息。 #include "cuda_runtime.h" #include "device_launch_parameters.h&quo...

2018-07-25 15:51:16

阅读数 222

评论数 0

nccl 函数 ncclReduce和ncclAllReduce

下面代码中实现了ncclReduce和ncclAllReduce的例子,以ncclReduce举例(其中把隐藏的ncclAllReduce去掉就可以实现ncclAllREduce): //测试NCCL的reduce #include<stdio.h> ...

2018-07-20 16:10:28

阅读数 722

评论数 0

nvidia-nccl 学习

1.ncclResult_t ncclGetUniqueId(ncclUniqueId* uniqueId) 创建一个被初始化函数(ncclCommInitRank)使用的Id。该函数只能被调用一次(在整个分布式计算中只能被一个地方调用),调用后产生的Id需要分发给分布式任务中其他所有的任务,然...

2018-07-18 15:12:47

阅读数 245

评论数 0

cuda 在GPU和CPU之间复制数组

int nDev=2; float** sendbuff = (float**)malloc(nDev * sizeof(float*)); float** recvbuff = (float**)malloc(nDev * sizeof(float*)); cudaStream_t*...

2018-07-18 14:58:28

阅读数 804

评论数 0

使用nccl 编译运行程序,nccl 的lib出错 undefined reference to `ncclCommInitAll'

undefined reference to ncclCommInitAll' undefined reference toncclGetErrorString’ undefined reference to `ncclGroupStart’ 需要加载nccl的动态库: 编译方法: ...

2018-07-17 22:32:22

阅读数 365

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭