记录一下 __gnu_cxx::hash_map传一个新allocator的写法

本文详细介绍了如何使用 C++ 中 __gnu_cxx 的 hash_map,并给出了具体的实例代码。展示了如何定义和初始化一个全局角色指针分配器及 Role 类型的 hash_map。

老得查代码写,这里记录一下:

hash_map(size_type __n, const hasher& __hf, 
    const key_equal& __eql, const allocator_type& __a = allocator_type())
 

// 全局的角色指针Allocator
__gnu_cxx::__pool_alloc<Role*> g_rolePtrAlloc; 


typedef __gnu_cxx::hash_map<
     uint32_t, 
     Role*, 
     __gnu_cxx::hash<uint32_t>, 
     std::equal_to<uint32_t>, 
     __gnu_cxx::__pool_alloc<Role*> > Roles;
Roles roles(5000, __gnu_cxx::hash<uint32_t>(), 
    std::equal_to<uint32_t>(), g_rolePtrAlloc);


orthogonal box = (0 0 0) to (10.024 17.362077 29.602998) 1 by 1 by 1 MPI processor grid reading atoms ... 368 atoms read_data CPU = 0.002 seconds CUDA unavailable, setting device type to torch::kCPU. Exception: open file failed because of errno 2 on fopen: No such file or directory, file path: mace-mpa-0-medium.model-lammps.pt Exception raised from RAIIFile at /croot/libtorch_1751464468084/work/caffe2/serialize/file_adapter.cc:24 (most recent call first): frame #0: c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) + 0xa9 (0x75a5001921c9 in /home/zms/.conda/envs/mkl_env/lib/libc10.so) frame #1: c10::detail::torchCheckFail(char const*, char const*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) + 0xf3 (0x75a5001373f8 in /home/zms/.conda/envs/mkl_env/lib/libc10.so) frame #2: caffe2::serialize::FileAdapter::RAIIFile::RAIIFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) + 0x132 (0x75a4f7e09ba2 in /home/zms/.conda/envs/mkl_env/lib/libtorch_cpu.so) frame #3: caffe2::serialize::FileAdapter::FileAdapter(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) + 0x40 (0x75a4f7e09c00 in /home/zms/.conda/envs/mkl_env/lib/libtorch_cpu.so) frame #4: caffe2::serialize::PyTorchStreamReader::PyTorchStreamReader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) + 0x79 (0x75a4f7e092e9 in /home/zms/.conda/envs/mkl_env/lib/libtorch_cpu.so) frame #5: torch::jit::import_ir_module(std::shared_ptr<torch::jit::CompilationUnit>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::optional<c10::Device>, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&, bool, bool) + 0x2a3 (0x75a4f8fb15f3 in /home/zms/.conda/envs/mkl_env/lib/libtorch_cpu.so) frame #6: torch::jit::import_ir_module(std::shared_ptr<torch::jit::CompilationUnit>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::optional<c10::Device>, bool) + 0x9d (0x75a4f8fb193d in /home/zms/.conda/envs/mkl_env/lib/libtorch_cpu.so) frame #7: torch::jit::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::optional<c10::Device>, bool) + 0xdc (0x75a4f8fb1a7c in /home/zms/.conda/envs/mkl_env/lib/libtorch_cpu.so) frame #8: <unknown function> + 0x64e563 (0x5be34eaa0563 in lmp) frame #9: <unknown function> + 0xf0d23 (0x5be34e542d23 in lmp) frame #10: <unknown function> + 0xf84d7 (0x5be34e54a4d7 in lmp) frame #11: <unknown function> + 0xf879e (0x5be34e54a79e in lmp) frame #12: <unknown function> + 0xe8601 (0x5be34e53a601 in lmp) frame #13: <unknown function> + 0x2a1ca (0x75a4f242a1ca in /usr/lib/x86_64-linux-gnu/libc.so.6) frame #14: __libc_start_main + 0x8b (0x75a4f242a28b in /usr/lib/x86_64-linux-gnu/libc.so.6) frame #15: <unknown function> + 0xea025 (0x5be34e53c025 in lmp)
最新发布
09-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值