loop-unrolling

    0热度

    1回答

    我在一个大应用,我需要执行环路上后续的相关循环展开了一定的程序工作展开。我在下面写了一小段代码来复制更大的版本。 考虑原代码: void main() { int a[20] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; int b[20] = {10,9,8,7,6,5,4,3,2,1,20,19,18,17,16,15,

    0热度

    1回答

    我有一个简单的问题给你。我使这个代码来计算一个数字的阶乘而不递归。 int fact2(int n){ int aux=1, total = 1; int i; int limit = n - 1; for (i=1; i<=limit; i+=2){ aux = i*(i+1); total = total*aux; }

    0热度

    2回答

    我在展开嵌套for循环时遇到问题。我理解这个概念,我试图将其付诸实践,但是我正在编辑我的for循环中的语句,以适应展开过程,因此绊倒了我。 如果有人能够向我展示一个有效的展开,并让我通过它,这将是一个巨大的帮助。 这里是环部分,我想展开: for (i=1 ; i < WIDTH-1 ; ++i) { for (j = 1 ; j < HEIGHT-1 ; ++j) {

    8热度

    1回答

    我的9600GT讨厌我。 片段着色器: #version 130 uint aa[33] = uint[33]( 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0 ); void main() { int i=0; int a=26;

    0热度

    2回答

    我想熟悉汇编程序中的编程。在开始时我选择了随机代码并尝试更新它。我还阅读了一些关于循环展开的内容,但我不知道从哪里开始。 这是我的代码,我已经修改了一下: 0000: 4401000C | | ADDI R0, 0x000C, R1 0004: 00000000 | | NOP 0008: 00000000 | | NOP 000C: 0C220000 | loop | LDW

    3热度

    2回答

    我了解#pragma unroll的作品,但如果我有下面的例子: __global__ void test_kernel(const float* B, const float* C, float* A_out) { int j = threadIdx.x + blockIdx.x * blockDim.x; if (j < array_size) { #prag

    2热度

    1回答

    我正在制作XNA游戏,我想知道是否有优化某些循环的方法。例如: 我有一个地图类,包含瓦片的集合,因此,在地图更新()只需要调用每瓦更新() // Update method in Map Class public void Update() { for (int index = 0; index < tiles.Count; index++) {

    2热度

    1回答

    我想告诉我的编译器为我使用#pragma unroll展开一个循环。但是,迭代次数由编译时变量决定,因此循环需要多次展开。就像这样: #define ITEMS 4 #pragma unroll (ITEMS + 1) for (unsigned int ii = 0; ii <= ITEMS; ++ii) /* do something */; 编译器不喜欢这样,不过,因为它

    2热度

    1回答

    我试图选择性地展开第二循环在下面的程序: #include <stdio.h> int main() { int in[1000], out[1000]; int i,j; #pragma nounroll for (i = 100; i < 1000; i++) { in[i]+= 10; } #prag

    4热度

    1回答

    我必须做出以下AVX操作: __m256 perm, func; __m256 in = _mm256_load_ps(inPtr+x); __m256 acc = _mm256_setzero_ps(); perm = _mm256_shuffle_ps(in, in, _MM_SHUFFLE(3,2,1,0)); func = _mm256_load_ps(fPtr+0); acc