Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于排序整数gpuarray是否有更快的MATLAB ismember()?_Matlab_Gpgpu_Binary Search - Fatal编程技术网

对于排序整数gpuarray是否有更快的MATLAB ismember()?

对于排序整数gpuarray是否有更快的MATLAB ismember()?,matlab,gpgpu,binary-search,Matlab,Gpgpu,Binary Search,我有一些代码在各种gpuarray上调用ismember(A,B)一些2^20次A和B,其中A是一个非稀疏矩阵,具有数百万个排序行的整数项,B是一个由数千个不同整数项组成的非稀疏排序向量。如果有帮助的话,通过线性索引A(:)可以以排序的形式出现 对于排序(整数)的非gpu阵列,最快的选项是内置(“'u ismemberhelper',a,b),ismembc速度较慢,两者都比ismember快得多(因为它们忽略了所有检查),无法使用GPuarray操作,并且仍然比GPuarray上的ismemb

我有一些代码在各种gpuarray上调用
ismember(A,B)
一些
2^20
A
B
,其中
A
是一个非稀疏矩阵,具有数百万个排序行的整数项,
B
是一个由数千个不同整数项组成的非稀疏排序向量。如果有帮助的话,通过线性索引
A(:)
可以以排序的形式出现

对于排序(整数)的非gpu阵列,最快的选项是
内置(“'u ismemberhelper',a,b)
ismembc
速度较慢,两者都比
ismember
快得多(因为它们忽略了所有检查),无法使用GPuarray操作,并且仍然比GPuarray上的
ismember
慢。也就是说,在速度方面:

ismember on GPU > builtin('_ismemberhelper',a,b) > ismembc() > ismember on CPU
现在,我已经查看了主
ismember.m
文件,查看它使用了哪些代码,但我所能找到的相关信息是:

    else %(a,b, are some other class like gpuArray, syb object)
    lia = false(size(a));
    if nargout <= 1
        for i=1:numelA
            lia(i) = any(a(i)==b(:));   % ANY returns logical.
        end
    else
        for i=1:numelA
            found = a(i)==b(:); % FIND returns indices for LOCB.
            if any(found)
                lia(i) = true;
                found = find(found);
                locb(i) = found(1);
            end
        end
    end
end
else%(a、b是其他类,如gpuArray、syb对象)
lia=假(尺寸(a));

如果nargout我认为问题2可以通过问题1的这个线程来回答,请在命令窗口键入
edit gpuArray/ismember
@CST链接:它只给出(注释掉)函数用法的描述和示例,然后参考
ismember
docu@GameOfThrows:看起来不像。@July那么,很可能.m文件只是用于类接口,而实际的实现是在.mex文件中。查看
toolboxs`文件夹下的MATLAB安装文件夹(例如
C:\Program Files\MATLAB
),然后在那里或子文件夹中查找
gpuArray`。也许你能找到一些提示。你试过哈希表吗?(
containers.Map
)?