gpt4 book ai didi

c++ - Caffe 删除 .cu 实现出现编译错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:12:50 25 4
gpt4 key购买 nike

我正在尝试将 SigmoidCrossEntropyLossLayer 修改为我自己的版本。我只实现了 .cpp 版本。已经有一个 SigmoidCrossEntropyLossLayer 的 .cu 文件,看来我必须使用 backword_gpu 作为我的反向实现。我试图删除这个 .cu 文件,这是弹出的错误之一(实际上所有类似的错误只是不同的 bin 文件):

make: *** [.build_release/tools/compute_image_mean.bin] Error 1
.build_release/lib/libcaffe.so: undefined reference to `caffe::SigmoidCrossEntropyLossLayer<double>::Backward_gpu(std::vector<caffe::Blob<double>*, std::allocator<caffe::Blob<double>*> > const&, std::vector<bool, std::allocator<bool> > const&, std::vector<caffe::Blob<double>*, std::allocator<caffe::Blob<double>*> > const&)'

有谁知道如何让caffe忽略这个单一的.cu文件?我不想再在我的项目中使用它。非常感谢!

最佳答案

只需从 sigmoid_cross_entropy_loss_layer.hpp 文件中删除 Backward_gpuForward_gpu 声明。

.cu 文件包含这些虚函数的定义,因此当您删除 .cu 文件时,您只有虚函数声明而没有实现。

您还需要从 sigmoid_cross_entropy_loss_layer.cpp 文件中删除以下行:

#ifdef CPU_ONLY
STUB_GPU(WARPLossLayer);
#endif

这确保您的编译器不会为 *_gpu 函数创建 stub ,因为这会导致 Caffe 中断,因为您删除了头文件中的声明。

您还必须相应地编辑测试。

关于c++ - Caffe 删除 .cu 实现出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38948998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com