代码之家  ›  专栏  ›  技术社区  ›  luiscubal

无基本SIMD数据类型的基本原理

  •  2
  • luiscubal  · 技术社区  · 15 年前

    我理解,既然C已经很老了,那么在那时添加它可能没有意义(MMX在那时甚至不存在)。但从那时起就有了C99,而且仍然没有SIMD变量的标准(据我所知)。

    “SIMD变量”的意思是:

    vec2_int a = {2, 2};
    vec2_int b = {3, 3};
    a += b;
    

    我也明白这可以通过结构来实现,而且(理论上)编译器应该在适当的时候优化它以使用SIMD。

    但我最近看到一个来自 Qt Labs

    如果只是C,我会认为C是愚蠢的。但是,据我所知,新的语言,如C++、java和C语言也不包括这些。C#有单指令多数据但它不是一个基本类型(而且由于C#有一个“decimal”关键字,我不认为他们试图保存类型)。

    所以我注意到:带有向量基元类型的语言似乎是例外,而不是规则。 因为向量基元类型看起来很明显,所以我猜一定有一些合理的理由不包括这些类型。

    有人知道为什么这些类型经常被排除在外吗?一些链接到反对添加它们的理由?

    1 回复  |  直到 15 年前
        1
  •  5
  •   In silico    15 年前

    目前,算法的矢量化并不是自动的(尽管这一点正在积极研究中)。必须显式编写“可矢量化”的算法,以利用执行环境的任何SIMD功能。

    推荐文章