내가 통제 할 수없는 이유 코드OpenMP를 스마트 포인터
#include <iostream>
#include <boost/shared_ptr.hpp>
using namespace std;
typedef boost::shared_ptr<int> intPtr;
int main(int argc, char **argv) {
intPtr foo = intPtr(new int(-1));
for(int i = 0; i<10; i++){
*foo = i;
cout << *foo << " ";
}
}
에게 다음에 해당 무엇을 병렬화하기 위해 노력하고있어, 그이 예에서 알 수없는, 내가 공유에 충실 할 필요가 바늘. 이것은 나의 현재의 시도 : 이것은 컴파일하고 0-9 시리즈를 인쇄
#include <iostream>
#include <boost/shared_ptr.hpp>
using namespace std;
typedef boost::shared_ptr<int> intPtr;
int main(int argc, char **argv) {
intPtr foo = intPtr(new int(-1));
bool firstOfThread = true;
int fooPriv = *foo;
#pragma omp parallel for num_threads(2) firstprivate(firstOfThread,fooPriv,foo)
for(int i = 0; i<10; i++){
if(firstOfThread){
foo.reset(&fooPriv);
}
*foo = i;
#pragma omp critical
cout << *foo << " ";
firstOfThread=false;
}
}
, 그러나 그것은 나에게 glibc detected
오류를주고있다. 과거에는 대신 foo=&fooPriv;
과 동일한 전략을 사용하여 맨손으로 작업 했었지만 여기에 누락 된 것이 있습니다. 나는 그것이 여분의 포인터와 함께 뭔가를 가지고 있다고 의심합니다. foo
은 전화 번호를 세지 만, 다른 질문/포럼에서 언급했듯이 "딥 - 카피"를 제대로하지는 못합니다. 그것을 해결할 수 있습니다. 어떤 제안?
편집 :이 프로그램의 출력은 때로는 이것이다 :
*** glibc detected *** omp-test: free(): invalid pointer: 0x00007fff5da6a7bc ***
0 6 1 7 2 8 3 9 4 10 5 Aborted (core dumped)
그리고 때로는이 :
*** glibc detected *** omp-test: free(): invalid pointer: 0x00007fffc210277c ***
======= Backtrace: =========
/lib64/libc.so.6[0x3853875e66]
/lib64/libc.so.6[0x385387897a]
omp-test[0x401bc9]
omp-test(main+0xab)[0x401ccb]
/lib64/libc.so.6(__libc_start_main+0xfd)[0x385381ed5d]
omp-test[0x4018e9]
======= Memory map: ========
00400000-00403000 r-xp 00000000 00:15 9568302 /data/disk01/home/imc/sandbox/scripts/aerie-apps/liff-HealpixSigFluxMapGen/omp-test
00602000-00603000 rw-p 00002000 00:15 9568302 /data/disk01/home/imc/sandbox/scripts/aerie-apps/liff-HealpixSigFluxMapGen/omp-test
01339000-017f9000 rw-p 00000000 00:00 0 [heap]
3853000000-3853020000 r-xp 00000000 fd:00 2359298 /lib64/ld-2.12.so
385321f000-3853220000 r--p 0001f000 fd:00 2359298 /lib64/ld-2.12.so
3853220000-3853221000 rw-p 00020000 fd:00 2359298 /lib64/ld-2.12.so
3853221000-3853222000 rw-p 00000000 00:00 0
3853400000-3853402000 r-xp 00000000 fd:00 2359303 /lib64/libdl-2.12.so
3853402000-3853602000 ---p 00002000 fd:00 2359303 /lib64/libdl-2.12.so
3853602000-3853603000 r--p 00002000 fd:00 2359303 /lib64/libdl-2.12.so
3853603000-3853604000 rw-p 00003000 fd:00 2359303 /lib64/libdl-2.12.so
3853800000-385398a000 r-xp 00000000 fd:00 2359302 /lib64/libc-2.12.so
385398a000-3853b8a000 ---p 0018a000 fd:00 2359302 /lib64/libc-2.12.so
3853b8a000-3853b8e000 r--p 0018a000 fd:00 2359302 /lib64/libc-2.12.so
3853b8e000-3853b8f000 rw-p 0018e000 fd:00 2359302 /lib64/libc-2.12.so
3853b8f000-3853b94000 rw-p 00000000 00:00 0
3853c00000-3853c17000 r-xp 00000000 fd:00 2359314 /lib64/libpthread-2.12.so
3853c17000-3853e17000 ---p 00017000 fd:00 2359314 /lib64/libpthread-2.12.so
3853e17000-3853e18000 r--p 00017000 fd:00 2359314 /lib64/libpthread-2.12.so
3853e18000-3853e19000 rw-p 00018000 fd:00 2359314 /lib64/libpthread-2.12.so
3853e19000-3853e1d000 rw-p 00000000 00:00 0
3854000000-3854083000 r-xp 00000000 fd:00 2359316 /lib64/libm-2.12.so
3854083000-3854282000 ---p 00083000 fd:00 2359316 /lib64/libm-2.12.so
3854282000-3854283000 r--p 00082000 fd:00 2359316 /lib64/libm-2.12.so
3854283000-3854284000 rw-p 00083000 fd:00 2359316 /lib64/libm-2.12.so
3854400000-3854407000 r-xp 00000000 fd:00 2359320 /lib64/librt-2.12.so
3854407000-3854606000 ---p 00007000 fd:00 2359320 /lib64/librt-2.12.so
3854606000-3854607000 r--p 00006000 fd:00 2359320 /lib64/librt-2.12.so
3854607000-3854608000 rw-p 00007000 fd:00 2359320 /lib64/librt-2.12.so
3854800000-3854815000 r-xp 00000000 fd:00 2359336 /lib64/libz.so.1.2.3
3854815000-3854a14000 ---p 00015000 fd:00 2359336 /lib64/libz.so.1.2.3
3854a14000-3854a15000 r--p 00014000 fd:00 2359336 /lib64/libz.so.1.2.3
3854a15000-3854a16000 rw-p 00015000 fd:00 2359336 /lib64/libz.so.1.2.3
3855400000-3855415000 r-xp 00000000 fd:00 1725449 /usr/lib64/libgomp.so.1.0.0
3855415000-3855614000 ---p 00015000 fd:00 1725449 /usr/lib64/libgomp.so.1.0.0
3855614000-3855615000 rw-p 00014000 fd:00 1725449 /usr/lib64/libgomp.so.1.0.0
3855c00000-3855c16000 r-xp 00000000 fd:00 2359508 /lib64/libresolv-2.12.so
3855c16000-3855e16000 ---p 00016000 fd:00 2359508 /lib64/libresolv-2.12.so
3855e16000-3855e17000 r--p 00016000 fd:00 2359508 /lib64/libresolv-2.12.so
3855e17000-3855e18000 rw-p 00017000 fd:00 2359508 /lib64/libresolv-2.12.so
3855e18000-3855e1a000 rw-p 00000000 00:00 0
3857800000-3857816000 r-xp 00000000 fd:00 2373979 /lib64/libnsl-2.12.so
3857816000-3857a15000 ---p 00016000 fd:00 2373979 /lib64/libnsl-2.12.so
3857a15000-3857a16000 r--p 00015000 fd:00 2373979 /lib64/libnsl-2.12.so
3857a16000-3857a17000 rw-p 00016000 fd:00 2373979 /lib64/libnsl-2.12.so
3857a17000-3857a19000 rw-p 00000000 00:00 0
3857c00000-3857c02000 r-xp 00000000 fd:00 2373980 /lib64/libutil-2.12.so
3857c02000-3857e01000 ---p 00002000 fd:00 2373980 /lib64/libutil-2.12.so
3857e01000-3857e02000 r--p 00001000 fd:00 2373980 /lib64/libutil-2.12.so
3857e02000-3857e03000 rw-p 00002000 fd:00 2373980 /lib64/libutil-2.12.so
385b800000-385b898000 r-xp 00000000 fd:00 1711172 /usr/lib64/libfreetype.so.6.3.22
385b898000-385ba97000 ---p 00098000 fd:00 1711172 /usr/lib64/libfreetype.so.6.3.22
385ba97000-385ba9d000 rw-p 00097000 fd:00 1711172 /usr/lib64/libfreetype.so.6.3.22
385f400000-385f410000 r-xp 00000000 fd:00 2361304 /lib64/libbz2.so.1.0.4
385f410000-385f60f000 ---p 00010000 fd:00 2361304 /lib64/libbz2.so.1.0.4
385f60f000-385f611000 rw-p 0000f000 fd:00 2361304 /lib64/libbz2.so.1.0.4
38b0800000-38b0816000 r-xp 00000000 fd:00 2366780 /lib64/libgcc_s-4.4.7-20120601.so.1
38b0816000-38b0a15000 ---p 00016000 fd:00 2366780 /lib64/libgcc_s-4.4.7-20120601.so.1
38b0a15000-38b0a16000 rw-p 00015000 fd:00 2366780 /lib64/libgcc_s-4.4.7-20120601.so.1
38b0c00000-38b0ce8000 r-xp 00000000 fd:00 1732781 /usr/lib64/libstdc++.so.6.0.13
38b0ce8000-38b0ee8000 ---p 000e8000 fd:00 1732781 /usr/lib64/libstdc++.so.6.0.13
38b0ee8000-38b0eef000 r--p 000e8000 fd:00 1732781 /usr/lib64/libstdc++.so.6.0.13
38b0eef000-38b0ef1000 rw-p 000ef000 fd:00 1732781 /usr/lib64/libstdc++.so.6.0.13
38b0ef1000-38b0f06000 rw-p 00000000 00:00 0
7ffbb8000000-7ffbb8021000 rw-p 00000000 00:00 0 0 6 1 7 2 8 3 9 4 10 5 Aborted (core dumped)
무엇이 오류입니까? 그것은 더 많은 맥락을 제공 할 수 있습니다. – AJG85
@ AJG85 오류가 포함 된 게시물을 출력으로 편집합니다. 고마워요! – Israelcma