上篇博客的快排中用到了基于warp的cuda操作用于分隔数组, 为什么要将控制线程的级别定义为warp呢?

在一个warp内,线程的可以通过__ballot函数,并发的获取这32个数中于pivot的比较结果,然后通过ptx类似汇编的语句asm("mov.u32 %0, %%lanemask_lt;" : "=r"(lane_mask)) 获得线程在warp内的位置的掩码,再按位与之后调用 __popc函数就可以获得在这个warp内这个线程之前有多少个线程对应的数大于或者小于Pivot,就可以获得这个线程对应的数的偏移,进而就实现了分割数组。

这里的所获得的启发就是,一个看似只能串行的扫描操作,也可以通过控制warp实现并行

到这里联想到之前研究风辰大神对word2vec的cuda改写,也实现了对warp的精细控制,进而获得的极大的加速 https://github.com/fengChenHPC/word2vec_cbow

int blockSize = 256;

int gridSize = (sentence_length)/(blockSize/32);

cbow_kernel<1><<<gridSize, blockSize, smsize>>>()

一个block有8个warp,一个warp处理一个字,一个block可以处理8个字,一共有sentence_length个字,所以需要gridSize个block

一个字对应这一个特征向量的相乘操作,例如

for (int c = idInWarp; c < layer1_size; c += warpSize) neu1[c] += syn0[c + last_word * layer1_size];

比如一个字对应了几百维的特征向量,这个字又对应一个warp内的32个线程,可以用32个线程实现对向量相乘的并行

cuda版本的word2vec相关推荐

  1. windows10 查看 nvidia driver cuda 版本

    windows10 查看 nvidia driver cuda 版本 确定安装了nvidia的显卡和显卡驱动 cmd进入终端 命令 nvidia-smi

  2. linux下查看GPU版本和详情信息 CUDA版本信息 anaconda版本信息

    查看GPU型号 lspci | grep -i nvidia 查看NVIDIA驱动版本 sudo dpkg --list | grep nvidia-* # lspci | grep -i nvidi ...

  3. vs 更换cuda版本笔记

    换了一台电脑,vs编译项目时,需要更换cuda版本, vs直接打开项目会报错,解决方法测试成功. 更换cuda方法,需要三个步骤: 在project_xxx.vcxproj中更换cuda版本 1.比如 ...

  4. pytorch 查看gpu cuda版本

    import torchprint(torch.version.cuda) cuda版本查看: nvcc -V      9.0, V9.0.176 cudnn版本查看: python版本查看:pyt ...

  5. CV:NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略

    CV:NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略 目录 根据Anaconda的CUDA版本去安装对应匹配的NVIDIA驱动程序图文教程 ...

  6. CUDA:根据本地电脑的NVIDIA显卡驱动版本去正确匹配待安装的CUDA版本之详细攻略

    CUDA:根据本地电脑的NVIDIA显卡驱动版本去正确匹配待安装的CUDA版本之详细攻略 目录 本地电脑的NVIDIA显卡驱动版本正确匹配对应的CUDA版本

  7. Pytorch:深度学习中pytorch/torchvision版本和CUDA版本最正确版本匹配、对应版本安装之详细攻略

    Pytorch:深度学习中pytorch/torchvision版本和CUDA版本最正确版本匹配.对应版本安装之详细攻略 目录 深度学习中pytorch/torchvision版本和CUDA版本最正确 ...

  8. CUDA:利用Pytorch查看自己电脑上CUDA版本及其相关信息

    CUDA:利用Pytorch查看自己电脑上CUDA版本及其相关信息 目录 利用Pytorch查看自己电脑上CUDA的版本信息

  9. 折腾 | pytoch、cuda版本问题

    凡是写代码的人,基本上都去过博客.简书.github等网站,实际上跑别人的代码也是一种学习,会遇到没有见过的函数.别人的编码风格.同样的功能别人一句话,自己写要十来句,都是通过看别人的东西,慢慢积累的 ...

最新文章

  1. 开发日记-20190906 关键词 当当云阅读 ipad
  2. oracle导入dmp文件报错12154,oracle表空间的创建及dmp 文件的导入(推荐)
  3. 2012年度IT博客大赛10强花落谁家暨圆满落幕
  4. python操作redis中的list
  5. c语言int a什么意思,问一下吧里大神 int a = a; 这么定义是什么意思?
  6. 计算分数加减表达式的值(信息学奥赛一本通-T1079)
  7. Oracle 11g常用管理命令(用户、表空间、权限)
  8. html 文件上传与移除,Vue采用input实现文件上传与删除
  9. 贝叶斯信念网络和马尔科夫链有什么区别
  10. swf php文本,SWFFont - PHP 5 中文文档
  11. Vs 中关于项目中的某 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”
  12. 如何在命令行更改IP地址
  13. java byte数组与16进制间的相互转换
  14. mysql 校对规则名_MySQL字符集及校对规则的理解
  15. 高效率完成一次接入80个手游渠道SDK——游戏接入聚合SDK服务端篇
  16. events_statements_history_long,events_statements_history mysql语句存储
  17. debian7 软件源更新
  18. 一点一点把CAN总线通信吃透
  19. 如何开发自己的HttpServer-NanoHttpd源码解读
  20. 002.西门子M440变频器端子控制正反转

热门文章

  1. 剑指 Offer 03——10
  2. 二十六、深入HashCode与equals的区别(上篇)
  3. c语言改u3d游戏,使用Unity3D怎么制作一个五子棋游戏
  4. 全面涵盖传统方法和深度学习方法:3D人脸识别的十年发展及未来趋势
  5. FlexiBO:基于成本感知的深度神经网络多目标优化
  6. 是否要入坑强化学习,看了这篇文章再说
  7. ICML 2020 | 基于类别描述的文本分类模型
  8. 免费课程 | 云脑机器学习实战训练营,中美大咖携手带你飞!
  9. 接口本地正常服务器报500_运维该如何解决服务器底层维护难题?
  10. Shrio 自定义算法登录认证