我在用精纺以提高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的块,但我发现这非常低效。你知道吗
谢谢。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐