“冗余”将操作移至Cuda的同一个注册表

时间:2016-02-01 23:31:47

标签: assembly cuda ptx

我正在查看CUDA SASS代码,我注意到对相同寄存器的大量移动操作。例如:

function fixPage5() {
	var footer = document.getElementsByTagName('footer')[0];
    var pages = document.getElementsByClassName('page');

    if (pages[(pages.length - 1)].getBoundingClientRect().top < 1) {
        pages[(pages.length - 1)].classList.add('fixed');
        footer.style.marginTop = '424px';
    }

    if (pages[(pages.length - 2)].getBoundingClientRect().bottom > -1) {
        footer.style.marginTop = '0';
        pages[(pages.length - 1)].classList.remove('fixed');
    }
}

window.addEventListener('scroll',fixPage5,false);

我只是好奇,这些搬家行动的目的是什么?是时候了,它们的行为就像'nop',还是不那么明显?

注意:这些不包含在PTX代码中,只包含在SASS中。我假设在中间操作中使用,而不是在PTX操作期间使用。虽然,对于上下文,PTX是:

body {
margin: 0;
padding: 0;
}

.page {
position: relative;
width: 100%;
height: 400px;
padding: 12px;
font-size: 72px;
}

footer {
position: relative;
width: 100%;
z-index: 12;
height: 400px;
font-size: 72px;
color: rgb(255,255,255);
background-color: rgb(31,31,31);
}

.page:nth-of-type(odd) {
color: rgb(255,255,255);
background-color: rgb(127,127,127);
}

.fixed {
position: fixed;
top: 0;
left: 0;
z-index: -12;
}

实际的<div class="page">Page One</div> <div class="page">Page Two</div> <div class="page">Page Three</div> <div class="page">Page Four</div> <div class="page">Page Five</div> <footer>Footer</footer>代码是上面的ptx的内联汇编。

更新 使用Cuda Toolkit 7.5在Visual Studio 2013中使用172 MOV R3, R3; 173 MOV R4, R4; 174 MOV R3, R3; 175 MOV R4, R4; 176 MOV R4, R4; 177 MOV R3, R3; 178 MOV R4, R4; 85 .reg .u32 a, b; 86 bfind.s64 a, %rd37; c++进行编译。设备:GTX 970(Maxwell GPU)。

sm_52切换到compute_52可以消除这种低效率。

0 个答案:

没有答案