4. 使用限制
4.1. mcPy使用限制
1维数组的size不能超过2^32
受限于底层硬件设计的限制以及mcPy的软件实现,在mcPy中参与计算的1维数组的size 不能超过2^32。如果超出该限制,可能会导致计算错误或者抛出Runtime Error异常。
不支持单机多卡和多机多卡
当前版本mcPy不支持单机多卡和多机多卡参与同一个API调用。但在单机多卡和多机多卡运行环境中,可以选择单个GPU卡运行mcPy。
RawKernel()不支持enable_cooperative_group=True
当前版本mcPy不支持 mcpy.RawKernel() 接口参数中设置 enable_cooperative_group=True。若设置,会导致kernel编译失败。
融合内核中不支持grid synchronization
当前版本mcPy不支持在融合算子中使能grid synchronization。若使能grid synchronization,将导致算子融合失败。
RawKernel代码中不支持动态并行
当前版本中,如果kernel代码中使用了动态并行(dynamic parallelism)特性,在调用mcrtc进行编译时将会报错。
RawKernel中不支持模板特化
当前版本中,如果kernel代码中使用了模板特化(template specializations)特性,在进行运行时编译时将会报错。
不支持图模式
当前版本mcPy不支持使用图模式编程。
thrust.count()不支持共享内存
当前版本mcPy不支持向 cupyx.jit.thrust.count() 传递共享内存参数,即函数的 first 和 last 两个参数不能是共享内存对象,否则会产生运行时非法地址错误。
4.2. mcDF使用限制
不支持Decimal128数据类型
当前版本受限于底层软件层限制,mcDF在所有API接口中不支持Decimal128数据类型。
不支持Python层用户自定义函数
当前版本mcDF/Dask-mcDF不支持在Python层使用用户自定义函数。受此功能影响,将导致如下结果:
API |
限制说明 |
|---|---|
Series.apply |
功能无法正常执行 |
Series.map |
不支持map lamba函数功能 |
DataFrame.apply |
功能无法正常执行 |
DataFrame.applymap |
功能无法正常执行 |
DataFrame.apply_chunks |
将apply函数转移到CPU上执行,无法通过GPU加速 |
DataFrame.apply_rows |
将apply函数转移到CPU上执行,无法通过GPU加速 |
Rolling.apply |
功能无法正常执行 |
GroupBy.apply |
将apply函数转移到CPU上执行,无法通过GPU加速 |
GroupBy.agg |
将apply函数转移到CPU上执行,无法通过GPU加速 |
GroupBy. apply_grouped |
将apply函数转移到CPU上执行,无法通过GPU加速 |
SeriesGroupBy.aggregate |
将apply函数转移到CPU上执行,无法通过GPU加速 |
DataFrameGroupBy.aggregate |
将apply函数转移到CPU上执行,无法通过GPU加速 |
DataFrameGroupBy.transform |
将apply函数转移到CPU上执行,无法通过GPU加速 |
GroupBy.pipe |
将apply函数转移到CPU上执行,无法通过GPU加速 |
mcDF-c对mcDF的影响
在安装mcDF-c后,由于配置受到影响,mcDF不能正常加载组件。建议在使用mcDF时,不要同时安装mcDF-c。
4.3. mcFaiss使用限制
不支持NumPy>=2和SciPy>=2的版本
当前版本受限于底层软件层,mcFaiss whl package依赖的NumPy和SciPy版本都要小于2,否则会报错误信息 All ufuncs must have type 'numpy.ufunc'。
4.4. MX-DCM使用限制
NIC网卡诊断跨机器测试,
--test-mode2指定server时可能会遇到产生的socket address乱码MCCL压力测试,
-j查看job信息显示测试时间与设置压力测试时间不一致nic 命令
--gpu-id异常值处理有问题,以及使用Ctrl+C之后端口号监听未停止,会一直占用