支持的GPU模块
| CPU模块 | GPU模块 | 典型加速比 |
|---|---|---|
| FAImageFD.CFAImageFD | FAImageFDGPU.CFAImageFDGPU | 3–10× |
| FAImageMFS.CFAImageMFS | FAImageMFSGPU.CFAImageMFSGPU | 5–20× |
| FAImageLAC.CFAImageLAC | FAImageLACGPU.CFAImageLACGPU | 5–15× |
系统要求
- 支持CUDA的NVIDIA GPU
- 带CUDA的PyTorch:
pip install torch --index-url https://download.pytorch.org/whl/cu118
使用方法
直接替换导入
# CPU版本
from FreeAeonFractal.FAImageMFS import CFAImageMFS
# GPU版本(API完全相同)
from FreeAeonFractal.FAImageMFSGPU import CFAImageMFSGPU as CFAImageMFS
分形维度(GPU)
from FreeAeonFractal.FAImageFDGPU import CFAImageFDGPU
fd_bc = CFAImageFDGPU(bin_image, device='cuda').get_bc_fd()
fd_dbc = CFAImageFDGPU(gray, device='cuda').get_dbc_fd()
fd_sdbc = CFAImageFDGPU(gray, device='cuda').get_sdbc_fd()
多重分形谱(GPU)
import numpy as np
from FreeAeonFractal.FAImageMFSGPU import CFAImageMFSGPU as CFAImageMFS
MFS = CFAImageMFS(gray, q_list=np.linspace(-5, 5, 51))
df_mass, df_fit, df_spec = MFS.get_mfs()
MFS.plot(df_mass, df_fit, df_spec)
空隙度(GPU)
from FreeAeonFractal.FAImageLACGPU import CFAImageLACGPU
calc = CFAImageLACGPU(gray, device='cuda')
lac_result = calc.get_lacunarity()
fit_result = calc.fit_lacunarity(lac_result)
批量处理(GPU)
import glob, cv2, numpy as np
from FreeAeonFractal.FAImageMFSGPU import CFAImageMFSGPU
images = [cv2.imread(f, cv2.IMREAD_GRAYSCALE) for f in glob.glob('./images/*.png')]
results = CFAImageMFSGPU.get_batch_mfs(images, q_list=np.linspace(-5, 5, 26))
for df_mass, df_fit, df_spec in results:
print(df_fit[['q', 'Dq']].head(3))
性能说明
| 场景 | 预期加速比 |
|---|---|
| 单张大图像(1024×1024) | 5–10× |
| 批量100+张图像 | 10–20× |
| 大量q值(51+) | 5–15× |
| 大量尺度(80+) | 3–8× |
与CPU版本的API差异
| 特性 | CPU | GPU |
|---|---|---|
p_value | 已计算 | None(不计算) |
| 默认数据类型 | float64 | float64(单图),float32(批量) |
device参数 | 无 | 'cuda' 或 'cpu' |
CUDA可用性检查
import torch
print("CUDA可用:", torch.cuda.is_available())
若CUDA不可用,GPU模块将回退到CPU计算。