建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

DJHustle

发帖: 1粉丝: 0

发消息 + 关注

发表于2021年03月27日 15:55:30 309 5
直达本楼层的链接
楼主
显示全部楼层
[算子编译] aicpu自定义Reshape算子验证symbol报错

【功能模块】

CANN AICPU自定义算子开发模块


【操作步骤&问题现象】

实现aicpu算子自定义开发samples中的reshape网络验证,通过python ctypes调用时报错:
image.png
undefined symbol:_ZTIN14ascend_private8protobuf7MessageE

CANN版本20.2,环境是Centos_aarch64 Atlas 800-9000。

环境变量配置:
export install_path=/usr/local/Ascend/nnae/latest
export LD_LIBRARY_PATH=/usr/local/gcc-7.3.0/lib64:${install_path}/fwkacllib/lib64:/usr/local/Ascend/driver/lib64:/usr/local/Ascend/nnae/latest/fwkacllib/lib64:/usr/local/Ascend/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe/op_tiling

export PYTHONPATH=installpath/fwkacllib/python/sitepackages:installpath/fwkacllib/python/site−packages:{install_path}/fwkacllib/python/site-packages/auto_tune.egg/auto_tune:${install_path}/fwkacllib/python/site-packages/schedule_search.egg

export PATH=/usr/local/gcc-7.3.0/bin:/usr/bin:/usr/local/bin:/usr/sbin:installpath/fwkacllib/cceccompiler/bin:installpath/fwkacllib/cceccompiler/bin:{install_path}/fwkacllib/bin
#export PATH=/usr/local/gcc-7.3.0/bin:/usr/bin:/usr/local/bin:/usr/sbin:/usr/local/Ascend/ascend-toolkit/latest/arm64-linux/atc/ccec_compiler/bin:/usr/local/Ascend/ascend-toolkit/latest/arm64-linux/atc/bin

export PYTHONPATH=/usr/local/Ascend/tfplugin/latest/tfplugin/python/site-packages:/usr/local/python3.7.5/lib/python3.7/site-packages:$PYTHONPATH

export ASCEND_OPP_PATH=/usr/local/Ascend/ascend-toolkit/latest/opp
export ASCEND_AICPU_PATH=/usr/local/Ascend/ascend-toolkit/latest
export TBE_IMPL_PATH=/usr/local/Ascend/ascend-toolkit/latest/arm64-linux/opp/op_impl/built-in/ai_core/tbe
export OPENSSL_ROOT_DIR=/usr/local/openssl
export TOOLCHAIN_HOME=/usr/local/Ascend/ascend-toolkit/latest/arm64-linux/toolkit



在编译过程中试图链接libascend_protpbuf.so以解决报错的问题,但是解决后引入了新的问题:

image.png


   试图分析问题的过程中发现,libcust_aicpu_kernel.so的编译依赖项中有/usr/localAscend/ascend-toolkit/20.2.rc1/arm64-linux/opp/op_impl/built-in/aicpu/aicpu_kernel/lib/libcpu_kernels_context.a,而该库中带有_ZNK14ascend_private8protobuf7Message11GetTypeNameB5cxx11Ev符号,猜测编译过程中将该符号引入,而与上图报错的_ZNK14ascend_private8protobuf7Message11GetTypeNameEv(libascend_protobuf.so所包含的符号)不同。

举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

chengxiaoli

发帖: 238粉丝: 31

级别 : 版主,版块专家

发消息 + 关注

发表于2021年03月27日 16:13:38
直达本楼层的链接
沙发
显示全部楼层

您好,欢迎您的使用。

问题已经收到啦,正在联系专家分析,请耐心等待下。

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

DJHustle

发帖: 1粉丝: 0

发消息 + 关注

发表于2021年03月27日 17:09:46
直达本楼层的链接
板凳
显示全部楼层

libascend_protobuf.so内定义的符号是_ZNK14ascend_private8protobuf7Message11GetTypeNameEv,不存在_ZNK14ascend_private8protobuf7Message11GetTypeNameB5cxx11Ev。

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

DJHustle

发帖: 1粉丝: 0

发消息 + 关注

发表于2021年03月29日 08:55:53
直达本楼层的链接
地板
显示全部楼层

image.png报错python代码如图

评论
DJHustle 2021-3-29 09:31 评论

... 查看全部
点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

DJHustle

发帖: 1粉丝: 0

发消息 + 关注

发表于2021年03月29日 09:33:55
直达本楼层的链接
5#
显示全部楼层

调用Compute算子部分代码如下:

if __name__ == '__main__':

    display_step = 1

    os.environ["TF_ENABLE_AUTO_MIXED_PRECISION_GRAPH_REWRITE"] = "1"

    input_dim = config.num_features

    num_inputs = config.num_inputs

    print("input_dim={}, num_inputs={}".format(input_dim, num_inputs))


    tag = algo

    Base_path = config.BASE_DIR

    log_path = os.path.join(Base_path, 'log/')

    create_dirs(log_path)

    log_file = os.path.join(log_path, tag)

    pickle_model_path = os.path.join(Base_path,

                                     'model/pickle_model/')

    create_dirs(pickle_model_path)

    print("log file: ", log_file)


    batch_size = data_para['batch_size']

    buf_size = train_para['train_per_epoch']

    eval_size = data_para['batch_size']

    early_stop_epochs = train_para['early_stop_epochs']


    metric_best = 0

    metric_best_epoch = -1


    sess_config = tf.ConfigProto()

    sess_config.gpu_options.allow_growth = True


    # for npu

    custom_op = sess_config.graph_options.rewrite_options.custom_optimizers.add()

    custom_op.name = "NpuOptimizer"

    custom_op.parameter_map["enable_data_pre_proc"].b = True ##True getNext false在host侧

    custom_op.parameter_map["mix_compile_mode"].b = False  #开启混合计算,根据实际情况配置

    custom_op.parameter_map["use_off_line"].b = True

    custom_op.parameter_map["min_group_size"].b = 1

    custom_op.parameter_map["precision_mode"].s = tf.compat.as_bytes("allow_mix_precision")

    custom_op.parameter_map["hcom_parallel"].b = True


    sess_config.graph_options.rewrite_options.remapping = RewriterConfig.OFF


# for op perf

    run_metadata = tf.RunMetadata()

    options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)

     lib = ctypes.cdll.LoadLibrary('/usr/local/Ascend/ascend-toolkit/20.2.rc1/arm64-linux/opp/op_impl/custom/cpu/aicpu_kernel/custom_impl/libcust_aicpu_kernels.so')

    graph = tf.Graph()

    with graph.as_default():

        print('batch size:', int(batch_size) * num_gpu / config.line_per_sample)

        if mode == 'train' and rank_size > 1:

            rank_size = int(os.getenv('RANK_SIZE'))

            rank_id = int(os.getenv('DEVICE_INDEX'))

            print("ranksize = %d, rankid = %d" % (rank_size, rank_id))

        input_tensor = tf.Variable(initial_value=[0,1,2,3,4,5,6,7], name="embedding")

        init = tf.initialize_all_variables()

        output = lib.Compute(input_tensor,[2,4])

        #output = tf.gather(input_tensor, [0, 3, 5, 7])

    with tf.Session(graph=graph, config=sess_config) as sess:

        sess.run(tf.global_variables_initializer())

        sess.run(init)

        print(sess.run(output))


评论
chengxiaoli 2021-4-6 08:46 评论

用户您好,感谢您使用MindSpore。 您这里提出的问题我们的专家已给出解答,希望能够帮助您解决问题。因为较长时间未收到您的回应,所以这里对您的问题进行了结帖。 如果您有其他问题可以创建新的问题帖继续提问,谢谢您的支持~

... 查看全部
点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

梁成辉

发帖: 0粉丝: 1

发消息 + 关注

发表于2021年03月30日 09:57:27
直达本楼层的链接
6#
显示全部楼层

 c++filt  _ZNK14ascend_private8protobuf7Message11GetTypeNameEv

ascend_private::protobuf::Message::GetTypeName() const


环境或者版本问题,跟你写的代码没关系。使用MindSpore r1.2版本代码和与之相配套的run包再试试吧。

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

邀请回答
您可以邀请3位专家

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200