Skip to content
192 changes: 85 additions & 107 deletions backends/metax_gpu/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,117 +11,95 @@ set(METAX_UNIT_TEST_PATH ${CMAKE_CURRENT_LIST_DIR}/unit_test)

file(GLOB_RECURSE PYTHON_TEST_SCRIPTS "${METAX_UNIT_TEST_PATH}/*.py")

list(
APPEND
PYTHON_TEST_SCRIPTS
${PADDLE_LEGACY_TEST_PATH}/test_accuracy_op.py
${PADDLE_LEGACY_TEST_PATH}/test_tril_triu_op.py
${PADDLE_LEGACY_TEST_PATH}/test_where_op.py
${PADDLE_LEGACY_TEST_PATH}/test_split_op.py
${PADDLE_LEGACY_TEST_PATH}/test_fill_constant_op.py
${PADDLE_LEGACY_TEST_PATH}/test_empty_op.py
${PADDLE_LEGACY_TEST_PATH}/test_sign_op.py
${PADDLE_LEGACY_TEST_PATH}/test_cast_op.py
${PADDLE_LEGACY_TEST_PATH}/test_index_add_op.py
${PADDLE_LEGACY_TEST_PATH}/test_unbind_op.py
${PADDLE_LEGACY_TEST_PATH}/test_put_along_axis_op.py
${PADDLE_LEGACY_TEST_PATH}/test_layer_norm_op.py
${PADDLE_LEGACY_TEST_PATH}/test_maximum_op.py
${PADDLE_LEGACY_TEST_PATH}/test_accuracy_op.py
${PADDLE_LEGACY_TEST_PATH}/test_strided_slice_op.py
${PADDLE_LEGACY_TEST_PATH}/test_sum_op.py
${PADDLE_LEGACY_TEST_PATH}/test_set_value_op.py
${PADDLE_LEGACY_TEST_PATH}/test_flatten_contiguous_range_op.py
${PADDLE_LEGACY_TEST_PATH}/test_top_k_op.py
${PADDLE_LEGACY_TEST_PATH}/test_subtract_op.py
${PADDLE_LEGACY_TEST_PATH}/test_softmax_op.py
${PADDLE_LEGACY_TEST_PATH}/test_cumsum_op.py
${PADDLE_LEGACY_TEST_PATH}/test_greater_equal_op.py
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_div_op.py
${PADDLE_LEGACY_TEST_PATH}/test_top_k_v2_op.py
${PADDLE_LEGACY_TEST_PATH}/test_stack_op.py
${PADDLE_LEGACY_TEST_PATH}/test_one_hot_v2_op.py
${PADDLE_LEGACY_TEST_PATH}/test_fill_any_op.py
${PADDLE_LEGACY_TEST_PATH}/test_gather_op.py
${PADDLE_LEGACY_TEST_PATH}/test_reshape_op.py
${PADDLE_LEGACY_TEST_PATH}/test_index_put_op.py
${PADDLE_LEGACY_TEST_PATH}/test_bitwise_op.py
${PADDLE_LEGACY_TEST_PATH}/test_max_op.py
${PADDLE_LEGACY_TEST_PATH}/test_pad_op.py
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_pow_op.py
${PADDLE_LEGACY_TEST_PATH}/test_uniform_random_op.py
${PADDLE_LEGACY_TEST_PATH}/test_scatter_op.py
${PADDLE_LEGACY_TEST_PATH}/test_cast_op.py
${PADDLE_LEGACY_TEST_PATH}/test_zeros_like_op.py
${PADDLE_LEGACY_TEST_PATH}/test_compare_op.py
${PADDLE_LEGACY_TEST_PATH}/test_shape_op.py
${PADDLE_LEGACY_TEST_PATH}/test_tril_triu_op.py
${PADDLE_LEGACY_TEST_PATH}/test_slice_op.py
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_add_op.py
${PADDLE_LEGACY_TEST_PATH}/test_index_put_op.py
${PADDLE_LEGACY_TEST_PATH}/test_bincount_op.py
${PADDLE_LEGACY_TEST_PATH}/test_assign_op.py
${PADDLE_LEGACY_TEST_PATH}/test_logical_op.py
${PADDLE_LEGACY_TEST_PATH}/test_squared_l2_norm_op.py
${PADDLE_LEGACY_TEST_PATH}/test_mean_op.py
${PADDLE_LEGACY_TEST_PATH}/test_fused_bias_act_op.py
${PADDLE_LEGACY_TEST_PATH}/test_expand_v2_op.py
${PADDLE_LEGACY_TEST_PATH}/test_adamw_op.py
${PADDLE_LEGACY_TEST_PATH}/test_gather_nd_op.py
${PADDLE_LEGACY_TEST_PATH}/test_concat_op.py
${PADDLE_LEGACY_TEST_PATH}/test_scatter_nd_op.py
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_floordiv_op.py
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_mul_op.py
${PADDLE_LEGACY_TEST_PATH}/test_transpose_op.py
${PADDLE_LEGACY_TEST_PATH}/test_einsum_op.py
${PADDLE_LEGACY_TEST_PATH}/test_randint_op.py
${PADDLE_LEGACY_TEST_PATH}/test_c_embedding_op.py
${PADDLE_LEGACY_TEST_PATH}/test_numel_op.py
${PADDLE_LEGACY_TEST_PATH}/test_scale_op.py
${PADDLE_LEGACY_TEST_PATH}/test_softmax_with_cross_entropy_op.py
${PADDLE_LEGACY_TEST_PATH}/test_full_op.py
${PADDLE_LEGACY_TEST_PATH}/test_scatter_op.py
${PADDLE_LEGACY_TEST_PATH}/test_clip_op.py)

list(
REMOVE_ITEM
PYTHON_TEST_SCRIPTS
# 精度问题
${PADDLE_LEGACY_TEST_PATH}/test_sum_op.py
${PADDLE_LEGACY_TEST_PATH}/test_max_op.py
${PADDLE_LEGACY_TEST_PATH}/test_cumsum_op.py
# core.cudnnversion
${PADDLE_LEGACY_TEST_PATH}/test_softmax_with_cross_entropy_op.py
${PADDLE_LEGACY_TEST_PATH}/test_softmax_op.py
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_add_op.py
${PADDLE_LEGACY_TEST_PATH}/test_gather_op.py
# op_test.py 里 self._get_places()接口的适配问题
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_pow_op.py
${PADDLE_LEGACY_TEST_PATH}/test_layer_norm_op.py
# device == "gpu" 适配问题
${PADDLE_LEGACY_TEST_PATH}/test_index_add_op.py
# paddle-gpu 报错一致
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_div_op.py
${PADDLE_LEGACY_TEST_PATH}/test_stack_op.py
${PADDLE_LEGACY_TEST_PATH}/test_logical_op.py
${PADDLE_LEGACY_TEST_PATH}/test_mean_op.py
# paddle.device.cuda.get_device_properties
${PADDLE_LEGACY_TEST_PATH}/test_transpose_op.py
${PADDLE_LEGACY_TEST_PATH}/test_randint_op.py
${PADDLE_LEGACY_TEST_PATH}/test_uniform_random_op.py
# needs check_grad with fp64 precision
${PADDLE_LEGACY_TEST_PATH}/test_c_embedding_op.py
# CUDAPinnedPlace 问题
${PADDLE_LEGACY_TEST_PATH}/test_slice_op.py
${PADDLE_LEGACY_TEST_PATH}/test_compare_op.py)
if(NOT TEST_LIST_FILE)
message(
STATUS
"<TEST_LIST_FILE> is not set, default test list [ ${CMAKE_CURRENT_LIST_DIR}/default.txt ] will be used."
)
file(STRINGS ${CMAKE_CURRENT_LIST_DIR}/default.txt TEST_PROGRAMS)

else()
if(NOT EXISTS ${TEST_LIST_FILE})
message(FATAL_ERROR "<TEST_LIST_FILE> is not exist, please check it again.")
endif()

file(STRINGS ${TEST_LIST_FILE} TEST_PROGRAMS)

if(NOT TEST_PROGRAMS)
message(FATAL_ERROR "<TEST_LIST_FILE> is empty.")
endif()

set(PYTHON_TEST_SCRIPTS "")
endif()

foreach(test_name ${TEST_PROGRAMS})
set(CURRENT_TEST_PROGRAM ${PADDLE_LEGACY_TEST_PATH}/${test_name}.py)
if(NOT EXISTS ${CURRENT_TEST_PROGRAM})
message(WARNING "${CURRENT_TEST_PROGRAM} is not exist, skip it.")
else()
list(APPEND PYTHON_TEST_SCRIPTS ${CURRENT_TEST_PROGRAM})
endif()
endforeach()

list(REMOVE_DUPLICATES PYTHON_TEST_SCRIPTS)

if(NOT TEST_LIST_FILE)
list(
REMOVE_ITEM
PYTHON_TEST_SCRIPTS
# 精度问题
${PADDLE_LEGACY_TEST_PATH}/test_sum_op.py
${PADDLE_LEGACY_TEST_PATH}/test_max_op.py
${PADDLE_LEGACY_TEST_PATH}/test_cumsum_op.py
# core.cudnnversion
${PADDLE_LEGACY_TEST_PATH}/test_softmax_with_cross_entropy_op.py
${PADDLE_LEGACY_TEST_PATH}/test_softmax_op.py
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_add_op.py
${PADDLE_LEGACY_TEST_PATH}/test_gather_op.py
# op_test.py 里 self._get_places()接口的适配问题
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_pow_op.py
${PADDLE_LEGACY_TEST_PATH}/test_layer_norm_op.py
# device == "gpu" 适配问题
${PADDLE_LEGACY_TEST_PATH}/test_index_add_op.py
# paddle-gpu 报错一致
${PADDLE_LEGACY_TEST_PATH}/test_elementwise_div_op.py
${PADDLE_LEGACY_TEST_PATH}/test_stack_op.py
${PADDLE_LEGACY_TEST_PATH}/test_logical_op.py
${PADDLE_LEGACY_TEST_PATH}/test_mean_op.py
# paddle.device.cuda.get_device_properties
${PADDLE_LEGACY_TEST_PATH}/test_transpose_op.py
${PADDLE_LEGACY_TEST_PATH}/test_randint_op.py
${PADDLE_LEGACY_TEST_PATH}/test_uniform_random_op.py
# needs check_grad with fp64 precision
${PADDLE_LEGACY_TEST_PATH}/test_c_embedding_op.py
# CUDAPinnedPlace 问题
${PADDLE_LEGACY_TEST_PATH}/test_slice_op.py
${PADDLE_LEGACY_TEST_PATH}/test_compare_op.py)
endif()

if(LOG_OUTPUT_DIR AND NOT EXISTS ${LOG_OUTPUT_DIR})
file(MAKE_DIRECTORY ${LOG_OUTPUT_DIR})
message(WARNING "${LOG_OUTPUT_DIR} is not exist, create it now.")
endif()

foreach(test_script ${PYTHON_TEST_SCRIPTS})
get_filename_component(test_name ${test_script} NAME_WE)

add_test(
NAME "python_${test_name}"
COMMAND ${Python_EXECUTABLE} ${test_script}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
if(LOG_OUTPUT_DIR)
set(test_log_file "${LOG_OUTPUT_DIR}/${test_name}.log")

add_test(
NAME "python_${test_name}"
COMMAND sh -c
"${Python_EXECUTABLE} ${test_script} > ${test_log_file} 2>&1"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

else()
add_test(
NAME "python_${test_name}"
COMMAND ${Python_EXECUTABLE} ${test_script}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif()

set_tests_properties("python_${test_name}" PROPERTIES TIMEOUT 360)
endforeach()
67 changes: 67 additions & 0 deletions backends/metax_gpu/tests/default.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
test_accuracy_op
test_tril_triu_op
test_where_op
test_split_op
test_fill_constant_op
test_empty_op
test_sign_op
test_cast_op
test_index_add_op
test_unbind_op
test_put_along_axis_op
test_layer_norm_op
test_maximum_op
test_accuracy_op
test_strided_slice_op
test_sum_op
test_set_value_op
test_flatten_contiguous_range_op
test_top_k_op
test_subtract_op
test_softmax_op
test_cumsum_op
test_greater_equal_op
test_elementwise_div_op
test_top_k_v2_op
test_stack_op
test_one_hot_v2_op
test_fill_any_op
test_gather_op
test_reshape_op
test_index_put_op
test_bitwise_op
test_max_op
test_pad_op
test_elementwise_pow_op
test_uniform_random_op
test_scatter_op
test_cast_op
test_zeros_like_op
test_compare_op
test_shape_op
test_tril_triu_op
test_slice_op
test_elementwise_add_op
test_index_put_op
test_bincount_op
test_assign_op
test_logical_op
test_squared_l2_norm_op
test_mean_op
test_fused_bias_act_op
test_expand_v2_op
test_adamw_op
test_gather_nd_op
test_concat_op
test_scatter_nd_op
test_elementwise_floordiv_op
test_elementwise_mul_op
test_transpose_op
test_einsum_op
test_randint_op
test_c_embedding_op
test_numel_op
test_scale_op
test_softmax_with_cross_entropy_op
test_full_op
test_scatter_op
56 changes: 50 additions & 6 deletions backends/metax_gpu/tests/run_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
#!/bin/bash

# Copyright (c) 2025 PaddlePaddle Authors. All Rights Reserved.
#
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#
# http://www.apache.org/licenses/LICENSE-2.0
#
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Expand All @@ -29,10 +29,54 @@ export
rm -r build
mkdir -p build && cd build

cmake ..

TEST_LOG_LEVEL=0
TEST_LIST_FILE=""
TEST_LOG_OUTPUT_DIR=""
TEST_PARALLEL_NUM=10

cmake --build .
while getopts "i:o:v:j:h" opt; do
case "$opt" in
i)
TEST_LIST_FILE="$OPTARG"
;;
o)
TEST_LOG_OUTPUT_DIR="$OPTARG"
echo "Set log output dir [ $TEST_LOG_OUTPUT_DIR ]"
;;
v)
TEST_LOG_LEVEL=$OPTARG
;;
j)
TEST_PARALLEL_NUM="$OPTARG"
;;
h)
echo "用法:$0 -i <测试列表文件> -o <日志输出路径> ..."
echo "选项说明:"
echo " -i 测试程序列表文件"
echo " -o 日志输出路径"
echo " -v GLOG_v 日志等级"
echo " -j ctest 测试并行数量"
echo " -h 显示帮助"
exit 0
;;
\?)
echo "error: unknow option '-$OPTARG'."
exit 1
;;
:)
echo "error option '-$OPTARG' must have parameter."
exit 1
;;
esac
done


export GLOG_v=$TEST_LOG_LEVEL


ctest -j10 --output-on-failure
cmake .. -DTEST_LIST_FILE=$TEST_LIST_FILE -DLOG_OUTPUT_DIR=$TEST_LOG_OUTPUT_DIR

cmake --build .

ctest -j$TEST_PARALLEL_NUM --output-on-failure
Loading