小编Fil*_*ffa的帖子

移位n位的__m128i

我有一个__m128i变量,我需要移动其n位的128位值,即喜欢_mm_srli_si128_mm_slli_si128工作,但在位而不是字节.这样做最有效的方法是什么?

c x86 sse simd sse2

9
推荐指数
1
解决办法
2591
查看次数

__m128中至少有4个SP值

假设有一个__m128变量包含4个SP值,并且您想要最小值,是否有任何可用的内部函数,或者除了值之间的天真线性比较之外的任何其他函数?

正确知道我的解决方案如下(假设输入__m128变量是x):

x = _mm_min_ps(x, (__m128)_mm_srli_si128((__m128i)x, 4));
min = _mm_min_ss(x, (__m128)_mm_srli_si128((__m128i)x, 8))[0];
Run Code Online (Sandbox Code Playgroud)

这是非常可怕的,但它的工作(顺便说一下,有什么类似的_mm_srli_si128但是__m128类型?)

c sse simd

7
推荐指数
1
解决办法
768
查看次数

掩码和聚合位

我正在尝试有效地执行以下任务:

INPUT VALUE: 01101011
MASK:        00110010
MASK RESULT: --10--1-
AGGREGATED:  00000101
Run Code Online (Sandbox Code Playgroud)

我希望这些例子清楚地解释了我想要实现的目标.以非天真的方式做到这一点的最佳方法是什么?

bit-manipulation bitmask

5
推荐指数
1
解决办法
247
查看次数

为 PyJulia 编译并使用自定义系统映像

我尝试按照本页的说明构建自定义 Julia 系统映像,以便加快使用 PyJulia 时的初始化阶段。该命令python3 -m julia.sysimage sys.so成功构建了sys.so图像,但jl = Julia(sysimage="sys.so")似乎失败了,因为我仍然得到:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
  File "/home/jar/.local/lib/python3.7/site-packages/julia/core.py", line 248, in load_module
    elif self.julia.isafunction(juliapath):
  File "/home/jar/.local/lib/python3.7/site-packages/julia/core.py", line 239, in julia
    self.__class__.julia = julia = Julia()
  File "/home/jar/.local/lib/python3.7/site-packages/julia/core.py", line 483, in …
Run Code Online (Sandbox Code Playgroud)

python julia

5
推荐指数
1
解决办法
689
查看次数

在 CUDA 内核中搜索有序数组

我正在编写一个 CUDA 内核,每个线程必须完成以下任务:假设我有一个存储在共享内存中的无符号整数有序数组an第一个始终为 0),每个线程必须找到数组索引,i使得a[i]\ xe2\x89\xa4threadIdx.xa[i + 1]>threadIdx.x

\n\n

一个天真的解决方案可能是:

\n\n
for (i = 0; i < n - 1; i++)\n    if (a[i + 1] > threadIdx.x) break;\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我认为这不是最好的方法......任何人都可以提出更好的建议吗?

\n

arrays cuda

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

在没有分支的情况下比较CUDA

我想在CUDA中实现以下功能:

int compare(unsigned a, unsigned b) {
    if (a == b) {
        return 0;
    } else {
        if (a < b) return -1;
        else return 1;
    }
}
Run Code Online (Sandbox Code Playgroud)

我目前正在使用一个非常天真的宏

#define CMP(X, Y) (((X) == (Y)) ? 0 : (((X) < (Y)) ? -1 : 1))
Run Code Online (Sandbox Code Playgroud)

但我想知道它是否因分支而引起分歧.有没有更好的方法在CUDA中实现这个功能?

c comparison cuda

2
推荐指数
1
解决办法
155
查看次数

标签 统计

c ×3

cuda ×2

simd ×2

sse ×2

arrays ×1

bit-manipulation ×1

bitmask ×1

comparison ×1

julia ×1

python ×1

sse2 ×1

x86 ×1