【问题标题】:AVX - storing __256 vector back to the memory (void**) in C,AVX - 将 __256 向量存储回 C 中的内存(void**),
【发布时间】:2015-06-06 08:22:14
【问题描述】:

我有以下用 C 编写的代码摘录,

  double* res;
  posix_memalign((void **)&res, 32, sizeof(double)*4);

  __m256 ymm0, ymm1, ymm2, ymm3;

  ymm0 = _mm256_load_pd(vector_a);
  ymm1 = _mm256_load_pd(vector_b);

  ymm2 = _mm256_mul_pd(ymm1, ymm2); 

  ymm3 = _mm256_store_pd((double*)res, ymm3); <--- problem line, 

当我编译时,我收到以下错误消息,

 error: assigning to '__m256' from incompatible type 'void'
    ymm3 = _mm256_store_pd((double*)res, ymm3);

我认为将其转换为 'res' 的双指针可以解决问题,但没有运气..

有人可以帮忙吗?

编译器 - clang 3.4 - x86 ubuntu

【问题讨论】:

    标签: c vector void-pointers memory-alignment avx


    【解决方案1】:

    _mm256_store_pd 不返回任何内容。删除对 ymm3 的分配: _mm256_store_pd((double*)res, ymm3);

    你也不需要投射res,因为它已经是double*

    【讨论】:

    • 哦……它是怎么进来的。谢谢!!现在它完美地工作了。可能需要睡觉了哈哈。
    • 这是我看到这个的第一个想法 :) 你需要多睡觉 :)
    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多