返回Skills库
在计算密集型科学任务开始前检测并报告可用系统资源(CPU、GPU、内存、磁盘),输出资源清单与策略建议,帮助决策是否采用并行处理、核外计算或 GPU 加速。
获取可用资源
概述
检测可用计算资源并为科学计算任务生成策略建议。此技能自动识别CPU能力、GPU可用性(NVIDIA CUDA、AMD ROCm、Apple Silicon Metal)、内存约束和磁盘空间,以帮助做出关于计算方法的明智决策。
何时使用此技能
在以下情况下主动使用此技能:
- 数据分析之前:确定数据集是否可以加载到内存中或需要核外处理
- 模型训练之前:检查GPU加速是否可用以及使用哪个后端
- 并行处理之前:为joblib、multiprocessing或Dask识别最佳工作线程数
- 大型文件操作之前:验证足够的磁盘空间和适当的存储策略
- 项目初始化时:了解基线功能以做出架构决策
示例场景:
- "帮我分析这个50GB的基因组数据集" → 首先使用此技能确定是否需要Dask/Zarr
- "在这个数据上训练神经网络" → 使用此技能检测可用GPU和后端
- "并行处理10,000个文件" → 使用此技能确定最佳工作线程数
- "运行计算密集型模拟" → 使用此技能了解资源约束
此技能如何工作
资源检测
此技能运行scripts/detect_resources.py以自动检测:
- CPU信息
- 物理和逻辑核心数
- 处理器架构和型号
- CPU频率信息
- GPU信息
- NVIDIA GPU:通过nvidia-smi检测,报告VRAM、驱动版本、计算能力
- AMD GPU:通过rocm-smi检测
- Apple Silicon:检测具有Metal支持和统一内存的M1/M2/M3/M4芯片
- 内存信息
- 总内存和可用内存
- 当前内存使用百分比
- 交换空间可用性
- 磁盘空间信息
- 工作目录的总磁盘空间和可用磁盘空间
- 当前使用百分比
- 操作系统信息
- 操作系统类型(macOS、Linux、Windows)
- 操作系统版本和发布
- Python版本
输出格式
此技能在当前工作目录中生成.claude_resources.json文件,包含:
{
"timestamp": "2025-10-23T10:30:00",
"os": {
"system": "Darwin",
"release": "25.0.0",
"machine": "arm64"
},
"cpu": {
"physical_cores": 8,
"logical_cores": 8,
"architecture": "arm64"
},
"memory": {
"total_gb": 16.0,
"available_gb": 8.5,
"percent_used": 46.9
},
"disk": {
"total_gb": 500.0,
"available_gb": 200.0,
"percent_used": 60.0
},
"gpu": {
"nvidia_gpus": [],
"amd_gpus": [],
"apple_silicon": {
"name": "Apple M2",
"type": "Apple Silicon",
"backend": "Metal",
"unified_memory": true
},
"total_gpus": 1,
"available_backends": ["Metal"]
},
"recommendations": {
"parallel_processing": {
"strategy": "high_parallelism",
"suggested_workers": 6,
"libraries": ["joblib", "multiprocessing", "dask"]
},
"memory_strategy": {
"strategy": "moderate_memory",
"libraries": ["dask", "zarr"],
"note": "Consider chunking for datasets > 2GB"
},
"gpu_acceleration": {
"available": true,
"backends": ["Metal"],
"suggested_libraries": ["pytorch-mps", "tensorflow-metal", "jax-metal"]
},
"large_data_handling": {
"strategy": "disk_abundant",
"note": "Sufficient space for large intermediate files"
}
}
}策略建议
此技能生成上下文感知的建议:
并行处理建议:
- 高并行度(8+核心):使用Dask、joblib或multiprocessing,工作线程数 = 核心数 - 2
- 中等并行度(4-7核心):使用joblib或multiprocessing,工作线程数 = 核心数 - 1
- 顺序(< 4核心):首选顺序处理以避免开销
内存策略建议:
- 内存受限(< 4GB可用):使用Zarr、Dask或H5py进行核外处理
- 中等内存(4-16GB可用):对大于2GB的数据集使用Dask/Zarr
- 内存充足(> 16GB可用):可以直接将大多数数据集加载到内存中
GPU加速建议:
- 检测到NVIDIA GPU:使用PyTorch、TensorFlow、JAX、CuPy或RAPIDS
- 检测到AMD GPU:使用PyTorch-ROCm或TensorFlow-ROCm
- 检测到Apple Silicon:使用带有MPS后端的PyTorch、TensorFlow-Metal或JAX-Metal
- 未检测到GPU:使用CPU优化库
大数据处理建议:
- 磁盘受限(< 10GB):使用流式或压缩策略
- 中等磁盘(10-100GB):使用Zarr、H5py或Parquet格式
- 磁盘充足(> 100GB):可以自由创建大型中间文件
使用说明
步骤1:运行资源检测
在任何计算密集型任务开始时执行检测脚本:
python scripts/detect_resources.py可选参数:
-o, --output <path>:指定自定义输出路径(默认:.claude_resources.json)-v, --verbose:将完整资源信息打印到stdout
步骤2:读取并应用建议
运行检测后,读取生成的.claude_resources.json文件以通知计算决策:
# 示例:在代码中使用建议
import json
with open('.claude_resources.json', 'r') as f:
resources = json.load(f)
# 检查并行处理策略
if resources['recommendations']['parallel_processing']['strategy'] == 'high_parallelism':
n_jobs = resources['recommendations']['parallel_processing']['suggested_workers']
# 使用joblib、Dask或multiprocessing,工作线程数为n_jobs
# 检查内存策略
if resources['recommendations']['memory_strategy']['strategy'] == 'memory_constrained':
# 使用Dask、Zarr或H5py进行核外处理
import dask.array as da
# 分块加载数据
# 检查GPU可用性
if resources['recommendations']['gpu_acceleration']['available']:
backends = resources['recommendations']['gpu_acceleration']['backends']
# 根据可用后端使用适当的GPU库步骤3:做出明智决策
使用资源信息和建议做出战略选择:
对于数据加载:
memory_available_gb = resources['memory']['available_gb']
dataset_size_gb = 10
if dataset_size_gb > memory_available_gb * 0.5:
# 数据集相对于内存较大,使用Dask
import dask.dataframe as dd
df = dd.read_csv('large_file.csv')
else:
# 数据集适合内存,使用pandas
import pandas as pd
df = pd.read_csv('large_file.csv')对于并行处理:
from joblib import Parallel, delayed
n_jobs = resources['recommendations']['parallel_processing'].get('suggested_workers', 1)
results = Parallel(n_jobs=n_jobs)(
delayed(process_function)(item) for item in data
)对于GPU加速:
import torch
if 'CUDA' in resources['gpu']['available_backends']:
device = torch.device('cuda')
elif 'Metal' in resources['gpu']['available_backends']:
device = torch.device('mps')
else:
device = torch.device('cpu')
model = model.to(device)依赖项
检测脚本需要以下Python包:
uv pip install psutil所有其他功能使用Python标准库模块(json、os、platform、subprocess、sys、pathlib)。
平台支持
- macOS:完全支持,包括Apple Silicon(M1/M2/M3/M4)GPU检测
- Linux:完全支持,包括NVIDIA(nvidia-smi)和AMD(rocm-smi)GPU检测
- Windows:完全支持,包括NVIDIA GPU检测
最佳实践
- 尽早运行:在项目开始时或主要计算任务之前执行资源检测
- 定期重新运行:系统资源随时间变化(内存使用、磁盘空间)
- 扩展前检查:在扩展并行工作线程或数据大小之前验证资源
- 记录决策:在项目目录中保留
.claude_resources.json文件以记录资源感知决策 - 配合版本控制使用:不同机器具有不同功能;资源文件有助于保持可移植性
故障排除
未检测到GPU:
- 确保安装了GPU驱动程序(nvidia-smi、rocm-smi或Apple Silicon的system_profiler)
- 检查GPU实用程序是否在系统PATH中
- 验证GPU未被其他进程使用
脚本执行失败:
- 确保安装了psutil:
uv pip install psutil - 检查Python版本兼容性(Python 3.6+)
- 验证脚本具有执行权限:
chmod +x scripts/detect_resources.py
内存读数不准确:
- 内存读数是快照;实际可用内存不断变化
- 在检测前关闭其他应用程序以获得准确的"可用"内存
- 考虑多次运行检测并平均结果
兼容工具
Claude CodeOpenClawHermes Agent
站内相关工具
数据来源:claude-scientific-skills(MIT 许可) | 查看上游来源
上游项目:K-Dense-AI/scientific-agent-skills / claude-scientific-skills | 收录时间:2026-08-20 | 更新:2026-08-20
本页面内容基于上游开源许可项目整理,仅供学习参考。AI铺子不对第三方内容承担责任, 详情请参阅免责声明。