VideoCard 板


LINE

请问有使用过CUDA的大大 最近刚在使用 把程式改成4个thread的平行化 但是程式却慢百倍!!! 按照道理说如果改4个thread 若扣掉搬资料的时间 理应还是会比原来程式快一些 这个不知道是为何会慢那麽多?? 感谢指教!!! -- =====================原来程式码改的地方========================= for (j = 0; j < BLOCK_SIZE; j++) { memcpy(&m5[0],&img->cof[i0][j0][j][0], BLOCK_SIZE * sizeof(int)); m7 = &(img->m7[j][0]); m6[0] = m5[0] + m5[2]; m6[1] = m5[0] - m5[2]; m6[2] = (m5[1] >> 1) - m5[3]; m6[3] = m5[1] + (m5[3] >> 1); m7[0] = m6[0] + m6[3]; m7[1] = m6[1] + m6[2]; m7[2] = m6[1] - m6[2]; m7[3] = m6[0] - m6[3]; } for (i = 0; i < BLOCK_SIZE; i++) { ipos = i + ioff; m5[0]=img->m7[0][i]; m5[1]=img->m7[1][i]; m5[2]=img->m7[2][i]; m5[3]=img->m7[3][i]; m6[0] = m5[0] + m5[2]; m6[1] = m5[0] - m5[2]; m6[2] = (m5[1] >> 1) - m5[3]; m6[3] = m5[1] + (m5[3] >> 1); } ===============================改成kernal=================== __global__ void idctcuda_h(int *dev_A,int *dev_B) { int id=threadIdx.x; dev_B[id*4+0]=dev_A[id*4+0] +dev_A[id*4+2]; dev_B[id*4+1]=dev_A[id*4+0] -dev_A[id*4+2]; dev_B[id*4+2]=(dev_A[id*4+1])>>1-dev_A[id*4+3]; dev_B[id*4+3]=dev_A[id*4+1] +(dev_A[id*4+3])>>1; dev_A[0*4+id]=dev_B[id*4+0]+dev_B[id*4+3]; dev_A[1*4+id]=dev_B[id*4+1]+dev_B[id*4+2]; dev_A[2*4+id]=dev_B[id*4+1]-dev_B[id*4+2]; dev_A[3*4+id]=dev_B[id*4+0]-dev_B[id*4+3]; __syncthreads(); } __global__ void idctcuda_v(int *dev_A,int *dev_B) { int id=threadIdx.x; dev_B[id*4+0]=dev_A[id*4+0] +dev_A[id*4+2]; dev_B[id*4+1]=dev_A[id*4+0] -dev_A[id*4+2]; dev_B[id*4+2]=(dev_A[id*4+1])>>1-dev_A[id*4+3]; dev_B[id*4+3]=dev_A[id*4+1] +(dev_A[id*4+3])>>1; dev_A[0*4+id]=dev_B[id*4+0]+dev_B[id*4+3]; dev_A[1*4+id]=dev_B[id*4+1]+dev_B[id*4+2]; dev_A[2*4+id]=dev_B[id*4+1]-dev_B[id*4+2]; dev_A[3*4+id]=dev_B[id*4+0]-dev_B[id*4+3]; __syncthreads(); } __global__ void idctcuda_h(int *dev_A,int *dev_B) { int id=threadIdx.x; dev_B[id*4+0]=dev_A[id*4+0] +dev_A[id*4+2]; dev_B[id*4+1]=dev_A[id*4+0] -dev_A[id*4+2]; dev_B[id*4+2]=(dev_A[id*4+1])>>1-dev_A[id*4+3]; dev_B[id*4+3]=dev_A[id*4+1] +(dev_A[id*4+3])>>1; dev_A[0*4+id]=dev_B[id*4+0]+dev_B[id*4+3]; dev_A[1*4+id]=dev_B[id*4+1]+dev_B[id*4+2]; dev_A[2*4+id]=dev_B[id*4+1]-dev_B[id*4+2]; dev_A[3*4+id]=dev_B[id*4+0]-dev_B[id*4+3]; __syncthreads(); } __global__ void idctcuda_v(int *dev_A,int *dev_B) { int id=threadIdx.x; dev_B[id*4+0]=dev_A[id*4+0] +dev_A[id*4+2]; dev_B[id*4+1]=dev_A[id*4+0] -dev_A[id*4+2]; dev_B[id*4+2]=(dev_A[id*4+1])>>1-dev_A[id*4+3]; dev_B[id*4+3]=dev_A[id*4+1] +(dev_A[id*4+3])>>1; dev_A[0*4+id]=dev_B[id*4+0]+dev_B[id*4+3]; dev_A[1*4+id]=dev_B[id*4+1]+dev_B[id*4+2]; dev_A[2*4+id]=dev_B[id*4+1]-dev_B[id*4+2]; dev_A[3*4+id]=dev_B[id*4+0]-dev_B[id*4+3]; __syncthreads(); } void itranscuda(int *regist) { int data_size = 16*sizeof(int); int *dev_A ,*dev_B; int i; cudaMalloc( (void**)&dev_A, data_size ); cudaMalloc( (void**)&dev_B, data_size ); cudaMemcpy( dev_A, img, data_size, cudaMemcpyHostToDevice ); //dim3 dimblock(2,2); //dim3 dimgrid(w/dimblock.x,h/dimblock.y); idctcuda_h<<<1,4 >>>( dev_A,dev_B); idctcuda_v<<<1,4 >>>( dev_A,dev_B); cudaMemcpy( regist, dev_A, data_size, cudaMemcpyDeviceToHost ); cudaFree(dev_A); } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.112.5
1F:推 vixen:程式怎麽改得? 这要po原始码才能看出吧? 07/29 19:35
※ 编辑: holyyoung 来自: 140.123.112.5 (07/30 11:53)
2F:→ serlontw:资料不够大光程式预备的时间,用单执行绪程式就跑完了.. 07/30 17:31
3F:推 sdk:4个thread太少了...好歹也来个4000 or 40000.... 08/01 01:11
4F:→ holyyoung:4000耶 不过程式很难可以改成100条以上 08/02 21:17







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP