numpy array는 기본값으로 메모리 상에서 연속적(contigous)이지 않으니
x = np.ascontiguousarray(x)
를 해줘야 c++에서 받았을 때, 상식적으로 동작한다.
numpy array -> c++ double ** -> numpy array
를 ctypes 으로 하는데
계속 앞쪽만 나오고 뒤쪽이 짤려서 나왔다.
그래서 데이터 처리 없이
그냥 복사만 했는데도
같은 현상이 발생 했다.
근데 index를 7배로 하면 데이터가 잘 간다. (7, 33216) array, 근데 그러면 아무리 생각해도 메모리 범위 넘어가는데 돌아가는것도 이상하고 그게 안터지는 것도 이상하고
포인터 다 찍어보고 메모리 복사 방식 참조 방식 다 바꿔봤는데 그대로였다.
아무리 생각해봐도 말도 안되는 상황인 와중에
C++단에서 데이터는 온전한걸 확인해서 ctypes 문젠가 하고 검색해보는데
flags['C_CONTIGUOUS']
이라는 키워드를 보고
설마 설마 어레이가 메모리상에서 연속이 아닌가 싶었는데..
연속이 아니었다.
x = np.ascontiguousarray(x)
를 해줘야 상식적으로 메모리상에 저장된다.
이전에는 어레이가 그렇게 크지 않아서, (8,1024) 정도, 사용하는데 문제가 없었던것 같다.
'기술관련 기록' 카테고리의 다른 글
Django Template (0) | 2023.06.12 |
---|---|
내부망 서버 xmrig 채굴 웜 감염 (0) | 2022.12.13 |
unable to determine the device handle for GPU 0000:3B:00.0 : unknown Error (0) | 2022.08.07 |
C2872 'std': 모호한 기호입니다. (0) | 2022.03.16 |
c,c++ 에러 발생 위치가 매번 다를 경우 (0) | 2022.03.09 |