chore: activate Wall Werror

This commit is contained in:
rudy
2022-10-28 12:16:15 +02:00
committed by rudy-6-4
parent 6b0f6e9f10
commit 018684fe2a
20 changed files with 61 additions and 84 deletions

View File

@@ -9,7 +9,10 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Wouldn't be able to compile LLVM without this on Mac (using either Clang or AppleClang)
if(APPLE)
add_definitions("-Wno-narrowing -Wno-dollar-in-identifier-extension")
add_definitions("-Wno-narrowing -Wno-dollar-in-identifier-extension -Wno-string-conversion -Wno-pessimizing-move")
else()
add_definitions("-Wall -Wno-pessimizing-move")
add_definitions("-Werror ")
endif()
# If we are trying to build the compiler with LLVM/MLIR as libraries

View File

@@ -54,15 +54,6 @@ struct V0Parameter {
llvm::Optional<LargeIntegerParameter> largeInteger;
V0Parameter() {}
V0Parameter(size_t glweDimension, size_t logPolynomialSize, size_t nSmall,
size_t brLevel, size_t brLogBase, size_t ksLevel,
size_t ksLogBase)
: glweDimension(glweDimension), logPolynomialSize(logPolynomialSize),
nSmall(nSmall), brLevel(brLevel), brLogBase(brLogBase),
ksLevel(ksLevel), ksLogBase(ksLogBase) {}
// TODO remove the shift when we have true polynomial size
size_t getPolynomialSize() { return 1 << logPolynomialSize; }

View File

@@ -1,15 +1,3 @@
add_compile_options(-Werror)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# using Clang
add_compile_options(-Wno-error=pessimizing-move -Wno-pessimizing-move)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# using GCC
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.0)
add_compile_options(-Werror -Wno-error=pessimizing-move -Wno-pessimizing-move)
endif()
endif()
add_mlir_library(
ConcretelangClientLib
ClientLambda.cpp

View File

@@ -48,11 +48,7 @@ struct ConcreteToBConcretePass
: public ConcreteToBConcreteBase<ConcreteToBConcretePass> {
void runOnOperation() final;
ConcreteToBConcretePass() = delete;
ConcreteToBConcretePass(bool loopParallelize)
: loopParallelize(loopParallelize){};
private:
bool loopParallelize;
ConcreteToBConcretePass(bool _loopParallelize){};
};
} // namespace

View File

@@ -245,7 +245,7 @@ struct FHEToTFHEPass : public FHEToTFHEBase<FHEToTFHEPass> {
FHEToTFHEPass(mlir::concretelang::ApplyLookupTableLowering lutLowerStrategy)
: lutLowerStrategy(lutLowerStrategy) {}
void runOnOperation() {
void runOnOperation() override {
auto op = this->getOperation();
mlir::ConversionTarget target(getContext());

View File

@@ -30,8 +30,8 @@ public:
LinalgRewritePattern(::mlir::MLIRContext *context, bool parallelizeLoops,
mlir::PatternBenefit benefit = 0)
: parallelizeLoops(parallelizeLoops),
::mlir::OpRewritePattern<mlir::linalg::GenericOp>(context, benefit) {}
: ::mlir::OpRewritePattern<mlir::linalg::GenericOp>(context, benefit),
parallelizeLoops(parallelizeLoops) {}
mlir::LogicalResult
matchAndRewrite(mlir::linalg::GenericOp linalgOp,

View File

@@ -397,19 +397,19 @@ struct BufferizableWithSyncCallOpInterface
template <>
void pushAdditionalArgs(BConcrete::AddPlaintextLweBufferOp op,
mlir::SmallVector<mlir::Value> &operands,
RewriterBase &rewriter){};
RewriterBase &rewriter) {}
template <>
void pushAdditionalArgs(BConcrete::AddLweBuffersOp op,
mlir::SmallVector<mlir::Value> &operands,
RewriterBase &rewriter){};
RewriterBase &rewriter) {}
template <>
void pushAdditionalArgs(BConcrete::MulCleartextLweBufferOp op,
mlir::SmallVector<mlir::Value> &operands,
RewriterBase &rewriter){};
RewriterBase &rewriter) {}
template <>
void pushAdditionalArgs(BConcrete::NegateLweBufferOp op,
mlir::SmallVector<mlir::Value> &operands,
RewriterBase &rewriter){};
RewriterBase &rewriter) {}
template <>
void pushAdditionalArgs(BConcrete::KeySwitchLweBufferOp op,
@@ -429,7 +429,7 @@ void pushAdditionalArgs(BConcrete::KeySwitchLweBufferOp op,
op.getLoc(), op.lwe_dim_outAttr()));
// context
operands.push_back(getContextArgument(op));
};
}
template <>
void pushAdditionalArgs(BConcrete::BootstrapLweBufferOp op,
@@ -455,7 +455,7 @@ void pushAdditionalArgs(BConcrete::BootstrapLweBufferOp op,
op.getLoc(), op.outPrecisionAttr()));
// context
operands.push_back(getContextArgument(op));
};
}
template <>
void pushAdditionalArgs(BConcrete::KeySwitchLweBufferAsyncOffloadOp op,
@@ -463,7 +463,7 @@ void pushAdditionalArgs(BConcrete::KeySwitchLweBufferAsyncOffloadOp op,
RewriterBase &rewriter) {
// context
operands.push_back(getContextArgument(op));
};
}
template <>
void pushAdditionalArgs(BConcrete::BootstrapLweBufferAsyncOffloadOp op,
@@ -489,7 +489,7 @@ void pushAdditionalArgs(BConcrete::BootstrapLweBufferAsyncOffloadOp op,
op.getLoc(), op.outPrecisionAttr()));
// context
operands.push_back(getContextArgument(op));
};
}
template <>
void pushAdditionalArgs(BConcrete::WopPBSCRTLweBufferOp op,
@@ -524,7 +524,7 @@ void pushAdditionalArgs(BConcrete::WopPBSCRTLweBufferOp op,
op.getLoc(), op.packingKeySwitchoutputPolynomialSizeAttr()));
// context
operands.push_back(getContextArgument(op));
};
}
} // namespace
void mlir::concretelang::BConcrete::

View File

@@ -22,7 +22,7 @@ void async_keyswitch(
get_engine(context), get_keyswitch_key_u64(context),
out_aligned + out_offset, ct0_aligned + ct0_offset));
promise.set_value(concretelang::clientlib::MemRefDescriptor<1>{
out_allocated, out_aligned, out_offset, out_size, out_stride});
out_allocated, out_aligned, out_offset, {out_size}, {out_stride}});
}
void *memref_keyswitch_async_lwe_u64(
@@ -71,7 +71,7 @@ void async_bootstrap(
get_fftw_fourier_bootstrap_key_u64(context), out_aligned + out_offset,
ct0_aligned + ct0_offset, glwe_ct));
promise.set_value(concretelang::clientlib::MemRefDescriptor<1>{
out_allocated, out_aligned, out_offset, out_size, out_stride});
out_allocated, out_aligned, out_offset, {out_size}, {out_stride}});
free(glwe_ct);
}

View File

@@ -32,7 +32,9 @@ static std::vector<GenericComputeClient> gcc;
static hpx::lcos::barrier *_dfr_jit_phase_barrier;
static hpx::lcos::barrier *_dfr_startup_barrier;
static size_t num_nodes = 0;
#if CONCRETELANG_TIMING_ENABLED
static struct timespec init_timer, broadcast_timer, compute_timer, whole_timer;
#endif
} // namespace
} // namespace dfr
} // namespace concretelang
@@ -1292,7 +1294,9 @@ namespace {
static bool is_jit_p = false;
static bool use_omp_p = false;
static size_t num_nodes = 1;
#if CONCRETELANG_TIMING_ENABLED
static struct timespec compute_timer;
#endif
} // namespace
void _dfr_set_required(bool is_required) {}

View File

@@ -1,13 +1,7 @@
add_compile_options( -Werror )
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# using Clang
add_compile_options( -Wno-error=pessimizing-move -Wno-pessimizing-move )
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# using GCC
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.0)
add_compile_options( -Wno-error=cast-function-type -Wno-cast-function-type)
add_compile_options( -Werror -Wno-error=pessimizing-move -Wno-pessimizing-move )
endif()
endif()

View File

@@ -59,22 +59,22 @@ llvm::Expected<CircuitGate> gateFromMLIRType(LweSecretKeyID secretKeyID,
}
if (auto lweTy = type.dyn_cast_or_null<
mlir::concretelang::Concrete::LweCiphertextType>()) {
bool sign = lweTy.isSignedInteger();
return CircuitGate{
/* .encryption = */ llvm::Optional<EncryptionGate>({
/* .secretKeyID = */ secretKeyID,
/* .variance = */ variance,
/* .encoding = */
{
/* .precision = */ lweTy.getP(),
/* .precision = */ (size_t)lweTy.getP(),
/* .crt = */ lweTy.getCrtDecomposition().vec(),
},
}),
/*.shape = */
{
/*.width = */ lweTy.getP(),
/*.dimensions = */ std::vector<int64_t>(),
/*.size = */ 0,
},
{/*.width = */ (size_t)lweTy.getP(),
/*.dimensions = */ std::vector<int64_t>(),
/*.size = */ 0,
/* .sign */ sign},
};
}
auto tensor = type.dyn_cast_or_null<mlir::RankedTensorType>();
@@ -99,7 +99,7 @@ llvm::Expected<ClientParameters>
createClientParametersForV0(V0FHEContext fheContext,
llvm::StringRef functionName,
mlir::ModuleOp module) {
auto v0Param = fheContext.parameter;
V0Parameter &v0Param = fheContext.parameter;
Variance inputVariance =
v0Curve->getVariance(1, v0Param.getNBigLweDimension(), 64);

View File

@@ -209,6 +209,7 @@ llvm::Expected<V0Parameter> getParameter(optimizer::Description &descr,
params.brLogBase = sol.br_decomposition_base_log;
params.ksLevel = sol.ks_decomposition_level_count;
params.ksLogBase = sol.ks_decomposition_base_log;
params.largeInteger = llvm::None;
if (sol.use_wop_pbs) {
if (sol.crt_decomposition.empty()) {

View File

@@ -229,7 +229,7 @@ llvm::cl::list<size_t> v0Constraint(
"Force the compiler to use the given v0 constraint [p, norm2]"),
llvm::cl::ZeroOrMore, llvm::cl::MiscFlags::CommaSeparated);
llvm::cl::list<int64_t> v0Parameter(
llvm::cl::list<size_t> v0Parameter(
"v0-parameter",
llvm::cl::desc(
"Force to apply the given v0 parameters [glweDimension, "
@@ -316,11 +316,10 @@ cmdlineCompilationOptions() {
"The v0-parameter option expect a list of size 7",
llvm::inconvertibleErrorCode());
}
options.v0Parameter = mlir::concretelang::V0Parameter(
cmdline::v0Parameter[0], cmdline::v0Parameter[1],
cmdline::v0Parameter[2], cmdline::v0Parameter[3],
cmdline::v0Parameter[4], cmdline::v0Parameter[5],
cmdline::v0Parameter[6]);
options.v0Parameter = {cmdline::v0Parameter[0], cmdline::v0Parameter[1],
cmdline::v0Parameter[2], cmdline::v0Parameter[3],
cmdline::v0Parameter[4], cmdline::v0Parameter[5],
cmdline::v0Parameter[6], llvm::None};
}
// Setup the large integer options

View File

@@ -151,8 +151,8 @@ static int registerEndToEndTestFromFile(std::string prefix, std::string path,
}
int main(int argc, char **argv) {
char *bench_name = "MLBench";
char *file_name =
char const *bench_name = "MLBench";
char const *file_name =
"tests/end_to_end_benchmarks/mlbench/end_to_end_mlbench.yaml";
size_t stack_size = 0;

View File

@@ -316,9 +316,10 @@ template <> struct llvm::yaml::MappingTraits<EndToEndDesc> {
"[glweDimension, logPolynomialSize, nSmall, brLevel, "
"brLobBase, ksLevel, ksLogBase]");
}
desc.v0Parameter = mlir::concretelang::V0Parameter(
v0parameter[0], v0parameter[1], v0parameter[2], v0parameter[3],
v0parameter[4], v0parameter[5], v0parameter[6]);
desc.v0Parameter = {(size_t)v0parameter[0], (size_t)v0parameter[1],
(size_t)v0parameter[2], (size_t)v0parameter[3],
(size_t)v0parameter[4], (size_t)v0parameter[5],
(size_t)v0parameter[6], llvm::None};
}
std::vector<int64_t> v0constraint;
io.mapOptional("v0-constraint", v0constraint);

View File

@@ -106,7 +106,7 @@ TEST(ParallelizeAndRunFHE, nn_small_parallel) {
std::vector<uint8_t> input;
input.reserve(dim0 * dim1);
for (int i = 0; i < dim0 * dim1; ++i)
for (size_t i = 0; i < dim0 * dim1; ++i)
input.push_back(i % 17 % 4);
mlir::concretelang::TensorLambdaArgument<
@@ -148,7 +148,7 @@ TEST(ParallelizeAndRunFHE, nn_small_sequential) {
std::vector<uint8_t> input;
input.reserve(dim0 * dim1);
for (int i = 0; i < dim0 * dim1; ++i)
for (size_t i = 0; i < dim0 * dim1; ++i)
input.push_back(i % 17 % 4);
mlir::concretelang::TensorLambdaArgument<

View File

@@ -89,7 +89,7 @@ func.func @main(%arg0: tensor<200x4x!FHE.eint<4>>) -> tensor<200x8x!FHE.eint<4>>
std::vector<uint8_t> input;
input.reserve(dim0 * dim1);
for (int i = 0; i < dim0 * dim1; ++i)
for (size_t i = 0; i < dim0 * dim1; ++i)
input.push_back(i % 17 % 4);
mlir::concretelang::TensorLambdaArgument<
@@ -130,7 +130,7 @@ TEST(Distributed, nn_med_sequential) {
std::vector<uint8_t> input;
input.reserve(dim0 * dim1);
for (int i = 0; i < dim0 * dim1; ++i)
for (size_t i = 0; i < dim0 * dim1; ++i)
input.push_back(i % 17 % 4);
mlir::concretelang::TensorLambdaArgument<

View File

@@ -36,9 +36,9 @@ func.func @main(%arg0: tensor<3x2x!FHE.eint<4>>) -> tensor<3x!FHE.eint<4>> {
ASSERT_EQ(res->size(), (size_t)3);
EXPECT_EQ((*res)[0], 1);
EXPECT_EQ((*res)[1], 3);
EXPECT_EQ((*res)[2], 5);
EXPECT_EQ((*res)[0], (uint64_t)1);
EXPECT_EQ((*res)[1], (uint64_t)3);
EXPECT_EQ((*res)[2], (uint64_t)5);
}
TEST(End2EndJit_FHELinalg, extract_slice_nonzero_offset_regression) {
@@ -65,9 +65,9 @@ func.func @main(%arg0: tensor<3x2x!FHE.eint<4>>) -> tensor<3x!FHE.eint<4>> {
ASSERT_EQ(res->size(), (size_t)3);
EXPECT_EQ((*res)[0], 2);
EXPECT_EQ((*res)[1], 4);
EXPECT_EQ((*res)[2], 6);
EXPECT_EQ((*res)[0], (uint64_t)2);
EXPECT_EQ((*res)[1], (uint64_t)4);
EXPECT_EQ((*res)[2], (uint64_t)6);
}
// Same as add_eint_int_term_to_term test above, but returning a lambda argument

View File

@@ -43,17 +43,17 @@ TEST(Support, client_parameters_json_serde) {
params0.inputs = {
{
/*.encryption = */ {{clientlib::SMALL_KEY, 0.00, {4, {1, 2, 3, 4}}}},
/*.shape = */ {32, {1, 2, 3, 4}, 1 * 2 * 3 * 4},
/*.shape = */ {32, {1, 2, 3, 4}, 1 * 2 * 3 * 4, false},
},
{
/*.encryption = */ {{clientlib::SMALL_KEY, 0.00, {5}}},
/*.shape = */ {8, {4, 4, 4, 4}, 4 * 4 * 4 * 4},
/*.encryption = */ {{clientlib::SMALL_KEY, 0.00, {5, {1, 2, 3, 4}}}},
/*.shape = */ {8, {4, 4, 4, 4}, 4 * 4 * 4 * 4, false},
},
};
params0.outputs = {
{
/*.encryption = */ {{clientlib::SMALL_KEY, 0.00, {5}}},
/*.shape = */ {8, {4, 4, 4, 4}, 4 * 4 * 4 * 4},
/*.encryption = */ {{clientlib::SMALL_KEY, 0.00, {5, {1, 2, 3, 4}}}},
/*.shape = */ {8, {4, 4, 4, 4}, 4 * 4 * 4 * 4, false},
},
};
auto json = clientlib::toJSON(params0);

View File

@@ -154,7 +154,7 @@ func.func @main(%arg0: !FHE.eint<7>, %arg1: !FHE.eint<7>) -> !FHE.eint<7> {
continue;
}
auto res = lambda.call(a, b);
ASSERT_EQ_OUTCOME(res, a + b);
ASSERT_EQ_OUTCOME(res, (scalar_out)a + b);
}
}
@@ -332,7 +332,7 @@ func.func @main(%arg0: tensor<2x3x1x!FHE.eint<7>>, %arg1: tensor<2x3x1x!FHE.eint
for (size_t i = 0; i < v.size(); i++) {
for (size_t j = 0; j < v[i].size(); j++) {
for (size_t k = 0; k < v[i][j].size(); k++) {
EXPECT_EQ(v[i][j][k], 2 * ta[i][j][k]);
EXPECT_EQ(v[i][j][k], (scalar_out)2 * ta[i][j][k]);
}
}
}
@@ -400,6 +400,6 @@ func.func @main(%arg0: !FHE.eint<6>, %arg1: !FHE.eint<3>) -> !FHE.eint<6> {
for (auto a : values_6bits())
for (auto b : values_3bits()) {
auto res = lambda.call(a, b);
ASSERT_EQ_OUTCOME(res, a + b);
ASSERT_EQ_OUTCOME(res, (scalar_out)a + b);
}
}