릴리즈 노트
1.4.0 | 2025/08/26
- 인코딩과 디코딩이 온전히 GPU 환경에서 수행됩니다. 기존에는 CPU에서 연산하고 GPU로 옮기는 방식이었습니다.
- 저장 방식을 수정하였습니다. 앞으로 추가될 기능들을 위한 수정이라 저장해둔 자료구조가 있다면 신규 라이브러리로 읽어서 다시 저장하는 것을 권장합니다. 기존 버전의 라이브러리로 저장한 자료구조는 새 라이브러리에서 읽어들일 수 있지만, 새 라이브러리에서 저장한 자료구조는 기존 버전의 라이브러리로 읽어들일 수 없습니다.
- GPU 환경에서 NTT 상태의 암호문 혹은 평문을 리스케일 하는 경우에 엔진이 죽는 문제를 수정하였습니다.
- CUDA 12.9를 지원합니다.
- 부트스트랩 함수에 대한 일부 벤치마크를 공개합니다.
1.3.0 | 2025/07/24
- 비밀 키를 통한 암호화를 지원합니다.
- 덧셈과 뺄셈에 대해 제자리 연산을 지원합니다. 제자리 연산은 메모리 접근량이 줄기 때문에 일반적으로 더 빠릅니다. 추후에 더 많은 제자리 연산을 지원할 예정입니다.
- 리스케일된 암호문 혹은 평문에 대해
decode
를 제외한 모든 연산을 지원합니다. 기존에는 레벨 감소와 곱셈과 같은 일부 연산만 가능했습니다. - NTT와 INTT를 공개적으로 지원합니다. 하나의 암호문 혹은 평문을 다른 인자들과 반복해서 곱하는 경우에 사용하면 더욱 효율적인 연산이 가능합니다.
1.2.0 | 2025/06/25
- 다항식 연산을 위한 보조함수들이 추가되었습니다. 다음 함수들이 추가되었습니다.
evaluate_polynomial
,make_power_basis
,weighted_sum
- 다자간 연산의 경우 최대 곱셈 횟수가 1회 이하인 경우에 최적화된 파라미터를 추가하였습니다.
- 저장 방식을 수정하였습니다. 기존 버전의 라이브러리로 저장한 자료구조는 새 라이브러리에서 읽어들일 수 있지만, 새 라이브러리에서 저장한 자료구조는 기존 버전의 라이브러리로 읽어들일 수 없습니다.
- 곱셈 레벨이 많이 소진 되었을 경우의 정밀도를 개선하였습니다.
1.1.1 | 2025/06/12
- NVIDIA H100 GPU에서 NTT가 오동작하는 오류를 해결하였습니다.
1.1.0 | 2025/05/28
- 신규 기능
- 대형 부트스트랩 키로 더 빠르게 부트스트래핑을 할 수 있게 되었습니다. 메모리 사용량은 증가합니다.
- 회전 키를 사용한 부트스트랩이 5% 정도 빨라졌습니다.
- 비밀 키의 비밀 값을 지정할 수 있게 되었습니다.
- Mod raise 함수가 추가되었습니다.
- 다중 회전 함수를 추가해 하나의 암호문을 여러번 회전해야하는 경우 더 빠르게 연산할 수 있습니다.
- 디스크가 아니라 메모리로 직접 직렬화 및 역직렬화가 가능해졌습니다.
- 버그 해결
- CPU 병렬화에서 스레드 갯수를 \(2^{n}\)이 아닌 값을 준 경우의 오류를 해결하였습니다.
Mod raise 함수와 다중 회전 함수가 생겼기 때문에 이제 직접 부트스트래핑 함수를 구현해볼 수 있습니다.
1.0.3 | 2025/05/21
- 최대 곱셈 횟수를 초과하려는 경우에 대한 에러 메시지 추가
- 자료구조의 크기를 확인할 수 있는 nbytes / serialized_nbytes 속성 추가
- 회전 키를 사용한 부트스트래핑의 경우 stage count 4 에서 오류나던 버그 수정
1.0.2 | 2025/05/14
- 키 스위칭 연산의 오류 감소
- MacOS 11.0 이상 지원
1.0.1 | 2025/05/08
- encrypt 함수에서 level 파라미터가 사용되지 않던 버그 수정
- trio ciphertext decrypt 함수가 입력된 암호문을 수정하던 버그 수정
- CUDA 12.1 / 12.4 지원
1.0.0 | 2025/04/30
- 최초 공개 버전