녹을 모르지만 과학 컴퓨팅의 성능을 조사하여 Julia 및 Fortran과 비교해보고자했습니다. 다음 프로그램을 작성했지만 문제는 MAX
이 1022보다 클 때 런타임 세그먼트 화 오류가 발생한다는 것입니다.1022x1022보다 큰 배열에 대한 세그먼트 오류
fn main() {
const MAX: usize = 1023;
let mut arr2: [[f64; MAX]; MAX] = [[0.0; MAX]; MAX];
let pi: f64 = 3.1415926535;
// compute something useless and put in matrix
for ii in 0.. MAX {
for jj in 0.. MAX {
let i = ii as f64;
let j = jj as f64;
arr2[ii][jj] = ((i + j) * pi * 41.0).sqrt().sin();
}
}
let mut sum0:f64 = 0.0;
//collapse to scalar like sum(sum(array,1),2) in other langs
for iii in 0..MAX {
let vec1:&[f64] = &arr2[iii][..];
sum0 += vec1.iter().sum();
}
println!("this {}", sum0);
}
터미널에서 'Segmentaion fault'오류가 발생하지 않습니다. 나는 우분투 16을 사용하고 www.rustup.rs에 명령과 함께 설치했다. 안정 버전 rustc 1.12.1 (d4f39402a 2016-10-19)
입니다.
디버그 모드에서 스택에 만들어지기 때문입니다. 스택이 너무 작아서 스택을 포함 할 수 없습니다. 다음을 참조하십시오 : http://stackoverflow.com/questions/30242770/how-to-allocate-arrays-on-the-heap-in-rust-1-0-beta?noredirect=1&lq=1 – Neikos
디버그를 어떻게 종료합니까? 방법? –
'cargo run - release "를 실행하거나'rustc'의 최적화를 활성화시킬 수 있습니다. – Neikos