对于Block, thread的简单理解)
因为新型冠状病毒的影响公司也通知延长假期并且在家办公一周虽然今天还没有到但是LZ也已经大门不出二门不迈了生活还得继续不是嘛但是基于这次疫情LZ也做了点思考很浅薄但是希望之后自己能够做到。1.凡事都要要最坏的打算和Plan B方案。虽然面对疫情应该要充分相信前线的医护人员能够控制好疫情但是作为后方的群众也要做好囤聚粮食为什么减少去超市等人口密集的场所以后家中养成习惯至少准备两个月的口粮。哪怕不能出门也能保证好自己和其他人员的安全。2.家中尽量做到常备口罩消毒液创可贴退烧药等常用医用品为什么一旦疫情爆发家中仍然有储备不会产生恐慌其次可以让工厂优先送往疫情较严重区域减少口罩等物资的供货压力尽量负责好前线就好了3.什么蛇虫鼠蚁、珍禽猛兽真的不要再吃了以前还没有这个意识但是经过这次事件之后万事万物都有存在的道理那个蝙蝠都长那样了咋还能下的去嘴看了不瘆得慌嘛。诶这个事件对这个国家多造成了极大的影响还是要引起反思的有些时候不逞能在吃野生动物这个问题上还是怂些的好。吃一堑长一智回归正题了最近也确实憋坏了不吐不快/(ㄒoㄒ)/~~什么叫block什么叫thread呢可以先看一个代码#includecuda_runtime_api.h#includeiostream#includecublas_v2.h#includestdio.h__global__voidhelloCUDA(void){// blockIdx.x gives the block number ot current kernelprintf(Hello!!! I am thread %d in block: %d\n,threadIdx.x,blockIdx.x);}intmain(){helloCUDA16,8();//分别表示block的数量和每个block的线程数cudaDeviceSynchronize();printf(All threads are finnished!\n);return0;}如果是单block多线程呢helloCUDA1,128();输出结果Hello!!! I am thread 64 in block: 0 Hello!!! I am thread 65 in block: 0 Hello!!! I am thread 66 in block: 0 Hello!!! I am thread 67 in block: 0 Hello!!! I am thread 68 in block: 0 Hello!!! I am thread 69 in block: 0 Hello!!! I am thread 70 in block: 0 Hello!!! I am thread 71 in block: 0 Hello!!! I am thread 72 in block: 0 Hello!!! I am thread 73 in block: 0 Hello!!! I am thread 74 in block: 0 Hello!!! I am thread 75 in block: 0 Hello!!! I am thread 76 in block: 0 Hello!!! I am thread 77 in block: 0 Hello!!! I am thread 78 in block: 0 Hello!!! I am thread 79 in block: 0 Hello!!! I am thread 80 in block: 0 Hello!!! I am thread 81 in block: 0 Hello!!! I am thread 82 in block: 0 Hello!!! I am thread 83 in block: 0 Hello!!! I am thread 84 in block: 0 Hello!!! I am thread 85 in block: 0 Hello!!! I am thread 86 in block: 0 Hello!!! I am thread 87 in block: 0 Hello!!! I am thread 88 in block: 0 Hello!!! I am thread 89 in block: 0 Hello!!! I am thread 90 in block: 0 Hello!!! I am thread 91 in block: 0 Hello!!! I am thread 92 in block: 0 Hello!!! I am thread 93 in block: 0 Hello!!! I am thread 94 in block: 0 Hello!!! I am thread 95 in block: 0 Hello!!! I am thread 0 in block: 0 Hello!!! I am thread 1 in block: 0 Hello!!! I am thread 2 in block: 0 Hello!!! I am thread 3 in block: 0 Hello!!! I am thread 4 in block: 0 Hello!!! I am thread 5 in block: 0 Hello!!! I am thread 6 in block: 0 Hello!!! I am thread 7 in block: 0 Hello!!! I am thread 8 in block: 0 Hello!!! I am thread 9 in block: 0 Hello!!! I am thread 10 in block: 0 Hello!!! I am thread 11 in block: 0 Hello!!! I am thread 12 in block: 0 Hello!!! I am thread 13 in block: 0 Hello!!! I am thread 14 in block: 0 Hello!!! I am thread 15 in block: 0 Hello!!! I am thread 16 in block: 0 Hello!!! I am thread 17 in block: 0 Hello!!! I am thread 18 in block: 0 Hello!!! I am thread 19 in block: 0 Hello!!! I am thread 20 in block: 0 Hello!!! I am thread 21 in block: 0 Hello!!! I am thread 22 in block: 0 Hello!!! I am thread 23 in block: 0 Hello!!! I am thread 24 in block: 0 Hello!!! I am thread 25 in block: 0 Hello!!! I am thread 26 in block: 0 Hello!!! I am thread 27 in block: 0 Hello!!! I am thread 28 in block: 0 Hello!!! I am thread 29 in block: 0 Hello!!! I am thread 30 in block: 0 Hello!!! I am thread 31 in block: 0 ...可以看到什么呢threadIdx.x是线程的idx输出是一块连续的数一块连续的数字最直观的是index从0-31说明这32个线程是一起执行的啥意思呢线程块block是核函数的启动单位每个线程块有多个线程如上述代码设置有一个block每个block有128个线程通常这128个线程还会被分成线程束每个线程束有32个线程这32个线程通过一个线程束来运行所以线程束是程序执行的单位。但是如果设置为helloCUDA128,1();结果为Hello!!! I am thread 0 in block: 91 Hello!!! I am thread 0 in block: 107 Hello!!! I am thread 0 in block: 109 Hello!!! I am thread 0 in block: 68 Hello!!! I am thread 0 in block: 64 Hello!!! I am thread 0 in block: 23 Hello!!! I am thread 0 in block: 35 Hello!!! I am thread 0 in block: 71 Hello!!! I am thread 0 in block: 56 Hello!!! I am thread 0 in block: 72 Hello!!! I am thread 0 in block: 37 Hello!!! I am thread 0 in block: 79 Hello!!! I am thread 0 in block: 28 Hello!!! I am thread 0 in block: 34 Hello!!! I am thread 0 in block: 33 Hello!!! I am thread 0 in block: 55 Hello!!! I am thread 0 in block: 21 Hello!!! I am thread 0 in block: 86 Hello!!! I am thread 0 in block: 52 Hello!!! I am thread 0 in block: 57 Hello!!! I am thread 0 in block: 49 Hello!!! I am thread 0 in block: 78 Hello!!! I am thread 0 in block: 31 Hello!!! I am thread 0 in block: 25 Hello!!! I am thread 0 in block: 113 Hello!!! I am thread 0 in block: 111 Hello!!! I am thread 0 in block: 8 Hello!!! I am thread 0 in block: 66 ...则可以看到block的ID是乱序的。如果是这样的呢helloCUDA4128();截取当中部分结果Hello!!! I am thread 32 in block: 0 Hello!!! I am thread 33 in block: 0 Hello!!! I am thread 34 in block: 0 Hello!!! I am thread 35 in block: 0 Hello!!! I am thread 36 in block: 0 Hello!!! I am thread 37 in block: 0 Hello!!! I am thread 38 in block: 0 Hello!!! I am thread 39 in block: 0 Hello!!! I am thread 40 in block: 0 Hello!!! I am thread 41 in block: 0 Hello!!! I am thread 42 in block: 0 Hello!!! I am thread 43 in block: 0 Hello!!! I am thread 44 in block: 0 Hello!!! I am thread 45 in block: 0 Hello!!! I am thread 46 in block: 0 Hello!!! I am thread 47 in block: 0 Hello!!! I am thread 48 in block: 0 Hello!!! I am thread 49 in block: 0 Hello!!! I am thread 50 in block: 0 Hello!!! I am thread 51 in block: 0 Hello!!! I am thread 52 in block: 0 Hello!!! I am thread 53 in block: 0 Hello!!! I am thread 54 in block: 0 Hello!!! I am thread 55 in block: 0 Hello!!! I am thread 56 in block: 0 Hello!!! I am thread 57 in block: 0 Hello!!! I am thread 58 in block: 0 Hello!!! I am thread 59 in block: 0 Hello!!! I am thread 60 in block: 0 Hello!!! I am thread 61 in block: 0 Hello!!! I am thread 62 in block: 0 Hello!!! I am thread 63 in block: 0 Hello!!! I am thread 32 in block: 3 Hello!!! I am thread 33 in block: 3 Hello!!! I am thread 34 in block: 3 Hello!!! I am thread 35 in block: 3 Hello!!! I am thread 36 in block: 3 Hello!!! I am thread 37 in block: 3 Hello!!! I am thread 38 in block: 3 Hello!!! I am thread 39 in block: 3 Hello!!! I am thread 40 in block: 3 Hello!!! I am thread 41 in block: 3 Hello!!! I am thread 42 in block: 3 Hello!!! I am thread 43 in block: 3 Hello!!! I am thread 44 in block: 3 Hello!!! I am thread 45 in block: 3 Hello!!! I am thread 46 in block: 3 Hello!!! I am thread 47 in block: 3 Hello!!! I am thread 48 in block: 3 Hello!!! I am thread 49 in block: 3 Hello!!! I am thread 50 in block: 3 Hello!!! I am thread 51 in block: 3 Hello!!! I am thread 52 in block: 3 Hello!!! I am thread 53 in block: 3 Hello!!! I am thread 54 in block: 3 Hello!!! I am thread 55 in block: 3 Hello!!! I am thread 56 in block: 3 Hello!!! I am thread 57 in block: 3 Hello!!! I am thread 58 in block: 3 Hello!!! I am thread 59 in block: 3 Hello!!! I am thread 60 in block: 3 Hello!!! I am thread 61 in block: 3 Hello!!! I am thread 62 in block: 3 Hello!!! I am thread 63 in block: 3对于图像处理如果对每个像素点进行相同的操作也许使用GPU的方式比较合适但是如果对于极少数数据进行一些操作有可能加上IO使用的时间可能还不如直接在CPU上操作更方便些OpenCV gpu版本的一些操作接受的参数都是CPU上的参数那么我直接inference得到的GPU上的结果还得copy到GPU上不知道小伙伴们有没有什么比较好的方法呢最后说一句 武汉加油湖北加油中国加油