質問編集履歴
7
メモリ使用量を変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -86,7 +86,21 @@
|
|
86
86
|
}
|
87
87
|
```
|
88
88
|
を加えて実行した。~~アクティビティモニタでの最大メモリ使用量は実行時に大幅に増えたものの使用済みメモリ14GB程度であった。~~
|
89
|
-
プロセスのswap含めた最大メモリ使用量を確認したところ、74GBとなりました。
|
89
|
+
~~プロセスのswap含めた最大メモリ使用量を確認したところ、74GBとなりました。~~
|
90
|
+
以下のコードのようにcinの前に二重ループを起き、入力せず変化がなくなるまで待ったところ76.06GBとなりました。
|
91
|
+
```C++
|
92
|
+
int main() {
|
93
|
+
ll n, W;
|
94
|
+
for(int i = 0; i < sz; i++) {
|
95
|
+
for(int j = 0; j < sz; j++) {
|
96
|
+
table[i][j] = i + j;
|
97
|
+
}
|
98
|
+
}
|
99
|
+
cin >> n >> W;
|
100
|
+
cout << n << "\n";
|
101
|
+
return 0;
|
102
|
+
}
|
103
|
+
```
|
90
104
|
|
91
105
|
まとめると
|
92
106
|
jbpb0様のIntel Macで`ll table[sz][sz];`として実行した結果と
|
6
追記のまとめの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -88,3 +88,7 @@
|
|
88
88
|
を加えて実行した。~~アクティビティモニタでの最大メモリ使用量は実行時に大幅に増えたものの使用済みメモリ14GB程度であった。~~
|
89
89
|
プロセスのswap含めた最大メモリ使用量を確認したところ、74GBとなりました。
|
90
90
|
|
91
|
+
まとめると
|
92
|
+
jbpb0様のIntel Macで`ll table[sz][sz];`として実行した結果と
|
93
|
+
私のM1 Macで`ll (*table)[sz] = (ll(*)[sz])malloc(sizeof(ll) * sz * sz);`として実行した結果及びメモリ使用量がほぼ同じとなる
|
94
|
+
|
5
メモリ使用量の勘違いを訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -79,11 +79,12 @@
|
|
79
79
|
このようにすると再起動することなく、正常終了することを確認。
|
80
80
|
jbpb0様のコードのように
|
81
81
|
```C++
|
82
|
-
|
82
|
+
for(int i=0; i<sz; i++ ){
|
83
|
-
|
83
|
+
for(int j=0; j<sz; j++ ){
|
84
|
-
|
84
|
+
table[i][j]=i+j;
|
85
|
-
}
|
86
85
|
}
|
86
|
+
}
|
87
87
|
```
|
88
|
-
を加えて実行した。アクティビティモニタでの最大メモリ使用量は実行時に大幅に増えたものの使用済みメモリ14GB程度であった。
|
88
|
+
を加えて実行した。~~アクティビティモニタでの最大メモリ使用量は実行時に大幅に増えたものの使用済みメモリ14GB程度であった。~~
|
89
|
+
プロセスのswap含めた最大メモリ使用量を確認したところ、74GBとなりました。
|
89
90
|
|
4
配列をヒープに確保した時の挙動を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -68,6 +68,22 @@
|
|
68
68
|
Reason: tried: '/usr/lib/libc++.1.dylib' (no such file), '/usr/local/lib/libc++.1.dylib' (no such file)
|
69
69
|
zsh: abort ./a.out
|
70
70
|
```
|
71
|
+
* ヒープに確保するよう変えると動作した。
|
72
|
+
actorbug様より
|
73
|
+
> ヒープに確保するようにしたら、挙動が変わりませんかね。
|
74
|
+
> ```C++
|
75
|
+
> ll table[sz][sz];
|
76
|
+
> ↓
|
77
|
+
> ll (*table)[sz] = (ll(*)[sz])malloc(sizeof(ll) * sz * sz);
|
78
|
+
> ```
|
79
|
+
このようにすると再起動することなく、正常終了することを確認。
|
80
|
+
jbpb0様のコードのように
|
81
|
+
```C++
|
82
|
+
for(int i=0; i<sz; i++ ){
|
83
|
+
for(int j=0; j<sz; j++ ){
|
84
|
+
table[i][j]=i+j;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
```
|
88
|
+
を加えて実行した。アクティビティモニタでの最大メモリ使用量は実行時に大幅に増えたものの使用済みメモリ14GB程度であった。
|
71
89
|
|
72
|
-
|
73
|
-
|
3
修正依頼での話題をもとに追記した
test
CHANGED
File without changes
|
test
CHANGED
@@ -47,5 +47,27 @@
|
|
47
47
|
macOS: Monterey バージョン12.3.1
|
48
48
|
|
49
49
|
本来clangにはない<bits/stdc++.h>をincludeしてますが、これは拾ってきたbits/stdc++.hをincludeフォルダに入れている形で解決しています。
|
50
|
+
### 追記
|
51
|
+
* VSCodeで実行していると書きましたが、VSCodeの統合ターミナルよりコマンドで実行しております。
|
52
|
+
* 普段はコンパイルオプションを-std=c++17としてコンパイルしてますが、c++11としても同様のエラーが確認できました。
|
53
|
+
* jbpb0様のIntel Macメモリ16GBでは正常に動作する。(修正依頼参照) **おそらくコンパイラは問題ではなくM1チップに関する問題?。**
|
54
|
+
* 再起動時の問題レポート冒頭は次のとおりです。
|
55
|
+
```
|
56
|
+
panic(cpu 4 caller 0xfffffe001768b03c): Failed to reserve GPU Carveout region in user map 0xfffffe24cbfaa808 3 @vm_map.c:13285
|
57
|
+
Debugger message: panic
|
58
|
+
Memory ID: 0xff
|
59
|
+
OS release type: User
|
60
|
+
OS version: 21E258
|
61
|
+
Kernel version: Darwin Kernel Version 21.4.0: Fri Mar 18 00:47:26 PDT 2022; root:xnu-8020.101.4~15/RELEASE_ARM64_T8101
|
62
|
+
```
|
63
|
+
* また配列サイズszを101,010から71,010に変更すると再起動は起こらず、./a.out実行時に次のエラーログが出る。コンパイルはエラーなく正常にできます。1行目でdyld_shared_cache_arm64eとあって、arm64つまりM1に関わるところだろうと思います。
|
64
|
+
```
|
65
|
+
dyld[1704]: dyld cache '/System/Library/dyld/dyld_shared_cache_arm64e' not loaded: syscall to map cache into shared region failed
|
66
|
+
dyld[1704]: Library not loaded: /usr/lib/libc++.1.dylib
|
67
|
+
Referenced from: /Users/<NAME>/Desktop/programming/kyopuro/pra/a.out
|
68
|
+
Reason: tried: '/usr/lib/libc++.1.dylib' (no such file), '/usr/local/lib/libc++.1.dylib' (no such file)
|
69
|
+
zsh: abort ./a.out
|
70
|
+
```
|
50
71
|
|
51
72
|
|
73
|
+
|
2
実行環境にメモリとストレージ容量を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
実行環境
|
44
44
|
C++17.
|
45
45
|
コンパイラ:Apple clang version 13.1.6 (clang-1316.0.21.2.3)
|
46
|
-
MacBook Pro (M1, 2020)
|
46
|
+
MacBook Pro (M1, 2020) メモリ16GB, SSD 500GB
|
47
47
|
macOS: Monterey バージョン12.3.1
|
48
48
|
|
49
49
|
本来clangにはない<bits/stdc++.h>をincludeしてますが、これは拾ってきたbits/stdc++.hをincludeフォルダに入れている形で解決しています。
|
1
タイトルが少し曖昧だったので変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
配列のサイズが大きいC++プログラムを実行するとパソコンがクラッシュする
|
test
CHANGED
File without changes
|