问题标签 [ntl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 将 boost 序列化与二进制存档一起使用时出错
从boost::archive::binary_iarchive
变量中读取时出现以下错误:
我的序列化和反序列化代码是:
调用代码的测试如下:
注意事项:
序列化与
boost::archive::text_oarchive
和都可以正常工作boost::archive::binary_oarchive
。他们分别创建了一个 46M 和 21M 的文件(我知道很大)。反序列化
boost::archive::text_iarchive
基本上在执行过程中停止了archive >> keySwitching;
进程被自动杀死。这实际上是档案的最大部分。我决定尝试一下,
boost::archive::binary_iarchive
因为文件大小只有一半,但我得到了开头显示的错误。执行从存档的第一次读取时发生错误:archive >> context;
.输入和输出(
save
和load_construct_data
)之间的不对称是因为我找不到另一种方法来避免实现的派生类的序列化helib::PubKey
。使用指针helib::PubKey
给了我编译错误,要求对派生类进行序列化。如果有其他方式,我会全神贯注。
谢谢您的帮助。
更新:
我正在为加密库HElib中的某些类实现反序列化,因为我需要通过网络发送密文。其中一类是helib::PubKey
. 我正在使用boost 序列化库来实现。按照评论中的建议,我创建了一个要点来提供一个代表。有3个文件:
- serialization.hpp,它包含序列化实现。不幸的是,
helib::PubKey
依赖于许多其他类使文件相当长。所有其他类都有通过的单元测试。此外,我必须对类进行微小的修改,以实现序列化。我公开了私人成员。 - test-serialization.cpp,它包含单元测试。
- 生成文件。运行 make 创建可执行的test-serialization。
c++ - 在 Visual Studio 中使用 NTL 进行编程
我正在尝试在 Visual Studio 上运行一项 NTL 测试。我成功编译了 NTL,创建了一个新项目,然后我选择了“添加到解决方案”。然后我单击“设置为启动项目”,然后在“属性”->“附加包含目录”中添加包含目录。
现在,当我尝试从 NTL 运行一个示例时,在本例中为 ZZ_pEXTest.cpp,我收到错误消息说它找不到头文件。我不确定我做错了什么。
c++ - 使用 M1 芯片在 Xcode 12.4 上构建 C++ 项目出现错误:链接库 libntl.a 缺少此目标所需的一个或多个架构:x86_64
当我使用 M1 Chip Mac 在 Xcode 12.4 上构建 C++ 项目时,对于链接的 NTL 库 (libntl.a),出现错误:
the linked library libntl.a is missing one or more architectures required by this target: x86_64
.
对这个问题有什么建议吗?我试图修改架构变量build settings
但没有奏效。
c++ - 为什么在 NTL 库中使用 CRT 算法时显示“InvMod: inverse undefined”?
我尝试使用 NTL 库来实现我的加密算法。然而,它向我展示了一些关于CRT
算法的错误。CRT 的简称,Incremental Chinese Remaindering
定义如下:
我尝试打印一些信息:
我打电话CRT
如下:
c++ - 多项式不可约性的错误评估
在我的函数中,PolynomialIrreducibility()
我正在评估输入的多项式是否不可约或不超过GF(prime_number)。
在使用不可约多项式 x^2 + x + 2 测试实现的函数时,所有三个函数(DetIrredTest、ProbIrredTest、IterIrredTest)都用于确定多项式是否不可约或不评估它,即使它在 GF(3) 上不是不可约的,如图所示以下。
请问,我是以错误的方式评估不可约性还是我做错了什么?
c++ - 如何表示伽罗瓦域 GF(2^8) 的元素并在 NTL 库中执行算术
我是 NTL 库的新手,因为它的GF2X
, GF2E
,GF2EX
等。现在,我想在 Galois 域上执行乘法GF(2^8)
。问题如下:
例如,{53} • {CA} = {01} 在 Rijndael 的字段中,因为
我的问题是如何表示约简多项式x^8 + x^4 + x^3 + x^1 + 1
和多项式x^6 + x^4 + x + 1
,x^7 + x^6 + x^3 + x
在NTL
. 然后对这些多项式进行乘法运算,得到结果{01}
。
这是我使用这个库的一个很好的例子。
c++ - NTL(数论库)中矩阵的可用内存
每个人!我在 SGX 飞地内使用 NTL。当我运行应用程序时,我遇到了关于out of memory
. 然后我检查了内存,我猜是由于大量使用了 NTL 矩阵。
NTL中矩阵的基本使用:
在NTL matrix.cpp中,我没有找到任何释放内存的函数。
对于kill()
,实现大约是swap()
:
这无助于释放矩阵的内存。使用后如何释放内存?
cuda - 将 NTL 和 GMP 与 CUDA 一起使用
我有一个 C++ 程序,它使用 NTL 和 GMP 数学库使用任意长度的整数和多项式进行乘法和模运算。我目前使用下面的终端指令按照 NTL 文档中的建议进行编译:
g++ -g -O2 -std=c++11 -pthread -march=native directory/filename.cpp -o directory/filename.out -lntl -lgmp -lm
修改它(我认为是成功的)以在 GPU 上运行后,我现在想编译该程序以包含与 C++ 版本中相同的库。我的 CUDA 程序在序言中包含与 C++ 程序相同的标题。
我对 CUDA 很陌生,所以我的问题是这里是否有人知道我是否可以/是否需要在标准 nvcc 编译指令中使用与上述相同的标志,或者更一般地说,我如何编译我的 CUDA 程序以包括 NTL 和 GMP 库?
nvcc directory/filename.cu -o directory/filename.out
如果不可能,是否有替代 CUDA 库最接近这些库或适合使用任意长度整数和多项式算术的应用程序?
预先感谢您,非常感谢您的帮助。