我知道如果双方都是非阻塞发送和接收,那么就需要MPI_Waitor 。MPI_Test但我想知道如果我们混合非阻塞发送和阻塞接收,MPI_Wait考虑到阻塞接收可以确保通信完成,我还需要调用吗?
我是 SSE 内在函数的新手,并尝试通过它来优化我的代码。这是我的程序,用于计算等于给定值的数组元素。
我将代码更改为 SSE 版本,但速度几乎没有改变。我想知道我是否以错误的方式使用SSE......
此代码用于不允许我们启用编译器优化选项的分配。
无 SSE 版本:
int get_freq(const float* matrix, float value) {
int freq = 0;
for (ssize_t i = start; i < end; i++) {
if (fabsf(matrix[i] - value) <= FLT_EPSILON) {
freq++;
}
}
return freq;
}
Run Code Online (Sandbox Code Playgroud)
上交所版本:
#include <immintrin.h>
#include <math.h>
#include <float.h>
#define GETLOAD(n) __m128 load##n = _mm_load_ps(&matrix[i + 4 * n])
#define GETEQU(n) __m128 check##n = _mm_and_ps(_mm_cmpeq_ps(load##n, value), and_value)
#define GETCOUNT(n) count = _mm_add_ps(count, check##n)
int get_freq(const float* matrix, float …Run Code Online (Sandbox Code Playgroud)