小编use*_*263的帖子

GCC自动矢量化对运行时没有影响,即使被称为"有利可图"

在过去的几天里,我一直在阅读gcc 4.7的自动向量化.我按照我在网上看到的一些例子,设置似乎是正确的.但是当我实际运行代码并在矢量化开启或关闭之间进行比较时,运行时没有明显的差异.

这是我一直在使用的代码:

#include <string.h>
#include <stdlib.h>
#include <emmintrin.h>
#include <stdio.h>
#include <math.h>

int main(int argc, char** argv) {

    long b = strtol(argv[2], NULL, 0); 
    unsigned long long int i;
    unsigned long long int n = (int)pow(2,29);                                                                                                                                                                                            
    float total = 0;

    float *__restrict__ x1; 
    float *__restrict__ y1; 

    posix_memalign((void *)&x1, 16, sizeof(float)*n);
    posix_memalign((void *)&y1, 16, sizeof(float)*n);


    float *__restrict__ x = __builtin_assume_aligned(x1,16);
    float *__restrict__ y = __builtin_assume_aligned(y1,16);

    for (i=0;i<n;i++) {
            x[i] = i;
            y[i] = i;
    }   

    for (i=0; i<n; i++) { …
Run Code Online (Sandbox Code Playgroud)

c gcc auto-vectorization

8
推荐指数
1
解决办法
396
查看次数

在python中,背景中究竟发生了什么,"x = 1j"有效,但"x = 1*j"会抛出错误?

具体来说,如果我想定义一个对象,比如z,那么

x = 1z
Run Code Online (Sandbox Code Playgroud)

工作但是

x = 1*z 
Run Code Online (Sandbox Code Playgroud)

失败了,我怎么定义这样的对象?

我不认为它涉及到重载乘法运算符.

python built-in

4
推荐指数
1
解决办法
86
查看次数

标签 统计

auto-vectorization ×1

built-in ×1

c ×1

gcc ×1

python ×1