python scipy weave长整型

2024-09-27 17:58:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用精纺以提高python代码的性能。基本上,我必须经过一个长数组(1024^3,3)-即一个包含1024^3个元素的数组,每个元素有3个条目-为每个元素计算一些东西,然后填充另一个数组。你知道吗

问题是当阵列大于~(850**3,3)时,我得到了错误的分割结果。分段错误发生在我尝试读取位置(a,3)处数组的值时,其中a=715827882。注意3*a~2^31。我已经仔细研究了这个问题,在我看来,我不能遍历长度大于整数变量大小的数组。你知道吗

实际上,这个简单的程序

################################
import numpy as np
import scipy.weave as wv

def printf():

    a=3*1024**3

    support = """
          #include <iostream>
          using namespace std;
    """

    code = """
        cout << a << endl;
    """
    wv.inline(code,['a'],
              type_converters = wv.converters.blitz,
              support_code = support,libraries = ['m'])

printf()
#########################################

输出-1073741824,而不是3221225472。这意味着(我认为)变量a在c代码中是32位的整数,而不是64位。你知道吗

有人知道怎么解决这个问题吗?当然,我只能将数组拆分为小于2^31的块,但我发现这非常低效。你知道吗

谢谢。你知道吗


Tags: 代码import元素supportas错误code条目

热门问题