houj04

Results 7 issues of houj04

* `applications/tools/first-order-demo.py`里面,有一句`paddle.set_device('cpu')`,从代码上看是仅在用户设置了`--cpu`的时候,才会执行这句,进而用cpu计算。那么默认的是啥?换句话说,我猜测有以下两种可能,哪个是正确的呢(或者两个都不对)? (1)如果用户的设备是gpu、npu或者xpu等等异构设备,会自动寻找并且使用。(没找到相关代码) (2)默认的就是gpu,如果要用npu或者xpu设备,需要显式调用`set_device`。(没找到相关代码) * `ppgan/apps/first_order_predictor.py`的第255行,有个操作是直接把`driving_video`转`nparray`紧接着用`paddle.to_tensor`,那么当驱动视频很大,无法完全装进设备的显存,咋办?从代码上看,我猜可以先转`nparray`,然后切成一堆小段,分别`to_tensor`,每一段自己算自己的,最后把所有的输出都`append`在一起,这样可行吗?

In this document: https://www.paddlepaddle.org.cn/documentation/docs/zh/beginners_guide/basics/image_classification/index.html See this section of codes: ![图片](https://user-images.githubusercontent.com/35131887/65580494-57af8380-dfac-11e9-82c4-29c35089339e.png) The line of `from __future__ import print_function` should be above all other imports. Otherwise will encounter a "from __future__ imports...

代码中是这么写的: paddle/reader/decorator.py ![图片](https://user-images.githubusercontent.com/35131887/56883314-df926f80-6a98-11e9-95a3-359c2a601c5d.png) 但是渲染出来之后,这些\n和\r都没有显示出来,而是变成了这样 ![图片](https://user-images.githubusercontent.com/35131887/56883382-1c5e6680-6a99-11e9-9529-44b26b098871.png) 上图中应该出现\n和\r,而不是渲染成真正的换行符。

### PR Category Environment Adaptation ### PR Types Bug fixes ### Description 之前在 https://github.com/PaddlePaddle/Paddle/pull/63887 里面先粗糙绕过了一下某个函数找不到定义的问题。本PR对`test/cpp/inference/test.cmake`进行了拆分,里面只保留纯`function`的部分,这样在外面就可以正常引用。多出来的那些需要进行的“操作”,放到了一个新文件`test/cpp/inference/test_cases.cmake`里面。

### PR Category Custom Device ### PR Types Bug fixes ### Description 在XPU的现有单测中,有一些地方固定了XPU1和XPU2的“二选一”,因此会造成一些诡异的现象。例如,在`get_type_white_list`函数中,有这样的语句: ```python version_str = "xpu2" if xpu_version == core.XPUVersion.XPU2 else "xpu1" ``` 它会把所有的非XPU2设备,都认成是XPU1。 同时,`xpu_test_device_type_white_list = ['xpu1_float64']`这一句,目的是“在XPU1上面不要跑float64类型的单测”。那么在“非XPU2且非XPU1”的设备上会生效,就会把float64给过滤掉。导致的结果是,即使某个算子注册了float64类型,也不会被单测执行,出现漏测。 本PR修复了此问题。

### PR Category Custom Device ### PR Types Bug fixes ### Description 修复了一批分布式单测在XPU下面无法正常运行问题。一部分是有些if-elif-else语句,仅判断了custom_device然后就走GPU兜底,另一部分是有些特性XPU下面不支持或者有很细微的精度误差(atol设置为1e-8)。

XPU

### PR Category Custom Device ### PR Types New features ### Description 新增`fused_linear_param_grad_add`算子。为了实现这个算子,做了以下事情: * 参考GPU的实现,将现有的算子`paddle/phi/kernels/fusion/xpu/fused_gemm_epilogue_grad_kernel.cc`代码进行了拆分,拆出来一个新的头文件`paddle/phi/kernels/funcs/fused_gemm_epilogue_xpu.h`。 * 参考GPU的实现,在这个文件中`paddle/phi/kernels/fusion/xpu/fused_linear_param_grad_add_kernel.cc`新增了算子实现,引用了上面拆出来的那个头文件。 局限性:目前只支持`float32`类型。但是GPU中带来的`multi_precision`相关的代码仍然保留,等`MatMulXPUFunction`及其周边矩阵乘法基础组件支持多种数据类型以后再加其它数据类型的支持。

XPU