PaddlePaddle / Paddle

PArallel Distributed Deep LEarning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)
http://www.paddlepaddle.org/
Apache License 2.0
22.2k stars 5.57k forks source link

sequence data c_api online paddle_arguments_set_sequence_start_pos and index data input paddle_matrix_get_row core #10801

Closed yttbgf closed 6 years ago

yttbgf commented 6 years ago

input 0:ego_input input 1:obs_area dense_vector_sequence input 2-xx: index list

  1. paddle_matrix _obs_input; int * _obs_seq_pos_array = nullptr;

    _in_args = paddle_arguments_create_none(); int input_size = 2; input_size += 3; input_size += (2 FLAGS_houston_attention_lane_num_oneside + 1); input_size += (2 FLAGS_houston_attention_lane_num_oneside + 1); CHECK_PADDLE(paddle_arguments_resize(_in_args, input_size)); // create matrix in cpu/gpu _ego_input = paddle_matrix_create(_BATCH_SIZE, _EGO_FEATURE_DIM, _use_gpu); _obs_input = paddle_matrix_create(_BATCH_SIZE, _GRID_FEATURE_DIM, _use_gpu); if (!_use_gpu) { CHECK_PADDLE(paddle_matrix_get_row(_ego_input, 0, &_cpu_input_ego)); CHECK_PADDLE(paddle_matrix_get_row(_obs_input, 0, &_cpu_input_obs)); } CHECK_PADDLE(paddle_arguments_set_value(_in_args, 0, _ego_input)); CHECK_PADDLE(paddle_arguments_set_value(_in_args, 1, _obs_input));

    _obs_seq_pos_array = (int)malloc((_GRID_FEATURE_SEQ_DIM + 1) sizeof(int));

    for (int i = 0; i < _GRID_FEATURE_SEQ_DIM + 1; i++) { _obs_seq_pos_array[i] = i * _OBS_FEATURE_DIM; } _obs_seq_pos = paddle_ivector_create( _obs_seq_pos_array, sizeof(_obs_seq_pos_array) / sizeof(int), false, false);

    CHECK(paddle_arguments_set_sequence_start_pos(_in_args, 2, 0, _obs_seq_pos)); //HERE CORE!!

F0521 16:55:06.490267 12686 base_model.cpp:54] Check failed: paddle_arguments_set_sequence_start_pos(_in_args, 2, 0, _obs_seq_pos) Check failure stack trace: Aborted at 1526892906 (unix time) try "date -d @1526892906" if you are using GNU date PC: @ 0x0 (unknown) SIGABRT (@0x3e80000318e) received by PID 12686 (TID 0x7f98b38cf840) from PID 12686; stack trace: @ 0x7f98b0892330 (unknown) @ 0x7f98affd9c37 gsignal @ 0x7f98affdd028 abort @ 0x7f98af19cbf9 google::logging_fail() @ 0x7f98af19ee2d google::LogMessage::Fail() @ 0x7f98af1a0b7d google::LogMessage::SendToLog() @ 0x7f98af19ea1c google::LogMessage::Flush() @ 0x7f98af1a149e google::LogMessageFatal::~LogMessageFatal() @ 0x7f98b24d5dbf adu::planning::BaseModel::BaseModel() @ 0x7f98b24c13c1 adu::planning::OccassionModelFactory::_init_factory() @ 0x7f98b24c12a7 adu::planning::OccassionModelFactory::OccassionModelFactory()

2. when comment CHECK(paddle_arguments_set_sequence_start_pos(_in_args, 2, 0, _obs_seq_pos)); in 1: also core!

paddle_matrix _obs_forward_block_input[3];

    k = 2;
    int idx_col = FLAGS_houston_attention_lane_num_oneside + 1;
    //_obs_forward_block_array = new (paddle_real*)[3];
    for (int i = 0; i < 3; i++) {//right to left
        _obs_forward_block_input[i] = paddle_matrix_create(_BATCH_SIZE, size, _use_gpu);
        //_obs_forward_block_array[i] = nullptr;
        _obs_forward_block_array[i] = (paddle_real*)malloc(size * sizeof(paddle_real));
        set_seq_idxs(_obs_forward_block_array[i], size, idx_col, 1, 0, col_num);

        CHECK(paddle_matrix_get_row(_obs_forward_block_input[i], 0, &(_obs_forward_block_array[i])));//Check CORE HERE!!!

        CHECK_PADDLE(paddle_arguments_set_value(_in_args, k, _obs_forward_block_input[i]));
        CHECK_PADDLE(paddle_arguments_set_value(_in_args, k + offset, _obs_forward_block_input[i]));
        idx_col -= 1;
        k += 1;
    }

F0521 17:01:18.321624 17396 base_model.cpp:495] Check failed: paddle_matrix_get_row(_obs_forward_block_input[i], 0, &(_obs_forward_block_array[i])) Check failure stack trace: Aborted at 1526893278 (unix time) try "date -d @1526893278" if you are using GNU date PC: @ 0x0 (unknown) SIGABRT (@0x3e8000043f4) received by PID 17396 (TID 0x7f0c028d1840) from PID 17396; stack trace: @ 0x7f0bff894330 (unknown) @ 0x7f0bfefdbc37 gsignal @ 0x7f0bfefdf028 abort @ 0x7f0bfe19ebf9 google::logging_fail() @ 0x7f0bfe1a0e2d google::LogMessage::Fail() @ 0x7f0bfe1a2b7d google::LogMessage::SendToLog() @ 0x7f0bfe1a0a1c google::LogMessage::Flush() @ 0x7f0bfe1a349e google::LogMessageFatal::~LogMessageFatal() @ 0x7f0c014db442 adu::planning::BaseModel::build_seq_idxs() @ 0x7f0c014d7ca7 adu::planning::BaseModel::BaseModel() @ 0x7f0c014c3351 adu::planning::OccassionModelFactory::_init_factory() @ 0x7f0c014c3237 adu::planning::OccassionModelFactory::OccassionModelFactory() @ 0x45164b adu::planning::OccassionModelFactory::instance() @ 0x44bf52 adu::planning::BaseModelTest_predict_Test::TestBody() @ 0x473c9c testing::internal::HandleSehExceptionsInMethodIfSupported<>() @ 0x46ecf8 testing::internal::HandleExceptionsInMethodIfSupported<>() @ 0x45c17b testing::Test::Run()

jacquesqiao commented 6 years ago
_obs_seq_pos_array = (int*)malloc((_GRID_FEATURE_SEQ_DIM + 1) * sizeof(int));

_obs_seq_pos_array is the result of malloc, so

sizeof(_obs_seq_pos_array)

is the length of the pointer, it will be 8.

jacquesqiao commented 6 years ago

https://stackoverflow.com/questions/1533519/newbie-questions-about-malloc-and-sizeof

jacquesqiao commented 6 years ago

原因是因为使用了 CHECK() 这个 CHECK是别的库中定义的check,而不是paddle的check,改成CHECK_PADDLE之后,返回值的问题解决了。别的问题可以再开issue解决

yttbgf commented 6 years ago

paddle_arguments_set_sequence_start_pos id set to 1= obs_input data index