cuda
adream307
这个作者很懒,什么都没留下…
展开
-
[docker]运行指定 GPU
docker 内运行运行所有的 GPU docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi输出结果+-----------------------------------------------------------------------------+| NVIDIA-SMI 450.57 Driver Version: 450.57 CUDA Version: 11.0 ||--------原创 2020-09-14 12:09:01 · 7784 阅读 · 0 评论 -
[cuda]异步内存拷贝中的默认同步
MemcpyIn the reference documentation, each memcpy function is categorized as synchronous or asynchronous, corresponding to the definitions below.SynchronousAll transfers involving Unified Memory regions are fully synchronous with respect to the host.F原创 2020-08-03 16:23:55 · 1113 阅读 · 0 评论 -
[cuda]scala调用cuda程序
新建scala工程,选择sbt添加jcuda的引用,build.sbt设置如下:name := "cudaExample2"version := "0.1"scalaVersion := "2.13.1"libraryDependencies += "org.jcuda" % "jcuda" % "10.0.0"编写cuda程序,实现向量加法//nvcc -ptx ...原创 2019-12-16 14:53:10 · 426 阅读 · 0 评论 -
[cuda]cudaMemcpy会同步所有的默认stream
测试代码如下#include <cuda_runtime.h>#include <cassert>#include <iostream>typedef unsigned long long int ullint;__global__ void sum_test(ullint *ptr){ for(int i=0;i<100000; +...原创 2019-12-11 16:21:33 · 887 阅读 · 0 评论 -
[cuda]unified memory测试
unified memory 在被 kernel 函数访问的时候,如果同事被 host 函数访问,那么host 得到的结果可能是错误的,测试程序如下#include <cuda_runtime.h>#include <cassert>__global__ void umem_test(int* cnt){ atomicAdd(cnt,1);}int m...原创 2019-12-07 11:49:38 · 337 阅读 · 0 评论 -
[cuda]磁盘的文件直接进显存
使用mmap将文件内容映射到内存的一段地址使用cudaMemcpy将映射地址复制到显存#include <fcntl.h>#include <sys/mman.h>#include <sys/stat.h>#include <sys/types.h>#include <unistd.h>#include <cuda...原创 2019-12-05 17:12:12 · 891 阅读 · 0 评论 -
[cuda]cuBLAS矩阵乘法示例
#include <cuda_runtime.h>#include <cublas_v2.h>#include <chrono>#include <iostream>#define IDX2C(i,j,ld) (((j)*(ld))+( i ))#define ROW 13#define COL 17int main(){ ...原创 2019-12-03 15:00:32 · 679 阅读 · 1 评论 -
[cuda]仅仅内存拷贝,gpu使用率也可以达到100%
测试代码如下:#include <cuda_runtime.h>#include <stdint.h>#include <iostream>int main(){ int64_t mem_size = 1024*1024*1024; char *d1; char *h1; auto err = cudaSetDevic...原创 2019-07-15 18:51:00 · 3192 阅读 · 0 评论 -
[cuda]显卡间的数据复制
cuda提供cudaMemcpyPeerAsync实现显卡间的数据复制,但是该函数需要硬件支持。可以使用cuda安装程序提供的p2pBandwidthLatencyTest测试当前硬件是否支持直接在显卡间实现数据复制。如果硬件不支持,则程序退化到一下操作1. 数据从gpu1复制到主存2. 数据从主存复制到gpu2测试程序如下:#include <cuda_runtime.h&g...原创 2019-07-13 18:22:12 · 2274 阅读 · 0 评论 -
cuda中的cudaMallocHost
在cuda中调用cudaMallocHost得到的pinned的内存对于多卡,如果为pinned memory,可以同时向多张显卡拷贝数据;如果为paged memory,即使多卡,也无法同时向多张显卡拷贝数据;测试程序如下:#include <cuda_runtime.h>#include <stdio.h>#include <stdint.h>...原创 2019-05-06 11:53:04 · 4390 阅读 · 0 评论 -
[cuda]在launch kernel的过程中不能调用cudaFree
测试发现cuda的launch kernel的过程中不能释放该gpu上的显存,cuda任务被释放的显存可能被kernel调用,所以禁止在laucn kernel过程中释放该gpu上的显存。测试代码如下:#include &lt;stdio.h&gt;#include &lt;thread&gt;#include &lt;unistd.h&gt;#include &lt;iost原创 2019-03-05 11:53:46 · 1706 阅读 · 5 评论 -
unified memory 笔记
unified memory可以实现同一个地址同时被CPU和GPU访问,由CUDA的驱动实现CPU和GPU之间的数据传输。unified memory以page size为单位实现CPU与GPU之间的数据传输,使用getconf PAGESIZE命令可以获得系统的page size。如下所示,我系统的page size 为4096~ getconf PAGESIZE4096如下所示的代码...原创 2019-03-01 15:52:22 · 1005 阅读 · 0 评论 -
[cuda]使用shuffle实现的reduce操作
#include<stdio.h>#include"UnifiedMemory.h"__global__ void sum_test(int *src, int *dst, int num){ int pos_start = blockIdx.x * blockDim.x + threadIdx.x; int pos_step = blockDim.x * gri...原创 2018-11-07 11:36:35 · 1165 阅读 · 0 评论 -
llvm IR生产成 cuda的cubin二进制程序
llc -mcpu=sm_60 -mattr=+ptx60 kernel_test.bc -o kernel_test.ptxptxas --gpu-name=sm_60 kernel_test.ptx -o kernel_test.cubinclang -S -emit-llvm --cuda-gpu-arch=sm_60 kernel_test....原创 2018-07-06 13:41:29 · 1327 阅读 · 0 评论 -
[CUDA] cuda atomicMax
#include <iostream>#include "UnifiedMemManaged.h"//typedef int mytype;//typedef unsigned int mytype;typedef long long mytype;//typedef unsigned long long mytype;__global__ void Test(myt...原创 2018-04-14 20:26:30 · 1070 阅读 · 0 评论 -
[CUDA]关于Drive API中Kernel函数参数的一个坑
在CUDA的Drive API中launch kernel 函数原型如下:CUresult CUDAAPI cuLaunchKernel(CUfunction f, unsigned int gridDimX, unsigned int gridDimY, ...原创 2018-04-07 23:21:17 · 3970 阅读 · 3 评论