120 lines
3.7 KiB
Python
120 lines
3.7 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
测试Milvus GPU配置的脚本
|
||
"""
|
||
import sys
|
||
import os
|
||
|
||
def test_gpu_availability():
|
||
"""测试GPU可用性"""
|
||
print("=== GPU可用性测试 ===")
|
||
|
||
# 测试PyTorch CUDA
|
||
try:
|
||
import torch
|
||
print(f"PyTorch版本: {torch.__version__}")
|
||
print(f"CUDA可用: {torch.cuda.is_available()}")
|
||
if torch.cuda.is_available():
|
||
print(f"CUDA设备数量: {torch.cuda.device_count()}")
|
||
print(f"设备名称: {torch.cuda.get_device_name(0)}")
|
||
print(f"CUDA版本: {torch.version.cuda}")
|
||
return True
|
||
else:
|
||
print("CUDA不可用")
|
||
return False
|
||
except Exception as e:
|
||
print(f"PyTorch测试失败: {e}")
|
||
return False
|
||
|
||
def test_milvus_connection():
|
||
"""测试Milvus连接"""
|
||
print("\n=== Milvus连接测试 ===")
|
||
|
||
try:
|
||
from pymilvus import connections, utility
|
||
print("PyMilvus导入成功")
|
||
|
||
# 尝试连接本地Milvus
|
||
try:
|
||
connections.connect("default", host="localhost", port="19530")
|
||
print("Milvus连接成功")
|
||
|
||
# 检查Milvus版本
|
||
version = utility.get_server_version()
|
||
print(f"Milvus版本: {version}")
|
||
|
||
return True
|
||
except Exception as e:
|
||
print(f"Milvus连接失败: {e}")
|
||
print("注意: 这需要先启动Milvus服务")
|
||
return False
|
||
|
||
except Exception as e:
|
||
print(f"PyMilvus导入失败: {e}")
|
||
return False
|
||
|
||
def test_gpu_memory():
|
||
"""测试GPU内存"""
|
||
print("\n=== GPU内存测试 ===")
|
||
|
||
try:
|
||
import torch
|
||
if torch.cuda.is_available():
|
||
# 获取GPU内存信息
|
||
device = torch.cuda.current_device()
|
||
total_memory = torch.cuda.get_device_properties(device).total_memory
|
||
allocated_memory = torch.cuda.memory_allocated(device)
|
||
cached_memory = torch.cuda.memory_reserved(device)
|
||
|
||
print(f"GPU总内存: {total_memory / 1024**3:.2f} GB")
|
||
print(f"已分配内存: {allocated_memory / 1024**3:.2f} GB")
|
||
print(f"缓存内存: {cached_memory / 1024**3:.2f} GB")
|
||
|
||
# 测试GPU计算
|
||
print("\n=== GPU计算测试 ===")
|
||
x = torch.randn(1000, 1000, device='cuda')
|
||
y = torch.randn(1000, 1000, device='cuda')
|
||
z = torch.mm(x, y)
|
||
print("GPU矩阵乘法测试成功!")
|
||
print(f"结果张量形状: {z.shape}")
|
||
print(f"结果张量设备: {z.device}")
|
||
|
||
return True
|
||
else:
|
||
print("CUDA不可用,无法测试GPU内存")
|
||
return False
|
||
except Exception as e:
|
||
print(f"GPU内存测试失败: {e}")
|
||
return False
|
||
|
||
def main():
|
||
print("Milvus GPU配置测试")
|
||
print("=" * 50)
|
||
|
||
# 测试GPU可用性
|
||
gpu_available = test_gpu_availability()
|
||
|
||
# 测试Milvus连接
|
||
milvus_available = test_milvus_connection()
|
||
|
||
# 测试GPU内存和计算
|
||
gpu_memory_ok = False
|
||
if gpu_available:
|
||
gpu_memory_ok = test_gpu_memory()
|
||
|
||
# 总结
|
||
print("\n" + "=" * 50)
|
||
print("测试总结:")
|
||
print(f"GPU可用: {'✓' if gpu_available else '✗'}")
|
||
print(f"Milvus连接: {'✓' if milvus_available else '✗'}")
|
||
print(f"GPU计算: {'✓' if gpu_memory_ok else '✗'}")
|
||
|
||
if gpu_available and gpu_memory_ok:
|
||
print("\n🎉 GPU配置正常,可以用于Milvus等GPU加速应用!")
|
||
else:
|
||
print("\n⚠️ GPU配置存在问题,可能影响Milvus等应用的GPU加速功能")
|
||
|
||
if __name__ == "__main__":
|
||
main()
|
||
|