CUDA-GPU加速-中值滤波-黑屏+显卡程序崩溃

新手刚接触CUDA C,这段中值滤波的代码一直跑不通,如果读取一张小图片(2790,2560)没有问题,如果读取一张大图片(5580,5120),就会导致黑屏+没有结果。
我的显卡是NVIDIA Geforce 820M

#include <iostream>
#include "ImMedFilter.h"

#define DIM_GRID  128
#define DIM_BLOCK 16
using namespace std;

__device__ void mid(unsigned char* data, int size, int midIndex)
{   
    unsigned char temp = 0;
    for (int i = 0; i <= midIndex; i++)
    {
        for (int j = i+1; j < size; j++)
        {
            if (data[j] > data[i])
            {
                temp = data[i];
                data[i] = data[j];
                data[j] = temp;
            }
        }
    }    
}

__global__ void global_ZhongSmooth(unsigned char *dev_src, unsigned char *dev_dst, int width , int height, int bytesPerLine, int size, int markSize)
{
    int x = threadIdx.x + blockIdx.x*blockDim.x;
    int y = threadIdx.y + blockIdx.y*blockDim.y;

    int step_x = blockDim.x * gridDim.x;
    int step_y = blockDim.y * gridDim.y;


    for (int t_y = y; t_y < height - markSize; t_y = t_y + step_y)
    {
        if (t_y < markSize || t_y > height-markSize-1)
        {
            continue;
        }
        for (int t_x = x; t_x < width - markSize; t_x = t_x + step_x)
        {
            if (t_x < markSize || t_x > width-markSize-1)
            {
                continue;
            }
            unsigned int index = t_x + t_y*width;
            if( index < size )
            {       
                unsigned char len = (markSize*2+1)*(markSize*2+1);
                unsigned char midIndex = len/2;             
                // 创建保存中值区域的数组
                // size = (marksize * 2 + 1) ^ 2;
                // 滤波大小:3、5、7、9、...、29、31
                unsigned char*a = NULL;
                switch (markSize)
               {
                case 1:
                    unsigned char c[9]; 
                    a = c;  
                    break;
                case 2:
                    unsigned char d[25];    
                    a = d;  
                    break;
                case 3:
                    unsigned char e[49];    
                    a = e;  
                    break;
                case 4:
                    unsigned char f[81];    
                    a = f;  
                    break;
                case 5:
                    unsigned char g[121];   
                    a = g;  
                    break;
                case 6:
                    unsigned char h[169];   
                    a = h;  
                    break;
                case 7:
                    unsigned char v[225];   
                    a = v;  
                    break;
                case 8:
                    unsigned char w[289];   
                    a = w;  
                    break;
                case 9:
                    unsigned char x[361];   
                    a = x;  
                    break;
                case 10:
                    unsigned char z[441];   
                    a = z;  
                    break;
                case 11:
                    unsigned char u[529];   
                    a = u;  
                    break;
                case 12:
                    unsigned char q[625];   
                    a = q;  
                    break;
                case 13:
                    unsigned char i[729];   
                    a = i;  
                    break;
                case 14:
                    unsigned char o[841];   
                    a = o;  
                    break;
                default:
                    return;
                }
                unsigned char k = 0;
                for (int i = -markSize; i <= markSize; i++)
                {           
                    for (int j = -markSize; j <= markSize; j++)
                    {               
                        a[k++] = dev_src[t_x+j+(t_y+i)*width];
                    }           
                }

                mid(a, len, midIndex);   
                dev_dst[index] = a[midIndex];
            }
        }
    }


}


extern "C" void ImMedfilter(const unsigned char *host_src, unsigned char *host_dst, int width, int height, int bytesPerLine, int markSize)
{
    int dataSize = bytesPerLine * height;   

    unsigned char *dev_src = NULL;  
    unsigned char *dev_dst = NULL;


    cudaMalloc((void**) &dev_src, dataSize);
    cudaMalloc((void**) &dev_dst, dataSize);



    cudaMemset(dev_dst, 0, dataSize);
    cudaMemcpy(dev_src, host_src, dataSize, cudaMemcpyHostToDevice);


    dim3 blocks(DIM_BLOCK, DIM_BLOCK);
    dim3 grids(DIM_GRID, DIM_GRID);

    global_ZhongSmooth<<<grids, blocks>>>(dev_src, dev_dst, width, height, bytesPerLine, dataSize, markSize);

    cudaMemcpy(host_dst, dev_dst, dataSize, cudaMemcpyDeviceToHost);

    cudaFree(dev_src);
    cudaFree(dev_dst);  
}

2个回答

每次程序黑屏都是ImMedfilter函数运行了:
cudaMemcpy(host_dst, dev_dst, dataSize, cudaMemcpyDeviceToHost);
这一段代码后。

快1年了,基本没碰CUDA了,最近项目需要用GPU加速,又遇到这种类似情况,没人回答就自己不断补充吧。
cudaMemcpy函数不会等GPU运算结束再执行,所以GPU在操作dev_dst,CPU也在操作,两者冲突,直接死机。
我的暂时解决方法是加一句cudaThreadSynchronize(),等待GPU执行完毕CPU再继续操作。
这种方法会有问题,如果算法计算时间过长的话,你的屏幕就会卡死,要等到GPU计算完屏幕才能正常工作,这就很蛋疼。
应该是方法还没有找对,看后面继续改进吧。。。。。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
CUDA-GPU加速-中值滤波-黑屏+显卡程序崩溃
新手刚接触CUDA C,这段中值滤波的代码一直跑不通,如果读取一张小图片(2790,2560)没有问题,如果读取一张大图片(5580,5120),就会导致黑屏+没有结果。 我的显卡是NVIDIA Geforce 820M ``` #include <iostream> #include "ImMedFilter.h" #define DIM_GRID 128 #define DIM_BLOCK 16 using namespace std; __device__ void mid(unsigned char* data, int size, int midIndex) { unsigned char temp = 0; for (int i = 0; i <= midIndex; i++) { for (int j = i+1; j < size; j++) { if (data[j] > data[i]) { temp = data[i]; data[i] = data[j]; data[j] = temp; } } } } __global__ void global_ZhongSmooth(unsigned char *dev_src, unsigned char *dev_dst, int width , int height, int bytesPerLine, int size, int markSize) { int x = threadIdx.x + blockIdx.x*blockDim.x; int y = threadIdx.y + blockIdx.y*blockDim.y; int step_x = blockDim.x * gridDim.x; int step_y = blockDim.y * gridDim.y; for (int t_y = y; t_y < height - markSize; t_y = t_y + step_y) { if (t_y < markSize || t_y > height-markSize-1) { continue; } for (int t_x = x; t_x < width - markSize; t_x = t_x + step_x) { if (t_x < markSize || t_x > width-markSize-1) { continue; } unsigned int index = t_x + t_y*width; if( index < size ) { unsigned char len = (markSize*2+1)*(markSize*2+1); unsigned char midIndex = len/2; // 创建保存中值区域的数组 // size = (marksize * 2 + 1) ^ 2; // 滤波大小:3、5、7、9、...、29、31 unsigned char*a = NULL; switch (markSize) { case 1: unsigned char c[9]; a = c; break; case 2: unsigned char d[25]; a = d; break; case 3: unsigned char e[49]; a = e; break; case 4: unsigned char f[81]; a = f; break; case 5: unsigned char g[121]; a = g; break; case 6: unsigned char h[169]; a = h; break; case 7: unsigned char v[225]; a = v; break; case 8: unsigned char w[289]; a = w; break; case 9: unsigned char x[361]; a = x; break; case 10: unsigned char z[441]; a = z; break; case 11: unsigned char u[529]; a = u; break; case 12: unsigned char q[625]; a = q; break; case 13: unsigned char i[729]; a = i; break; case 14: unsigned char o[841]; a = o; break; default: return; } unsigned char k = 0; for (int i = -markSize; i <= markSize; i++) { for (int j = -markSize; j <= markSize; j++) { a[k++] = dev_src[t_x+j+(t_y+i)*width]; } } mid(a, len, midIndex); dev_dst[index] = a[midIndex]; } } } } extern "C" void ImMedfilter(const unsigned char *host_src, unsigned char *host_dst, int width, int height, int bytesPerLine, int markSize) { int dataSize = bytesPerLine * height; unsigned char *dev_src = NULL; unsigned char *dev_dst = NULL; cudaMalloc((void**) &dev_src, dataSize); cudaMalloc((void**) &dev_dst, dataSize); cudaMemset(dev_dst, 0, dataSize); cudaMemcpy(dev_src, host_src, dataSize, cudaMemcpyHostToDevice); dim3 blocks(DIM_BLOCK, DIM_BLOCK); dim3 grids(DIM_GRID, DIM_GRID); global_ZhongSmooth<<<grids, blocks>>>(dev_src, dev_dst, width, height, bytesPerLine, dataSize, markSize); cudaMemcpy(host_dst, dev_dst, dataSize, cudaMemcpyDeviceToHost); cudaFree(dev_src); cudaFree(dev_dst); } ```
tensorflow-gpu为何无法调用GPU进行运算?
如题,本人是小白级别的爱好者,使用的是联想台式机,win10系统,有一块GeForce GT730的独立显卡,想尝试安装tensorflow-gpu 进行加速。 在参考官网方法后,升级了显卡驱动,安装了CUDA9.0 及配套的cudnn7 并添加了环境变量。然后pip 安装tensorflow-gpu 安装成功后,import tensorflow as tf 不报错,但是运行如下代码时,始终显示GPU使用率为0 ``` import tensorflow as tf with tf.device('/cpu:0'): a=tf.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape=[2,3],name='a') b=tf.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape=[3,2],name='b') c=tf.matmul(a, b) sess=tf.Session(config=tf.ConfigProto(allow_soft_placement=False, log_device_placement=True)) print(sess.run(c)) ``` 试用如下代码检查是否有GPU可以被使用: ``` import os from tensorflow.python.client import device_lib os.environ["TF_CPP_MIN_LOG_LEVEL"] = "99" if __name__ == "__main__": print(device_lib.list_local_devices()) ``` 显示 只有一个CPU可以被调用 ``` [name: "/device:CPU:0" device_type: "CPU" memory_limit: 268435456 locality { } incarnation: 15723487639721858299 ] ``` 那么问题来了。。既然已经成功安装了tensorflow-gpu,为什么仍然无法调用gpu进行计算呢。。 而且,装好tensorflow-gpu之后,双击程序会闪退,但是从IDLE中run是可以运行的,也不报错,但就是不分配给GPU运算。 查看了一下cuda,显示GPU not supported ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541662095_841538.jpg) 这就愈发郁闷了。。。。。。 深知肯定是自己还有什么地方没设置好,但是网上也找不到对应的教程了,只好在此想各位大了!!!! 万望赐教!!!! 感激不尽!!!!
安装tensorflow-gpu后运行程序出现An error ocurred while starting the kernel问题
tensorflow2.0,cuda10.2,cudnn7.6,使用improt语句没有问题, 但是在执行model.add()语句时报错 2019-12-29 17:01:21.546770: F .\tensorflow/core/kernels/random_op_gpu.h:227] Non-OK-status: GpuLaunchKernel(FillPhiloxRandomKernelLaunch<Distribution>, num_blocks, block_size, 0, d.stream(), gen, data, size, dist) status: Internal: invalid device function 没有找到合适的解决方法,在此求助!感谢!
tensorflow-gpu为何无法调用GPU进行运算???
如题,本人是小白级别的爱好者,使用的是联想台式机,win10系统,有一块GeForce GT730的独立显卡,想尝试安装tensorflow-gpu 进行加速。 在参考官网方法后,升级了显卡驱动,安装了CUDA9.0 及配套的cudnn7 并添加了环境变量。然后pip 安装tensorflow-gpu 安装成功后,import tensorflow as tf 不报错,但是运行如下代码时,始终显示GPU使用率为0 ``` import tensorflow as tf with tf.device('/cpu:0'): a=tf.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape=[2,3],name='a') b=tf.constant([1.0,2.0,3.0,4.0,5.0,6.0],shape=[3,2],name='b') c=tf.matmul(a, b) sess=tf.Session(config=tf.ConfigProto(allow_soft_placement=False, log_device_placement=True)) print(sess.run(c)) ``` 试用如下代码检查是否有GPU可以被使用: ``` import os from tensorflow.python.client import device_lib os.environ["TF_CPP_MIN_LOG_LEVEL"] = "99" if __name__ == "__main__": print(device_lib.list_local_devices()) ``` 显示 只有一个CPU可以被调用 ``` [name: "/device:CPU:0" device_type: "CPU" memory_limit: 268435456 locality { } incarnation: 15723487639721858299 ] ``` 那么问题来了。。既然已经成功安装了tensorflow-gpu,为什么仍然无法调用gpu进行计算呢。。 而且,装好tensorflow-gpu之后,双击程序会闪退,但是从IDLE中run是可以运行的,也不报错,但就是不分配给GPU运算。 查看了一下cuda,显示GPU not supported ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541663479_238541.jpg) 这就愈发郁闷了。。。。。。 深知肯定是自己还有什么地方没设置好,但是网上也找不到对应的教程了,只好在此想各位大了!!!! 万望赐教!!!! 感激不尽!!!!
tensorflow-gpu:Faild to load tensorflow native runtime
linux系统下,安装好了cuda9.0+cudnn7.5+tensorflow-gpu1.11.0,运行代码时出现f![图片说明](https://img-ask.csdn.net/upload/201905/23/1558602428_698955.png), 但是如果将tensorflow-gpu版本换成对于的tensorflow cpu版本时可以运行的,咋回事???
windows下OpenCV-python如何用GPU加速,求解答,谢谢了!
最近用OpenCV进行视频行人检测,发现用HOG+SVM处理每一帧太慢了,想到深度学习pytorch中 ``` model.cuda() ```就可以用GPU加速,就想知道windows下OpenCV-python如何用GPU加速,具体怎么用,如果有知道的请帮帮我,感谢大家!
求教,跑tensorflow-gpu测试代码时报错cudaGetDevice() failed. Status: cudaGetErrorString symbol not found
![图片说明](https://img-ask.csdn.net/upload/201911/20/1574255233_540412.png) cuda版本![图片说明](https://img-ask.csdn.net/upload/201911/20/1574255339_304467.png) python版本3.7
cuda opencv GPU模块的使用出错
#include<stdlib.h> #include<stdio.h> #include<device_launch_parameters.h> #include<cuda_runtime.h> #include<opencv2\opencv.hpp> #include<opencv2\gpu\gpu.hpp> #include<iostream> int main() { int num_devices = cv::gpu::getCudaEnabledDeviceCount(); if (num_devices <= 0) { std::cerr << "There is no devoce" << std::endl; return -1; } int enable_device_id = -1; for (int i = 0; i < num_devices; i++) { cv::gpu::DeviceInfo dev_info(i); if (dev_info.isCompatible()) { enable_device_id = i; } } if (enable_device_id < 0) { std::cerr << "GPU module isn't built for GPU" << std::endl; return -1; } cv::gpu::setDevice(enable_device_id); cv::Mat src_image = cv::imread("test.jpg"); cv::Mat dst_image; cv::gpu::GpuMat d_dst_img; cv::gpu::GpuMat d_src_img(src_image);//upload src image to gpu //为什么从这以后的代码不执行了 printf("abcd");//测试使用 //cv::gpu::cvtColor(d_src_img, d_dst_img, CV_BGR2GRAY); //d_dst_img.download(dst_image);//download dst image to cpu //cv::imshow("test", dst_image); cv::imshow("test", src_image); cv::waitKey(5000); return 0; } 我感觉我配置的环境应该没问题啊,
一个关于tensorflow和CUDA安装的问题
我的系统是Linux,我用Anaconda安装tensorflow-gpu是否还需要单独安装CUDA,我看他已经给我顺便安了cudatoolkit和cudnn,是不是就不用再安CUDA了? 另一个问题是,如果我想用C++版的opencv调用CUDA,是不是还得再自己安装CUDA啊?
求助:ubuntu12.04 +cuda5.5安装问题????????
chester@chester-N81Vg:~/下载$ ls cuda_5.5.22_linux_64.run cuda在linux上的安装指南.doc cuda-repo-ubuntu1204_5.5-0_amd64.deb chester@chester-N81Vg:~/下载$ sudo dpkg -i cuda-repo-ubuntu1204_5.5-0_amd64.deb (正在读取数据库 ... 系统当前共安装有 180795 个文件和目录。) 正预备替换 cuda-repo-ubuntu1204 5.5-0 (使用 cuda-repo-ubuntu1204_5.5-0_amd64.deb) ... 正在解压缩将用于更替的包文件 cuda-repo-ubuntu1204 ... gpg: 密钥‘cudatools’找不到:eof gpg: cudatools: delete key failed: eof 正在设置 cuda-repo-ubuntu1204 (5.5-0) ... gpg: 找不到有效的 OpenPGP 数据。
Unexpected CUDA error: invalid argument
我在使用tensorflow-gpu时,运行如下的代码: ``` import tensorflow as tf a = tf.constant([1.0,2.0,3.0],shape = [3],name='a') print(a) ``` 能正确显示 ``tf.Tensor([1. 2. 3.], shape=(3,), dtype=float32)`` 但当我加入以下两行代码 ``` b = tf.constant([1.0,2.0,3.0], shape = [3],name='b') a+b ``` 会报如下的错误 ``` F tensorflow/stream_executor/cuda/cuda_driver.cc:209] Check failed: err == cudaSuccess || err == cudaErrorInvalidValue Unexpected CUDA error: invalid argument ``` 请大神帮忙解答 ================================================ 参照这篇博客,重新安装了一下,问题已经解决了 [https://blog.csdn.net/weixin_43411129/article/details/101390407](https://blog.csdn.net/weixin_43411129/article/details/101390407)
关于tensorflow-gpu的一些问题
我已经成功安装了tensorflow-gpu,CUDA版本9.0,也按照要求配置好了cuDNN相关文件,环境变量也已添加 但是在pycharm中仍然报错,python里面运行正常。如图: ![![![![图片说明](https://img-ask.csdn.net/upload/201809/17/1537192313_707897.png)图片说明](https://img-ask.csdn.net/upload/201809/17/1537192308_765.png)图片说明](https://img-ask.csdn.net/upload/201809/17/1537192300_286821.png)图片说明](https://img-ask.csdn.net/upload/201809/17/1537192050_43709.png) 实在不知道怎么办了,希望大佬能帮帮我这个小白吧,万分感谢!
为什么我在gpu上训练模型但是gpu利用率为0且运行速度还是很慢?
![图片说明](https://img-ask.csdn.net/upload/201906/28/1561670010_563259.png) 为什么我在gpu上训练模型但是gpu利用率为0且运行速度还是很慢? 模型主要利用的是tensorflow和keras 已经安装了tensorflow-gpu和cuda
求助啊,tensorflow-gpu的配置,4天没搞出来,崩溃了
大佬们求助,小弟用win7 64位+tensorflow-1.2.0rc0--gp+cuda8.0.61+cudnn5.1+gtx1080来配置深度学习的环境。 结果搞了4天,pycharm控制台一直出现 can not cuInit: CUDA_NO_DEVICE_ERROR......的错误,gpu也启动不了,只能用cpu。 而且更糟糕的是,nvdia的控制面板也打不开,总是出错,停止工作。因此,刚开始怀疑是驱动的问题,从官网上下载了最新的驱动,结果两个问题都没解决。 后来,我发现cuda的测试例子中的deviceQuery和bandwidthTest都运行失败,说明我连cuda都没装成功,简直吐血。对了,cuda自带的驱动是375.61. 重装驱动也没用 实在没办,法,谁来救救我
使用kali的hashcat工具破解office2007密码,总是不成功,终端显示如下
通过虚拟机做的实验,1.txt存储hash值,/usr/share/wordlists/password.txt 是字典,一共才3位,字典没有问题,执行完毕没有生成2.txt,弄了半天,不知道什么原因,下面是执行时终端的显示 root@wsw:~/john-1.8.0-jumbo-1/run# hashcat -m 9400 1.txt /usr/share/wordlists/password.txt -o 2.txt --force hashcat (v5.1.0) starting... OpenCL Platform #1: The pocl project ==================================== * Device #1: pthread-Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz, 1024/2943 MB allocatable, 1MCU Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Rules: 1 Applicable optimizers: * Zero-Byte * Single-Hash * Single-Salt * Slow-Hash-SIMD-LOOP Minimum password length supported by kernel: 0 Maximum password length supported by kernel: 256 Watchdog: Hardware monitoring interface not found on your system. Watchdog: Temperature abort trigger disabled. * Device #1: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=2 -D VENDOR_ID=64 -D CUDA_ARCH=0 -D AMD_ROCM=0 -D VECT_SIZE=8 -D DEVICE_TYPE=2 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=4 -D KERN_TYPE=9400 -D _unroll' Dictionary cache hit: * Filename..: /usr/share/wordlists/password.txt * Passwords.: 1000 * Bytes.....: 4000 * Keyspace..: 1000 Approaching final keyspace - workload adjusted. Session..........: hashcat Status...........: Exhausted Hash.Type........: MS Office 2007 Hash.Target......: $office$*2007*20*128*16*702f915f20215bfe6cd028bd9e8...ad0dc3 Time.Started.....: Tue Feb 11 12:00:50 2020 (3 secs) Time.Estimated...: Tue Feb 11 12:00:53 2020 (0 secs) Guess.Base.......: File (/usr/share/wordlists/password.txt) Guess.Queue......: 1/1 (100.00%) Speed.#1.........: 330 H/s (3.71ms) @ Accel:512 Loops:128 Thr:1 Vec:8 Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts Progress.........: 1000/1000 (100.00%) Rejected.........: 0/1000 (0.00%) Restore.Point....: 1000/1000 (100.00%) Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:49920-50000 Candidates.#1....: 512 -> 999 Started: Tue Feb 11 12:00:48 2020 Stopped: Tue Feb 11 12:00:55 2020
cuda-fp16 api调用问题
我想使用半精度计算,目前运行环境是win7 64位,gpu是泰坦x,我想尝试调用 cuda_fp16.h 里的__hisnan()、__hadd()等函数。 调用: const half KZero = __float2half(0.0); const half aa = __float2half(1.0); const half bb =__hadd(KZero, aa); 提示: error : no suitable conversion function from "const half" to "int" exists。 我发现__hadd()函数不仅在cuda_fp16.h里有声明,在device_functions.h里也有声明,当我调用这个函数的时候我感觉总是调用device_functions.h里的这些函数。 请教: 请问有人知道问题所在吗?我怎么才能正确使用这些api函数呢?
cuda 8.0 安装 nvcc -v错误
小白求教,电脑显卡 NVS5400M 安装cuda8.0后,配置好环境变量,在CMD中运行nvcc -v 结果如下: nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning). nvcc fatal : No input files specified; use option --help for more information 请问如何解决?
cuda一个global函数里调用多个核函数出问题。
caffe编写loss层时, 我一个global函数里有多个核函数,但是有时前两个核函数不执行,有时候又执行,不清楚问题出在哪里? ``` template <typename Dtype> void PixelClustingLossLayer<Dtype>::Forward_gpu( const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top) { const int num = bottom[0]->num(); const int data_channels = bottom[0]->channels(); const int mask_channels = bottom[1]->channels(); const int height = bottom[0]->height(); const int width = bottom[0]->width(); const int spatial_dim = height * width; const int nc = num * data_channels; const int data_count = bottom[0]->count(); const int mask_count = bottom[1]->count(); Dtype* pos_num_data = pos_num_.mutable_cpu_data(); Dtype* neg_num_data = neg_num_.mutable_cpu_data(); caffe_gpu_set(mask_count, Dtype(0.), pixel_mask_.mutable_gpu_data()); caffe_gpu_set(num, Dtype(0.), loss_mask_.mutable_gpu_data()); caffe_gpu_set(num*data_channels, Dtype(0.), pos_ave_.mutable_gpu_data()); caffe_gpu_set(num*data_channels, Dtype(0.), neg_ave_.mutable_gpu_data()); caffe_gpu_set(num, Dtype(0.), pos_loss_.mutable_gpu_data()); caffe_gpu_set(num, Dtype(0.), neg_loss_.mutable_gpu_data()); caffe_gpu_set(num, Dtype(0.), center_loss_.mutable_gpu_data()); for(int n=0; n<num; ++n) { caffe_gpu_asum(spatial_dim, bottom[1]->gpu_data() + n * spatial_dim, pos_num_.mutable_cpu_data() + n); neg_num_data[n] = spatial_dim - pos_num_data[n]; } //LOG(INFO)<<"There are "<<pos_num_.cpu_data()[0]<<" pos pixels and "<<neg_num_.cpu_data()[0]<<" neg pixels."; GetTotalValue<Dtype> <<<CAFFE_GET_BLOCKS(data_count), CAFFE_CUDA_NUM_THREADS>>>(data_count, bottom[0]->gpu_data(), bottom[1]->gpu_data(), pos_ave_.mutable_gpu_data(), neg_ave_.mutable_gpu_data(), data_channels, height, width); //LOG(INFO)<<"There are 111 neg pixels."; GetAveValue<Dtype> <<<CAFFE_GET_BLOCKS(nc), CAFFE_CUDA_NUM_THREADS>>>(nc, pos_num_.gpu_data(), neg_num_.gpu_data(), pos_ave_.mutable_gpu_data(), neg_ave_.mutable_gpu_data(), center_loss_.mutable_gpu_data(), data_channels); //LOG(INFO)<<"There are 222 neg pixels."; PowerEuclideanDistance<Dtype> <<<CAFFE_GET_BLOCKS(mask_count), CAFFE_CUDA_NUM_THREADS>>>(mask_count, bottom[0]->gpu_data(), bottom[1]->gpu_data(), pos_ave_.gpu_data(), neg_ave_.gpu_data(), euclidean_dis_.mutable_gpu_data(), mask_channels, data_channels, height, width); ComputePixelLoss<Dtype> <<<CAFFE_GET_BLOCKS(mask_count), CAFFE_CUDA_NUM_THREADS>>>(mask_count, bottom[1]->gpu_data(), euclidean_dis_.gpu_data(), pos_loss_.mutable_gpu_data(), neg_loss_.mutable_gpu_data(), pos_num_.gpu_data(), neg_num_.gpu_data(), pixel_mask_.mutable_gpu_data(), mask_channels, height, width, alpha_); ComputeClassLoss<Dtype> <<<CAFFE_GET_BLOCKS(num), CAFFE_CUDA_NUM_THREADS>>>(num, center_loss_.mutable_gpu_data(), loss_mask_.mutable_gpu_data(), beta_); caffe_gpu_add(num, neg_loss_.gpu_data(), pos_loss_.gpu_data(), loss_.mutable_gpu_data()); caffe_gpu_add(num, loss_.gpu_data(), center_loss_.gpu_data(), loss_.mutable_gpu_data()); Dtype loss; caffe_gpu_asum(num, loss_.gpu_data(), &loss); LOG(INFO)<<loss/Dtype(num); top[0]->mutable_cpu_data()[0] = loss / num; } ``` 主要是GetTotalValue()函数和GetAveValue()函数,偶尔执行,偶尔不执行,头都晕了。 有没有大神指点迷津。
cupy.cuda.memory.OutOfMemoryError
请教: 训练lda2vec的时候 ``` gpu_id = int(os.getenv('CUDA_GPU', '0')) cuda.get_device(gpu_id).use() print("Using GPU " + str(gpu_id)) ``` ![图片说明](https://img-ask.csdn.net/upload/201911/28/1574907888_199167.png) 训练几十个epoch以后cupy.cuda.memory.OutOfMemoryError,然后又重头开始训练 ``` data = prepare_topics(cuda.to_cpu(model.mixture.weights.W.data).copy(), cuda.to_cpu(model.mixture.factors.W.data).copy(), cuda.to_cpu(model.sampler.W.data).copy(), words) ```
cmake3.4.3重新编译opencv,vs2013,cuda-8.0
最近想使用opencv的GPU模块,就需要用cmake重新编译opencv, 尝试很多中方法,一直不成功,编译老是出错,环境变量也设置了, 真的不知道是什么问题,望大神解答~![图片说明](https://img-ask.csdn.net/upload/201612/28/1482931144_726131.png)
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱  极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件,   选择安装到U盘(按照操作无需更改) 三、重启进入pe系统   1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12)     选择需要启
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案 去年我去爱卡汽车面试PHP,一轮和二轮面的都不错,在三轮面到Nginx的时候很多问题当时不知道怎么回答,确实没有深入学习过,花了一段时间的学习,终于能解答Nginx高性能优化的问题了,10月24号为了获得程序员勋章,发布了半个优化笔记,浏览到了1000+,受到这个鼓舞,我抽时间在仔细整理下关于Nginx性能优化的问题,我们从软件说起。...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
化繁为简 - 腾讯计费高一致TDXA的实践之路
导语:腾讯计费是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台,在如此庞大的业务体量下,腾讯计费要支撑业务的快速增长,同时还要保证每笔交易不错账。采用最终一致性或离线补...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
Java学习笔记(七十二)—— Cookie
概述 会话技术: 会话:一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器发送资源请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cookie,把数据存储到客户端 服务器端会话技术:Session,把数据存储到服务器端 Cookie 概念:客户端会话技术,将数据存储到客户端 快速入门: 使用步骤: 创建C
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
强烈推荐10本程序员在家读的书
很遗憾,这个鼠年春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 显示当前目录 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mk
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,对于用户的信息、相关业务的内容,通常都需要对其进行存储,而不是像第2章节中那样,把用户信息存储在内存中(重启就丢了!)。 对于信息的存储,现在已经有非常非常多...
基于Python的人脸自动戴口罩系统
目录 1、项目背景 2、页面设计 3、器官识别 4、退出系统 1、项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩、酒精、消毒液奇货可居。 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的Landmark人脸68个关键点检测库轻松识别出人脸五官
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问