申威支持clickhouse吗?

大数据&容器 大数据&容器 1725 人阅读 | 1 人回复 | 2021-12-14

clickhouse作为开源的主流列式数据库,在金融等很多行业均应用广泛,请问,申威是否支持,有计划支持吗,何时能适配上?
回复

使用道具 举报

回答|共 1 个

xiaocheng

发表于 2021-12-15 16:43:29 | 显示全部楼层

目前我这边正在尝试编译clickhouse,暂时遇到如下问题需要解决,望得到多方支援,以便加快进度,不甚感谢!
以下是否支持或是否有替代方案?

1,gcc 的选项 -msse4 -mpopcnt -Wno-unused-private-field -Wno-unused-local-typedef -Wno-for-loop-analysis  ?

2,汇编指令:
        2.1: crc相关
        inline uint64 _mm_crc32_u64(uint64 crc, uint64 value)                                                                                                                                                              
        {
                asm("crc32q %[value], %[crc]\n" : [crc] "+r" (crc) : [value] "rm" (value));
                return crc;
        }
       
        2.2: movdqu移动对齐相关
           __asm__("movdqu %0, %%xmm0" :: "m"(sse_src_pos[-4]));
       
        2.3:计时器相关
        UInt64 rdtsc()
        {
            UInt64 val;
            __asm__ __volatile__("rdtsc" : "=A" (val) : );
            return val;
        }

3,内核syscall函数: sys_futex

4,是否支持SSE ?如下函数能支持最好:
        _mm_set1_epi8
        _mm_loadu_si128
        _mm_and_si128
        _mm_xor_si128
        _mm_storeu_si128
        _mm_cmplt_epi8
        _mm_setzero_si128
        _mm_movemask_epi8
        _mm_movemask_ps
        _mm_cmpneq_ps
        _mm_loadu_ps
        _mm_store_si128
        mm_is_in
        __builtin_ctz
        _mm_cmpestrc
        _mm_setr_epi8
        _mm_cmpestri


5,hash的CrapWow实现:
struct CrapWow
{
        size_t operator() (CompactStringRef x) const
        {
                const char * key = x.data();
                size_t len = x.size;
                size_t seed = 0;

                const UInt64 m = 0x95b47aa3355ba1a1, n = 0x8a970be7488fda55;
            UInt64 hash;
            // 3 = m, 4 = n
            // r12 = h, r13 = k, ecx = seed, r12 = key
            asm(
                "leaq (%%rcx,%4), %%r13\n"
                "movq %%rdx, %%r14\n"
                "movq %%rcx, %%r15\n"
                "movq %%rcx, %%r12\n"
                "addq %%rax, %%r13\n"
                "andq $0xfffffffffffffff0, %%rcx\n"
                "jz QW%=\n"
                "addq %%rcx, %%r14\n\n"
                "negq %%rcx\n"
            "XW%=:\n"
                "movq %4, %%rax\n"
                "mulq (%%r14,%%rcx)\n"
                "xorq %%rax, %%r12\n"
                "xorq %%rdx, %%r13\n"
                "movq %3, %%rax\n"
                "mulq 8(%%r14,%%rcx)\n"
                "xorq %%rdx, %%r12\n"
                "xorq %%rax, %%r13\n"
                "addq $16, %%rcx\n"
                "jnz XW%=\n"
            "QW%=:\n"
                "movq %%r15, %%rcx\n"
                "andq $8, %%r15\n"
                "jz B%=\n"
                "movq %4, %%rax\n"
                "mulq (%%r14)\n"
                "addq $8, %%r14\n"
                "xorq %%rax, %%r12\n"
                "xorq %%rdx, %%r13\n"
            "B%=:\n"
                "andq $7, %%rcx\n"
                "jz F%=\n"
                "movq $1, %%rdx\n"
                "shlq $3, %%rcx\n"
                "movq %3, %%rax\n"
                "shlq %%cl, %%rdx\n"
                "addq $-1, %%rdx\n"
                "andq (%%r14), %%rdx\n"
                "mulq %%rdx\n"
                "xorq %%rdx, %%r12\n"
                "xorq %%rax, %%r13\n"
            "F%=:\n"
                "leaq (%%r13,%4), %%rax\n"
                "xorq %%r12, %%rax\n"
                "mulq %4\n"
                "xorq %%rdx, %%rax\n"
                "xorq %%r12, %%rax\n"
                "xorq %%r13, %%rax\n"
                : "=a"(hash), "=c"(key), "=d"(key)
                : "r"(m), "r"(n), "a"(seed), "c"(len), "d"(key)
                : "%r12", "%r13", "%r14", "%r15", "cc"
            );
            return hash;
        }
};
回复

使用道具 举报

swcaicaizi

发表于 2022-5-9 17:01:13

mm_is_in
__builtin_ctz
请问,这两个是SSE函数吗,在Intel网址上搜不到。。。。
https://www.intel.com/content/ww ... s-guide/index.html#

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则