cuda版本的word2vec
上篇博客的快排中用到了基于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相关推荐
- windows10 查看 nvidia driver cuda 版本
windows10 查看 nvidia driver cuda 版本 确定安装了nvidia的显卡和显卡驱动 cmd进入终端 命令 nvidia-smi
- linux下查看GPU版本和详情信息 CUDA版本信息 anaconda版本信息
查看GPU型号 lspci | grep -i nvidia 查看NVIDIA驱动版本 sudo dpkg --list | grep nvidia-* # lspci | grep -i nvidi ...
- vs 更换cuda版本笔记
换了一台电脑,vs编译项目时,需要更换cuda版本, vs直接打开项目会报错,解决方法测试成功. 更换cuda方法,需要三个步骤: 在project_xxx.vcxproj中更换cuda版本 1.比如 ...
- pytorch 查看gpu cuda版本
import torchprint(torch.version.cuda) cuda版本查看: nvcc -V 9.0, V9.0.176 cudnn版本查看: python版本查看:pyt ...
- CV:NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略
CV:NVIDIA驱动程序安装图文教程(根据Anaconda的CUDA版本去安装对应匹配的NVIDIA)之详细攻略 目录 根据Anaconda的CUDA版本去安装对应匹配的NVIDIA驱动程序图文教程 ...
- CUDA:根据本地电脑的NVIDIA显卡驱动版本去正确匹配待安装的CUDA版本之详细攻略
CUDA:根据本地电脑的NVIDIA显卡驱动版本去正确匹配待安装的CUDA版本之详细攻略 目录 本地电脑的NVIDIA显卡驱动版本正确匹配对应的CUDA版本
- Pytorch:深度学习中pytorch/torchvision版本和CUDA版本最正确版本匹配、对应版本安装之详细攻略
Pytorch:深度学习中pytorch/torchvision版本和CUDA版本最正确版本匹配.对应版本安装之详细攻略 目录 深度学习中pytorch/torchvision版本和CUDA版本最正确 ...
- CUDA:利用Pytorch查看自己电脑上CUDA版本及其相关信息
CUDA:利用Pytorch查看自己电脑上CUDA版本及其相关信息 目录 利用Pytorch查看自己电脑上CUDA的版本信息
- 折腾 | pytoch、cuda版本问题
凡是写代码的人,基本上都去过博客.简书.github等网站,实际上跑别人的代码也是一种学习,会遇到没有见过的函数.别人的编码风格.同样的功能别人一句话,自己写要十来句,都是通过看别人的东西,慢慢积累的 ...
最新文章
- 开发日记-20190906 关键词 当当云阅读 ipad
- oracle导入dmp文件报错12154,oracle表空间的创建及dmp 文件的导入(推荐)
- 2012年度IT博客大赛10强花落谁家暨圆满落幕
- python操作redis中的list
- c语言int a什么意思,问一下吧里大神 int a = a; 这么定义是什么意思?
- 计算分数加减表达式的值(信息学奥赛一本通-T1079)
- Oracle 11g常用管理命令(用户、表空间、权限)
- html 文件上传与移除,Vue采用input实现文件上传与删除
- 贝叶斯信念网络和马尔科夫链有什么区别
- swf php文本,SWFFont - PHP 5 中文文档
- Vs 中关于项目中的某 NuGet 程序包还原失败:找不到“xxx”版本的程序包“xxx”
- 如何在命令行更改IP地址
- java byte数组与16进制间的相互转换
- mysql 校对规则名_MySQL字符集及校对规则的理解
- 高效率完成一次接入80个手游渠道SDK——游戏接入聚合SDK服务端篇
- events_statements_history_long,events_statements_history mysql语句存储
- debian7 软件源更新
- 一点一点把CAN总线通信吃透
- 如何开发自己的HttpServer-NanoHttpd源码解读
- 002.西门子M440变频器端子控制正反转