<pre class="editor flex monaco monaco-colorized colab colab" data-lang="notebook-python" style="white-space-collapse: collapse; color: rgb(31, 31, 31); font-size: 13px; -webkit-box-flex: 1; flex: 1 1 0%; min-width: 0px; overflow: auto; padding: 10px 8px; outline: none;">import cupy as cp
import matplotlib.pyplot as plt
# =====================================================================
# [GPU 연산 구역] : CUDA 코어가 병렬 연산 시작
# =====================================================================
# 1. GPU VRAM에 공간 픽셀(float32)을 직접 생성
grid_size = cp.linspace(-1300, 1300, 1300, dtype=cp.float32)
X, Y, Z = cp.meshgrid(grid_size, grid_size, grid_size)
R = cp.sqrt(X**2 + Y**2 + Z**2)
# 2. 세계관 변수 설정
Mass = 50.0
critical_curvature = 10.0
# 3. 질량 분포 연산
mass_distribution = Mass * cp.exp(-(R / 50.0)**2)
is_collapsed = mass_distribution > critical_curvature
# 4. 관측 빔과 역위상 방어막 연산 (GPU 병렬 처리)
beam_radius = Y**2 + (Z - 100.0)**2
is_beam_path = beam_radius < 900.0
# 5. 렌더링 최적화를 위한 필터링 및 서브샘플링 (이것 역시 GPU에서 솎아냄)
core_x = X[is_collapsed]
core_y = Y[is_collapsed]
core_z = Z[is_collapsed]
stride = 5
beam_x = X[is_beam_path][::stride]
beam_y = Y[is_beam_path][::stride]
beam_z = Z[is_beam_path][::stride]
# =====================================================================
# [데이터 전송 구역] : 병목 현상 (Bottleneck)
# =====================================================================
print("GPU 연산 완료. CPU(RAM)로 시각화 데이터 전송 중...")
# ★ 핵심: Matplotlib은 GPU(VRAM) 데이터를 직접 읽지 못합니다.
# GPU에서 계산이 끝난 알짜배기 데이터만 CPU(시스템 RAM)로 넘겨받습니다 (.get())
core_x_cpu = core_x.get()
core_y_cpu = core_y.get()
core_z_cpu = core_z.get()
beam_x_cpu = beam_x.get()
beam_y_cpu = beam_y.get()
beam_z_cpu = beam_z.get()
# =====================================================================
# [CPU 시각화 구역] : 화면에 그리기
# =====================================================================
print("Matplotlib 렌더링 시작...")
fig = plt.figure(figsize=(14, 12))
ax = fig.add_subplot(111, projection='3d')
ax.set_facecolor('black')
fig.patch.set_facecolor('black')
# CPU로 넘겨받은 데이터(_cpu)를 사용하여 렌더링
ax.scatter(core_x_cpu, core_y_cpu, core_z_cpu, c='crimson', s=2, alpha=0.1, label='Fermion Collapse Core (GPU Calc)')
ax.scatter(beam_x_cpu, beam_y_cpu, beam_z_cpu, c='orange', s=0.5, alpha=0.2, label='Observation Beam')
ax.scatter(beam_x_cpu, beam_y_cpu, beam_z_cpu, c='cyan', s=0.5, alpha=0.4, label='Anti-phase Nullification')
ax.set_title("Seongsu SSP Theory v6.0 - CuPy GPU Accelerated", color='white', fontsize=18)
ax.set_xlim([-1300, 2000])
ax.set_ylim([-1300, 2000])
ax.set_zlim([-1300, 2000])
ax.xaxis.line.set_color("gray")
ax.yaxis.line.set_color("gray")
ax.zaxis.line.set_color("gray")
ax.tick_params(colors='gray')
legend = ax.legend(facecolor='black', edgecolor='white', markerscale=10)
for text in legend.get_texts():
text.set_color("white")
plt.tight_layout()
plt.show()
print("시뮬레이션 완료!")</pre>
import matplotlib.pyplot as plt
# =====================================================================
# [GPU 연산 구역] : CUDA 코어가 병렬 연산 시작
# =====================================================================
# 1. GPU VRAM에 공간 픽셀(float32)을 직접 생성
grid_size = cp.linspace(-1300, 1300, 1300, dtype=cp.float32)
X, Y, Z = cp.meshgrid(grid_size, grid_size, grid_size)
R = cp.sqrt(X**2 + Y**2 + Z**2)
# 2. 세계관 변수 설정
Mass = 50.0
critical_curvature = 10.0
# 3. 질량 분포 연산
mass_distribution = Mass * cp.exp(-(R / 50.0)**2)
is_collapsed = mass_distribution > critical_curvature
# 4. 관측 빔과 역위상 방어막 연산 (GPU 병렬 처리)
beam_radius = Y**2 + (Z - 100.0)**2
is_beam_path = beam_radius < 900.0
# 5. 렌더링 최적화를 위한 필터링 및 서브샘플링 (이것 역시 GPU에서 솎아냄)
core_x = X[is_collapsed]
core_y = Y[is_collapsed]
core_z = Z[is_collapsed]
stride = 5
beam_x = X[is_beam_path][::stride]
beam_y = Y[is_beam_path][::stride]
beam_z = Z[is_beam_path][::stride]
# =====================================================================
# [데이터 전송 구역] : 병목 현상 (Bottleneck)
# =====================================================================
print("GPU 연산 완료. CPU(RAM)로 시각화 데이터 전송 중...")
# ★ 핵심: Matplotlib은 GPU(VRAM) 데이터를 직접 읽지 못합니다.
# GPU에서 계산이 끝난 알짜배기 데이터만 CPU(시스템 RAM)로 넘겨받습니다 (.get())
core_x_cpu = core_x.get()
core_y_cpu = core_y.get()
core_z_cpu = core_z.get()
beam_x_cpu = beam_x.get()
beam_y_cpu = beam_y.get()
beam_z_cpu = beam_z.get()
# =====================================================================
# [CPU 시각화 구역] : 화면에 그리기
# =====================================================================
print("Matplotlib 렌더링 시작...")
fig = plt.figure(figsize=(14, 12))
ax = fig.add_subplot(111, projection='3d')
ax.set_facecolor('black')
fig.patch.set_facecolor('black')
# CPU로 넘겨받은 데이터(_cpu)를 사용하여 렌더링
ax.scatter(core_x_cpu, core_y_cpu, core_z_cpu, c='crimson', s=2, alpha=0.1, label='Fermion Collapse Core (GPU Calc)')
ax.scatter(beam_x_cpu, beam_y_cpu, beam_z_cpu, c='orange', s=0.5, alpha=0.2, label='Observation Beam')
ax.scatter(beam_x_cpu, beam_y_cpu, beam_z_cpu, c='cyan', s=0.5, alpha=0.4, label='Anti-phase Nullification')
ax.set_title("Seongsu SSP Theory v6.0 - CuPy GPU Accelerated", color='white', fontsize=18)
ax.set_xlim([-1300, 2000])
ax.set_ylim([-1300, 2000])
ax.set_zlim([-1300, 2000])
ax.xaxis.line.set_color("gray")
ax.yaxis.line.set_color("gray")
ax.zaxis.line.set_color("gray")
ax.tick_params(colors='gray')
legend = ax.legend(facecolor='black', edgecolor='white', markerscale=10)
for text in legend.get_texts():
text.set_color("white")
plt.tight_layout()
plt.show()
print("시뮬레이션 완료!")</pre>
애썼다