mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-09 12:15:09 -05:00
chore(tests): Add a make target for testing gpu
This commit is contained in:
@@ -231,26 +231,6 @@ run-rust-tests: rust-bindings
|
||||
|
||||
## end-to-end-tests
|
||||
|
||||
FIXTURE_CPU_DIR=tests/end_to_end_fixture/tests_cpu
|
||||
|
||||
$(FIXTURE_CPU_DIR)/%.yaml: tests/end_to_end_fixture/%_gen.py
|
||||
mkdir -p $(FIXTURE_CPU_DIR)
|
||||
$(Python3_EXECUTABLE) $< > $@
|
||||
|
||||
$(FIXTURE_CPU_DIR)/bug_report.yaml:
|
||||
unzip -o $(FIXTURE_CPU_DIR)/bug_report.zip -d $(FIXTURE_CPU_DIR)
|
||||
|
||||
generate-cpu-tests: $(FIXTURE_CPU_DIR)/end_to_end_leveled.yaml $(FIXTURE_CPU_DIR)/end_to_end_apply_lookup_table.yaml $(FIXTURE_CPU_DIR)/end_to_end_linalg_apply_lookup_table.yaml $(FIXTURE_CPU_DIR)/bug_report.yaml
|
||||
|
||||
build-end-to-end-tests: build-end-to-end-jit-test build-end-to-end-test build-end-to-end-jit-encrypted-tensor build-end-to-end-jit-fhelinalg build-end-to-end-jit-lambda
|
||||
|
||||
run-end-to-end-tests: build-end-to-end-tests generate-cpu-tests
|
||||
$(BUILD_DIR)/tools/concretelang/tests/end_to_end_tests/end_to_end_jit_test
|
||||
$(BUILD_DIR)/tools/concretelang/tests/end_to_end_tests/end_to_end_jit_encrypted_tensor
|
||||
$(BUILD_DIR)/tools/concretelang/tests/end_to_end_tests/end_to_end_jit_fhelinalg
|
||||
$(BUILD_DIR)/tools/concretelang/tests/end_to_end_tests/end_to_end_jit_lambda
|
||||
$(BUILD_DIR)/tools/concretelang/tests/end_to_end_tests/end_to_end_test --loop-parallelize --jit $(FIXTURE_CPU_DIR)/*.yaml
|
||||
|
||||
build-end-to-end-jit-test: build-initialized
|
||||
cmake --build $(BUILD_DIR) --target end_to_end_jit_test
|
||||
|
||||
@@ -266,6 +246,40 @@ build-end-to-end-jit-fhelinalg: build-initialized
|
||||
build-end-to-end-jit-lambda: build-initialized
|
||||
cmake --build $(BUILD_DIR) --target end_to_end_jit_lambda
|
||||
|
||||
build-end-to-end-tests: build-end-to-end-jit-test build-end-to-end-test build-end-to-end-jit-encrypted-tensor build-end-to-end-jit-fhelinalg build-end-to-end-jit-lambda
|
||||
|
||||
### end-to-end-tests CPU
|
||||
|
||||
FIXTURE_CPU_DIR=tests/end_to_end_fixture/tests_cpu
|
||||
|
||||
$(FIXTURE_CPU_DIR)/%.yaml: tests/end_to_end_fixture/%_gen.py
|
||||
mkdir -p $(FIXTURE_CPU_DIR)
|
||||
$(Python3_EXECUTABLE) $< > $@
|
||||
|
||||
$(FIXTURE_CPU_DIR)/bug_report.yaml:
|
||||
unzip -o $(FIXTURE_CPU_DIR)/bug_report.zip -d $(FIXTURE_CPU_DIR)
|
||||
|
||||
generate-cpu-tests: $(FIXTURE_CPU_DIR)/end_to_end_leveled.yaml $(FIXTURE_CPU_DIR)/end_to_end_apply_lookup_table.yaml $(FIXTURE_CPU_DIR)/end_to_end_linalg_apply_lookup_table.yaml $(FIXTURE_CPU_DIR)/bug_report.yaml
|
||||
|
||||
### end-to-end-tests GPU
|
||||
|
||||
FIXTURE_GPU_DIR=tests/end_to_end_fixture/tests_gpu
|
||||
|
||||
$(FIXTURE_GPU_DIR):
|
||||
mkdir -p $(FIXTURE_GPU_DIR)
|
||||
|
||||
$(FIXTURE_GPU_DIR)/end_to_end_apply_lookup_table.yaml: tests/end_to_end_fixture/end_to_end_apply_lookup_table_gen.py
|
||||
$(Python3_EXECUTABLE) $< --bitwidth 1 2 3 4 5 6 7 > $@
|
||||
|
||||
$(FIXTURE_GPU_DIR)/end_to_end_linalg_apply_lookup_table.yaml: tests/end_to_end_fixture/end_to_end_linalg_apply_lookup_table_gen.py
|
||||
$(Python3_EXECUTABLE) $< --bitwidth 1 2 3 4 5 6 7 > $@
|
||||
|
||||
generate-gpu-tests: $(FIXTURE_GPU_DIR) $(FIXTURE_GPU_DIR)/end_to_end_apply_lookup_table.yaml $(FIXTURE_GPU_DIR)/end_to_end_linalg_apply_lookup_table.yaml
|
||||
|
||||
run-end-to-end-tests-gpu: build-end-to-end-test generate-gpu-tests
|
||||
$(BUILD_DIR)/tools/concretelang/tests/end_to_end_tests/end_to_end_test --emit-gpu-ops --library /tmp/concrete_compiler/gpu_tests/ $(FIXTURE_CPU_DIR)/*.yaml
|
||||
|
||||
|
||||
## end-to-end-dataflow-tests
|
||||
|
||||
build-end-to-end-dataflow-tests: build-initialized
|
||||
|
||||
@@ -1,43 +1,50 @@
|
||||
from platform import mac_ver
|
||||
import numpy as np
|
||||
import argparse
|
||||
|
||||
|
||||
MIN_PRECISON = 1
|
||||
MAX_PRECISION = 16
|
||||
|
||||
|
||||
def main():
|
||||
def generate(args):
|
||||
print("# /!\ DO NOT EDIT MANUALLY THIS FILE MANUALLY")
|
||||
print("# /!\ THIS FILE HAS BEEN GENERATED")
|
||||
np.random.seed(0)
|
||||
for p in range(MIN_PRECISON, MAX_PRECISION+1):
|
||||
if p != 1:
|
||||
print("---")
|
||||
for p in args.bitwidth:
|
||||
max_value = (2 ** p) - 1
|
||||
random_lut = np.random.randint(max_value+1, size=2**p)
|
||||
print("description: apply_lookup_table_{0}bits".format(p))
|
||||
print(f"description: apply_lookup_table_{p}bits")
|
||||
print("program: |")
|
||||
print(
|
||||
" func.func @main(%arg0: !FHE.eint<{0}>) -> !FHE.eint<{0}> {{".format(p))
|
||||
print(" %tlu = arith.constant dense<[{0}]> : tensor<{1}xi64>".format(
|
||||
','.join(map(str, random_lut)), 2**p))
|
||||
f" func.func @main(%arg0: !FHE.eint<{p}>) -> !FHE.eint<{p}> {{")
|
||||
print(f" %tlu = arith.constant dense<[{','.join(map(str, random_lut))}]> : tensor<{2**p}xi64>")
|
||||
print(
|
||||
" %1 = \"FHE.apply_lookup_table\"(%arg0, %tlu): (!FHE.eint<{0}>, tensor<{1}xi64>) -> (!FHE.eint<{0}>)".format(p, 2**p))
|
||||
print(" return %1: !FHE.eint<{0}>".format(p))
|
||||
f" %1 = \"FHE.apply_lookup_table\"(%arg0, %tlu): (!FHE.eint<{p}>, tensor<{2**p}xi64>) -> (!FHE.eint<{p}>)")
|
||||
print(f" return %1: !FHE.eint<{p}>")
|
||||
print(" }")
|
||||
print("tests:")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: 0")
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(random_lut[0]))
|
||||
print(f" - scalar: {random_lut[0]}")
|
||||
print(" - inputs:")
|
||||
random_i = np.random.randint(max_value)
|
||||
print(" - scalar: {0}".format(random_i))
|
||||
print(f" - scalar: {random_i}")
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(random_lut[random_i]))
|
||||
print(f" - scalar: {random_lut[random_i]}")
|
||||
print(" - inputs:")
|
||||
print(" - scalar: {0}".format(max_value))
|
||||
print(f" - scalar: {max_value}")
|
||||
print(" outputs:")
|
||||
print(" - scalar: {0}".format(random_lut[max_value]))
|
||||
print(f" - scalar: {random_lut[max_value]}")
|
||||
print("---")
|
||||
|
||||
|
||||
main()
|
||||
CLI = argparse.ArgumentParser()
|
||||
CLI.add_argument(
|
||||
"--bitwidth",
|
||||
help="Specify the list of bitwidth to generate",
|
||||
nargs="+",
|
||||
type=int,
|
||||
default=list(range(1,16)),
|
||||
)
|
||||
generate(CLI.parse_args())
|
||||
|
||||
Reference in New Issue
Block a user