我有一个__m128i
变量,我需要移动其n位的128位值,即喜欢_mm_srli_si128
和_mm_slli_si128
工作,但在位而不是字节.这样做最有效的方法是什么?
假设有一个__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
类型?)
我正在尝试有效地执行以下任务:
INPUT VALUE: 01101011
MASK: 00110010
MASK RESULT: --10--1-
AGGREGATED: 00000101
Run Code Online (Sandbox Code Playgroud)
我希望这些例子清楚地解释了我想要实现的目标.以非天真的方式做到这一点的最佳方法是什么?
我尝试按照本页的说明构建自定义 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) 我正在编写一个 CUDA 内核,每个线程必须完成以下任务:假设我有一个存储在共享内存中的无符号整数有序数组a
(n
第一个始终为 0),每个线程必须找到数组索引,i
使得a[i]
\ xe2\x89\xa4threadIdx.x
和a[i + 1]
>threadIdx.x
。
一个天真的解决方案可能是:
\n\nfor (i = 0; i < n - 1; i++)\n if (a[i + 1] > threadIdx.x) break;\n
Run Code Online (Sandbox Code Playgroud)\n\n但我认为这不是最好的方法......任何人都可以提出更好的建议吗?
\n我想在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中实现这个功能?