最新帖子

页: 1 ... 8 9 [10]
91
CUDA / Re: CUDA编程中从主机传递一个数组给设备
« 最后发表 作者 sisiy 二月 18, 2021, 04:58:01 pm »
答复:报非法内存访问是在Host上, 还是在Device上?前者如果是CPU端的缓冲区不够, 也会报Access Violation的(0xc0000005)
如果是在device上,那是后续的kernel挂了。他在cudaMemcpy*()前后分别加上cudaError_t r = cudaDeviceSynchronize(); 然后看看,这样可以确定一点。(不看也行, cudaMemcpy*()给错设备指针/大小方面的参数会直接报告参数有问题之类的, 不会中途挂在device上), cuda-memcheck 他的程序 回车, 这种方式检测一下。
   需要强调的是:你执行cudaMemcpy*(), 和你的"GPU设备线程块数量", 这有毛关系? 你确定报错是在传输该数组的时候吗?
92
CUDA / Re: 请问双GPU并行时,GPU0与GPU1里的设备变量可以同名吗?
« 最后发表 作者 屠戮人神 二月 18, 2021, 04:57:28 pm »
请问双GPU并行时,GPU0与GPU1里的设备变量可以同名吗?

(1)
如果"设备变量"指的是__device__变量的话, 则你使用runtime api, 同时用cudaSetDevice()切换了不同设备的话, 则每个设备上都会出现一个同名的副本.

也就是说, 这种情况下, 如果你切换了设备, 则之前对你的__device__ int a;这种的赋值, 会消失. 你需要重新cudaMemcpyToSymbol之类的一次. 因为各个设备上是各自的值.

(2)
而如果你用driver api的话, 该问题正八经的, 已经在手册的Module和Context相关内容中被讨论过了, 你已经知道答案了.
93
CUDA / CUDA编程中从主机传递一个数组给设备
« 最后发表 作者 sisiy 二月 18, 2021, 04:55:16 pm »
CUDA编程中从主机传递一个数组给设备,当数组长度较小时结果正确,当数组长度较大时报非法内存访问。已经排除了GPU设备线程块不够和开辟数组的问题,还能是什么问题?
94
CUDA / 请问双GPU并行时,GPU0与GPU1里的设备变量可以同名吗?
« 最后发表 作者 100860xyz 二月 09, 2021, 06:29:24 pm »
请问双GPU并行时,GPU0与GPU1里的设备变量可以同名吗?
95
NV边缘计算 / Re: Jetson Nano 2GB 运行命令 sudo pip install Jetson.GPIO
« 最后发表 作者 sisiy 二月 01, 2021, 08:51:26 pm »
1. 那个信息是”警告“不是错误
2. 完整的指令请修改为 sudo -H pip3 install Jetson.GPIO
96
NV边缘计算 / Jetson Nano 2GB 运行命令 sudo pip install Jetson.GPIO
« 最后发表 作者 Tang 一月 30, 2021, 04:21:36 pm »
我要按照教程尝试安装Jetson.GPIO,但是运行命令后没有安装,却显示以下文字:
The directory '/home/tang/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/home/tang/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Requirement already satisfied: Jetson.GPIO in /usr/lib/python2.7/dist-packages
————————分割线————————
我英语不是很好,请问解决办法是?谢谢。
97
经过查资料后发现应该是驱动的问题,因为安装2080ti的驱动后运行Nvidia-smi,会提示failed to initlize NVML:Unknown Error;然后试着换了好几版驱动,好像还是一样的问题,目前定位的问题就是驱动的问题,但是改用哪个版本的驱动还没试出来,最开始试的是最新的驱动,后面又试了下英伟达官网上搜到的最老的一版驱动,还是会报一样的错误
再次更新,发现是集成显卡的问题,需要先屏蔽集成显卡,然后驱动就可以正常运行了,进bios里面找到VGA priority选项,然后选为offboard,之后即可征程运行nvidia-smi。
98
CUDA / Re: 调用双GPU如何做到GPU0与GPU1之间是并行计算的?
« 最后发表 作者 sisiy 一月 26, 2021, 02:58:39 pm »
使用openMP做并行调度,和正常cpu程序并行一样,来做双卡并行
99
嗯嗯,好的我知道了,十分感谢!另外我最近尝试在win7上安装vs2015、cuda9,然后显卡用2080Ti,发现在运行模板工程addwithcuda时,cudasetdevice一直报错,错误提示cudaErrorunkonwn,在安装CUDA9时也提示了this graphic driver could not find compatible graphic hardware,然后我又试了试cuda10,因为cuda11好像没有win7的了,cuda10倒是没有提示找不到compatible graphic hardware,但是创建的模板工程addwithcuda依然会返回cudaErrorunkonwn的错误,win7是真的不能进行2080Ti的CUDA开发吗,是官方本身就不支持吗?真的没有什么办法吗?
经过查资料后发现应该是驱动的问题,因为安装2080ti的驱动后运行Nvidia-smi,会提示failed to initlize NVML:Unknown Error;然后试着换了好几版驱动,好像还是一样的问题,目前定位的问题就是驱动的问题,但是改用哪个版本的驱动还没试出来,最开始试的是最新的驱动,后面又试了下英伟达官网上搜到的最老的一版驱动,还是会报一样的错误
100
CUDA / 调用双GPU如何做到GPU0与GPU1之间是并行计算的?
« 最后发表 作者 100860xyz 一月 22, 2021, 05:58:18 pm »
我尝试将单卡的程序改成双卡,但是现在GPU0与GPU1是串行的,即现执行完GPU0上的任务再执行GPU1上的任务,下面附上相关的主机代码,请问这段程序需要怎么该呀?
   Ej_bi=0.
   Em_bi=0.
   Ej_bi_d=0.
   Em_bi_d=0.       
       
   istat=cudaGetDevice(0)    !第1个设备

   tBlock=dim3(4,16,1)
   grid=dim3(ceiling(real(Ntri)/tBlock%x),ceiling(real((n_scan+1)/2)/tBlock%y),1)
   call cuda_transmit_duoceng<<<grid,tBlock>>>(Ntri,(n_scan+1)/2,0)
       
   print*,"计算RCS"
      
    Ej_bi=Ej_bi_d
    Em_bi=Em_bi_d
   
   count=0   
    open(unit=10, fiLe="output\GPU_triple.csv") 
    do k = 1, (n_scan+1)/2
        temp2=0 
        do i = 1, Ntri
            E_bi(i,k,:)=Ej_bi(i,k,:)+Em_bi(i,k,:)
            temp2=temp2+E_bi(i,k,1)+E_bi(i,k,2)+E_bi(i,k,3)
        enddo
       
            print*, k,"flag"
            print*, abs(temp2),"E_bi_abs"
            print*, atan2(aimag(temp2),real(temp2)),"E_bi_angle"
            write(10,*) k,abs(temp2),atan2(aimag(temp2),real(temp2))
    enddo
    !close(10)
   Ej_bi=0.
   Em_bi=0.
   Ej_bi_d=0.
   Em_bi_d=0.
   istat=cudaGetDevice(1)      !第2个设备

   tBlock=dim3(4,16,1)
   grid=dim3(ceiling(real(Ntri)/tBlock%x),ceiling(real((n_scan-1)/2)/tBlock%y),1)
   call cuda_transmit_duoceng<<<grid,tBlock>>>(Ntri,(n_scan-1)/2,1)
       
   print*,"计算RCS"
      
    Ej_bi=Ej_bi_d
    Em_bi=Em_bi_d
     
    open(unit=10, fiLe="output\GPU_triple.csv") 
    do k = 1, (n_scan-1)/2
        temp2=0 
        do i = 1, Ntri
            E_bi(i,k,:)=Ej_bi(i,k,:)+Em_bi(i,k,:)
            temp2=temp2+E_bi(i,k,1)+E_bi(i,k,2)+E_bi(i,k,3)
        enddo
       
            print*, k+(n_scan+1)/2,"flag"
            print*, abs(temp2),"E_bi_abs"
            print*, atan2(aimag(temp2),real(temp2)),"E_bi_angle"
            write(10,*) k+(n_scan+1)/2,abs(temp2),atan2(aimag(temp2),real(temp2))
    enddo
   print*,count,"count"
   close(10)
   end
页: 1 ... 8 9 [10]