엔진 생성
기본
Engine(mode: str = 'cpu', *, slot_count: int | None = None, use_bootstrap: bool = False, use_multiparty: bool = False, use_bootstrap_to_14_levels: bool = False, use_bootstrap_to_17_levels: bool = False, compact: bool = False, thread_count: int = 0, cuda_grid_size_multiplier: int = 4, device_id: int = 0)- 연산을 실행할 엔진을 생성합니다.
- 인풋:
- mode:
cpu,parallel,gpu,async gpu. parallel은 cpu 병렬 처리를 뜻함 - slot_count: 암호화 단위 크기 지정
- use_bootstrap: 부트스트랩 사용 여부
- use_bootstrap_to_14_levels: 14 레벨 부트스트랩 사용 여부
- use_bootstrap_to_17_levels: 17 레벨 부트스트랩 사용 여부
- use_multiparty: 다자간 연산 사용 여부
- compact: 고밀도 모드 사용 여부
- 다자간 연산은 지원하지 않습니다.
- thread_count: mode가
parallel이나gpu일 때 스레드를 몇 개 사용할지 지정 - cuda_grid_size_multiplier: mode가
gpu일 경우 CUDA 커널 호출 그리드 크기를 몇 배로 할 지를 지정 - device_id: mode가
gpu일 경우 몇 번 gpu를 사용할지 지정
- mode:
- 아웃풋
- Engine
하나의 엔진에서는 use_bootstrap, use_bootstrap_to_14_levels, use_bootstrap_to_17_levels, use_multiparty 옵션 중 하나만 사용할 수 있습니다.
from desilofhe import Engine
engine1 = Engine()
engine2 = Engine(mode="parallel", use_multiparty=True, thread_count=16)
engine3 = Engine(mode="gpu", use_bootstrap=True, thread_count=512, device_id=1)
최대 곱셈 횟수 지정
Engine(max_level: int, mode: str = 'cpu', *, use_multiparty: bool = False, compact: bool = False, thread_count: int = 0, cuda_grid_size_multiplier: int = 4, device_id: int = 0)
- 인풋:
- max_level: 최대 사용할 곱셈 횟수 지정
- mode:
cpu,parallel,gpu. parallel은 cpu 병렬 처리를 뜻함 - use_multiparty: 다자간 연산 사용 여부
- compact: 고밀도 모드 사용 여부
- 다자간 연산은 지원하지 않습니다.
- thread_count: mode가
parallel이나gpu일 때 쓰레드를 몇 개 사용할지 지정 - device_id: mode가
gpu일 경우 몇 번 gpu를 사용할지 지정 - cuda_grid_size_multiplier: mode가
gpu일 경우 CUDA 커널 호출 그리드 크기를 몇 배로 할 지를 지정
- 아웃풋
- Engine
from desilofhe import Engine
engine1 = Engine(max_level=10)
engine2 = Engine(max_level=12, mode="parallel", thread_count=16)
engine3 = Engine(
max_level=15, mode="gpu", use_multiparty=True, thread_count=512, device_id=1
)
슬롯 갯수 지정
Engine(*, slot_count: int, max_level: int, mode: str = 'cpu', *, use_multiparty: bool = False, compact: bool = False, thread_count: int = 0, cuda_grid_size_multiplier: int = 4, device_id: int = 0)
- 인풋:
- max_level: 최대 사용할 곱셈 횟수 지정
- mode:
cpu,parallel,gpu. parallel은 cpu 병렬 처리를 뜻함 - slot_count: 암호화 단위 크기 지정
- use_multiparty: 다자간 연산 사용 여부
- compact: 고밀도 모드 사용 여부
- 다자간 연산은 지원하지 않습니다.
- thread_count: mode가
parallel이나gpu일 때 쓰레드를 몇 개 사용할지 지정 - device_id: mode가
gpu일 경우 몇 번 gpu를 사용할지 지정 - cuda_grid_size_multiplier: mode가
gpu일 경우 CUDA 커널 호출 그리드 크기를 몇 배로 할 지를 지정
- 아웃풋
- Engine
from desilofhe import Engine
engine1 = Engine(slot_count=1024, max_level=10)
engine2 = Engine(
slot_count=1024, max_level=12, mode="parallel", thread_count=16
)
engine3 = Engine(
slot_count=1024,
max_level=15,
mode="gpu",
use_multiparty=True,
thread_count=512,
device_id=1,
)
파라미터 지정
Engine(log_coeff_count: int, special_prime_count: int, mode: str = 'cpu', *, log_slot_count: int | None = None, use_multiparty: bool = False, compact: bool = False, thread_count: int = 0, cuda_grid_size_multiplier: int = 4, device_id: int = 0)
- 인풋:
- log_coeff_count: 암호문 계수 숫자의 log. 13~17 사이로 가능
- special_prime_count: 키 스위칭을 할 때 하나의 파티션의 크기
- mode:
cpu,parallel,gpu. parallel은 cpu 병렬 처리를 뜻함 - log_slot_count: 암호화 단위 크기의 log. 1~log_coeff_count-1 사이로 가능
- use_multiparty: 다자간 연산 사용 여부
- compact: 고밀도 모드 사용 여부
- 다자간 연산은 지원하지 않습니다.
- 다음
(log_slot_count, special_prime_count)조합만을 지원합니다.(13, 1),(14, 1),(15, 2),(16, 4)
- thread_count: mode가
parallel이나gpu일 때 쓰레드를 몇 개 사용할지 지정 - device_id: mode가
gpu일 경우 몇 번 gpu를 사용할지 지정 - cuda_grid_size_multiplier: mode가
gpu일 경우 CUDA 커널 호출 그리드 크기를 몇 배로 할 지를 지정
- 아웃풋
- Engine
from desilofhe import Engine
engine1 = Engine(log_coeff_count=14, special_prime_count=1)
engine2 = Engine(log_coeff_count=14, special_prime_count=1, log_slot_count=10)
engine3 = Engine(
log_coeff_count=15, special_prime_count=2, mode="parallel", thread_count=16
)
engine4 = Engine(
log_coeff_count=16,
special_prime_count=4,
mode="gpu",
use_multiparty=True,
thread_count=512,
device_id=1,
)