皮卡鱼官方论坛

 找回密码
 立即注册
查看: 5050|回复: 7

请问vs2019编译运行出错的问题。谢谢了。

[复制链接]

1

主题

5

帖子

25

积分

学1-2

Rank: 1

积分
25
发表于 2023-1-12 19:02:26 | 显示全部楼层 |阅读模式
本帖最后由 hegu 于 2023-1-12 19:08 编辑

请问我使用vs2019编译pikafish后的pikafish运行出错,定位是 zip解压 pikafish.nnue 出错,pikafish.nnue我是从下载电脑 pikafish程序目录拷贝到我的目录的,请问一下,这样不行吗?谢谢了。
确定文件和路径本身都是对的。

std::stringstream read_zipped_nnue(const std::string& fpath) {
    void* buf = NULL;
    size_t bufsize;

    struct zip_t *zip = zip_open(fpath.c_str(), 0, 'r'); //这里打开失败。
    if (zip_entries_total(zip) == 1) {
        zip_entry_openbyindex(zip, 0);
        {
            zip_entry_read(zip, &buf, &bufsize);
        }
        zip_entry_close(zip);
    }
    zip_close(zip);

    std::stringstream ss;
    if (buf)
        ss.write((const char*)buf, bufsize);
    free(buf);

    return ss;
}




1

主题

5

帖子

25

积分

学1-2

Rank: 1

积分
25
 楼主| 发表于 2023-1-13 10:59:01 | 显示全部楼层
本帖最后由 hegu 于 2023-1-13 18:16 编辑

发现问题是:下面读取两个hashValue 不一致导致,不知道具体为什么不一致。

// Hash value of evaluation function structure
  constexpr std::uint32_t HashValue =
      FeatureTransformer::get_hash_value() ^ Network::get_hash_value();
  

// Read network header
  bool read_header(std::istream& stream, std::uint32_t* hashValue, std::string* desc)
  {
    std::uint32_t version, size;

    version     = read_little_endian<std::uint32_t>(stream);
    *hashValue  = read_little_endian<std::uint32_t>(stream);
    size        = read_little_endian<std::uint32_t>(stream);
    std::cout << "version:" << version << ";Version:" << Version << std::endl;
    if (!stream || version != Version) return false;
    desc->resize(size);
    stream.read(&(*desc)[0], size);
    return !stream.fail();
  }


回复

使用道具 举报

1

主题

42

帖子

1798

积分

业4-3

Rank: 14Rank: 14Rank: 14Rank: 14

积分
1798
发表于 2023-1-13 16:11:12 | 显示全部楼层
本帖最后由 小法师 于 2023-1-16 01:50 编辑

不会编译,但是帮你顶贴
回复

使用道具 举报

1

主题

5

帖子

25

积分

学1-2

Rank: 1

积分
25
 楼主| 发表于 2023-1-13 18:17:01 | 显示全部楼层
小法师 发表于 2023-1-13 16:11
不会编译,当时帮你顶贴

谢谢。非常感谢。
回复

使用道具 举报

0

主题

2

帖子

45

积分

学1-2

Rank: 1

积分
45
发表于 2023-2-16 13:43:03 | 显示全部楼层
直接用Makefile编译运行 打入bench 程序就飞了,什麽情况啊?
回复

使用道具 举报

0

主题

2

帖子

45

积分

学1-2

Rank: 1

积分
45
发表于 2023-2-16 13:51:40 | 显示全部楼层
Position: 1/26 (rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1)
info string ERROR: Network evaluation parameters compatible with the engine must be available.
info string ERROR: The network file pikafish.nnue was not loaded successfully.
info string ERROR: The UCI option EvalFile might need to specify the full path, including the directory name, to the network file.
info string ERROR: The engine will be terminated now.
回复

使用道具 举报

1

主题

5

帖子

25

积分

学1-2

Rank: 1

积分
25
 楼主| 发表于 2023-2-17 16:28:11 | 显示全部楼层
whhvc 发表于 2023-2-16 13:51
Position: 1/26 (rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1)
info string E ...

同样的问题, pikafish.nnue 加载没有成功。我修改了 pikafish.nnue的校验加载成功了,但是后面zip解压还是失败了。
回复

使用道具 举报

1

主题

5

帖子

25

积分

学1-2

Rank: 1

积分
25
 楼主| 发表于 2023-2-21 18:22:47 | 显示全部楼层
我直接使用unzip后的 nnue,还是出错了:
// Read network parameters
  bool read_parameters(std::istream& stream) {

    std::uint32_t hashValue;
    if (!read_header(stream, &hashValue, &netDescription)) return false;
    if (hashValue != HashValue) return false;
    if (!Detail::read_parameters(stream, *featureTransformer)) return false;
    for (std::size_t i = 0; i < LayerStacks; ++i)
      if (!Detail::read_parameters(stream, *(network[i]))) return false;
    return stream && stream.peek() == std::ios::traits_type::eof();
  }

看上去是network里面的hash值不对导致的。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|皮卡鱼官方论坛

GMT+8, 2024-12-4 01:46 , Processed in 0.065753 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表