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() 传递共享内存参数,即函数的 firstlast 两个参数不能是共享内存对象,否则会产生运行时非法地址错误。

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之后端口号监听未停止,会一直占用