Adding as static rather than submodule

This commit is contained in:
Noah L. Schrick 2022-12-04 17:19:14 -06:00
parent cc0ae6cc52
commit f0c75e7416
2800 changed files with 915822 additions and 2 deletions

@ -1 +0,0 @@
Subproject commit d02ab0d290d000355d479903a20a82721f67d432

View File

@ -0,0 +1,53 @@
cmake_minimum_required (VERSION 3.5.1)
project(demo CXX)
# Common compiler options among built types
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--allow-multiple-definition")
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Specific compiler options for Debug or Release builds
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -ggdb -Wall -fopenmp -pedantic")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -g -Wall -fopenmp -pedantic -O1")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O1 -fopenmp")
find_package(Palisade REQUIRED PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../PALISADE/)
set( CMAKE_CXX_FLAGS ${PALISADE_CXX_FLAGS} )
set( CMAKE_EXE_LINKER_FLAGS ${PALISADE_EXE_LINKER_FLAGS} )
include_directories( ${OPENMP_INCLUDES} )
include_directories( ${PALISADE_INCLUDE} )
include_directories( ${PALISADE_INCLUDE}/core )
include_directories( ${PALISADE_INCLUDE}/pke )
#add_library(libplinkio SHARED IMPORTED)
#set_target_properties(libplinkio PROPERTIES
# IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/../../PLINK/libplinkio/install/lib/libplinkio.so"
# INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/../../PLINK/libplinkio/install/include")
link_directories( ${PALISADE_LIBDIR} )
link_directories( ${OPENMP_LIBRARIES} )
link_directories( ${LIBPLINKIO_LIBDIR} )
link_libraries( ${PALISADE_LIBRARIES} )
find_package(MPI REQUIRED)
include_directories(${MPI_CXX_INCLUDE_PATH})
find_package(Boost REQUIRED mpi serialization)
include_directories(${Boost_INCLUDE_DIR})
file(GLOB mem_src "${CMAKE_SOURCE_DIR}/avail_mem.cpp")
### ADD YOUR EXECUTABLE(s) HERE
### add_executable( EXECUTABLE-NAME SOURCES )
###
### EXAMPLE:
#add_executable( demo-logistic demo-logistic.cpp )
add_executable( demo-chi2 demo-chi2.cpp ${mem_src})
target_link_libraries(demo-chi2 Boost::serialization Boost::mpi ${MPI_CXX_LIBRARIES}) #libplinkio)

View File

@ -0,0 +1,108 @@
Copyright (c) 2020 Duality Technologies, Inc.
Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License <https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode>
See the LICENSE file for the full text of the license.
If you share the Licensed Material (including in modified form) you must include the above attribution in the copy you share.
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
Section 1 Definitions.
Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
BY-NC-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License.
Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike.
Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
Licensor means the individual(s) or entity(ies) granting rights under this Public License.
NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
Section 2 Scope.
License grant.
Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and
produce, reproduce, and Share Adapted Material for NonCommercial purposes only.
Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
Term. The term of this Public License is specified in Section 6(a).
Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
Downstream recipients.
Offer from the Licensor Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
Additional offer from the Licensor Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapters License You apply.
No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
Other rights.
Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
Patent and trademark rights are not licensed under this Public License.
To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes.
Section 3 License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
Attribution.
If You Share the Licensed Material (including in modified form), You must:
retain the following if it is supplied by the Licensor with the Licensed Material:
identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
a copyright notice;
a notice that refers to this Public License;
a notice that refers to the disclaimer of warranties;
a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
ShareAlike.
In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.
The Adapters License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License.
You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material.
You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply.
Section 4 Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only;
if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and
You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
Section 5 Disclaimer of Warranties and Limitation of Liability.
Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
Section 6 Term and Termination.
This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
Section 7 Other Terms and Conditions.
The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
Section 8 Interpretation.
For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.

View File

@ -0,0 +1 @@
set (CMAKE_GENERATOR "Unix Makefiles" CACHE INTERNAL "" FORCE)

View File

@ -0,0 +1,49 @@
GWAS Research Prototypes using Homomorphic Encryption
=====================================
This gitlab repository includes the implementation of Logistic Regression Approximation (LRA) and Chi-Square GWAS protocols described in
"Secure large-scale genome-wide association studies using homomorphic encryption"
by Marcelo Blatt, Alexander Gusev, Yuriy Polyakov, and Shafi Goldwasser.
The repo includes the following files:
* demo-logistic.cpp - research prototype for the LRA protocol.
* demo-chi2.cpp - research prototype for the Chi-Square protocol.
* data/random_sample.csv - an artificial random data set including 3 features, 200 individuals, and 16,384 SNPs (provided solely for demonstration purposes).
Notes on Compatibility with Different Versions of PALISADE
=====================================
The code in the master branch works in PALISADE v1.7 - 1.9. If you need to run this code in v1.10 and later, please use the branch called `updated-to-v1.10`.
How to Build and Run the Prototypes
=====================================
1. Install PALISADE v1.7 - 1.9, e.g., v1.9.1 from [PALISADE Development Repository](https://gitlab.com/palisade/palisade-development/-/tree/release-v1.9.1). Follow the instructions provided in [README.md](https://gitlab.com/palisade/palisade-development/-/blob/release-v1.9.1/README.md).
2. Clone this repository to a local directory and switch to this directory.
3. Create a directory where the binaries will be built. The typical choice is a subfolder "build". In this case, run the following commands:
```
mkdir build
cd build
cmake ..
make
```
4. Run the following command to execute the LRA prototype (change sample size and number of SNPs as needed):
```
./demo-logistic --SNPdir "../data" --SNPfilename "random_sample" --pvalue "pvalue.txt" --runtime "result.txt" --samplesize="200" --snps="16384"
```
or
Run the following command to execute the Chi-Square prototype (change sample size and number of SNPs as needed):
```
./demo-chi2 --SNPdir "../data" --SNPfilename "random_sample" --pvalue "pvalue.txt" --runtime "result.txt" --samplesize="200" --snps="16384"
```
5. The results will be written to the "data" folder. The following output files will be created for both prototypes:
* pvalue.txt - p-values for each SNP
* result.txt - runtime metrics
Additional files with outputs of protocol-specific statistics will also be created.

View File

@ -0,0 +1,75 @@
#include <unistd.h>
#include <ios>
#include <iostream>
#include <fstream>
#include <string>
#include "avail_mem.h"
//////////////////////////////////////////////////////////////////////////////
//
// process_mem_usage(double &, double &) - takes two doubles by reference,
// attempts to read the system-dependent data for a process' virtual memory
// size and resident set size, and return the results in KB.
//
// On failure, returns 0.0, 0.0
void process_mem_usage(double& vm_usage, double& resident_set)
{
using std::ios_base;
using std::ifstream;
using std::string;
vm_usage = 0.0;
resident_set = 0.0;
// 'file' stat seems to give the most reliable results
//
ifstream stat_stream("/proc/self/stat",ios_base::in);
// dummy vars for leading entries in stat that we don't care about
//
string pid, comm, state, ppid, pgrp, session, tty_nr;
string tpgid, flags, minflt, cminflt, majflt, cmajflt;
string utime, stime, cutime, cstime, priority, nice;
string O, itrealvalue, starttime;
// the two fields we want
//
unsigned long vsize;
long rss;
stat_stream >> pid >> comm >> state >> ppid >> pgrp >> session >> tty_nr
>> tpgid >> flags >> minflt >> cminflt >> majflt >> cmajflt
>> utime >> stime >> cutime >> cstime >> priority >> nice
>> O >> itrealvalue >> starttime >> vsize >> rss; // don't care about the rest
stat_stream.close();
long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; // in case x86-64 is configured to use 2MB pages
vm_usage = vsize / 1024.0;
resident_set = rss * page_size_kb;
}
unsigned long long getTotalSystemMemory()
{
long pages = sysconf(_SC_PHYS_PAGES);
long page_size = sysconf(_SC_PAGE_SIZE);
return pages * page_size;
}
double get_alpha()
{
using std::cout;
using std::endl;
double vm, rss, alpha;
//vm and rss are KB
process_mem_usage(vm, rss);
//tot_mem is B
unsigned long long tot_mem = getTotalSystemMemory();
auto percent = (rss*1024)/tot_mem;
//cout << "Percent: " << percent << endl;
//cout << "VM: " << vm << "; RSS: " << rss << endl;
alpha = percent;
return alpha;
}

View File

@ -0,0 +1,8 @@
#ifndef _AVAIL_MEM_H
#define _AVAIL_MEM_H
void process_mem_usage(double& vm_usage, double& resident_set);
unsigned long long getTotalSystemMemory();
double get_alpha();
#endif

View File

@ -0,0 +1,466 @@
# This is the CMakeCache file.
# For build in directory: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build
# It was generated by CMake: /usr/bin/cmake
# You can edit this file to change values found and used by cmake.
# If you do not want to change any of the values, simply exit the editor.
# If you do want to change a value, simply edit, save, and exit the editor.
# The syntax for the file is as follows:
# KEY:TYPE=VALUE
# KEY is the name of a variable in the cache.
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
# VALUE is the current value for the KEY.
########################
# EXTERNAL cache entries
########################
//The directory containing a CMake configuration file for Boost.
Boost_DIR:PATH=/usr/lib/cmake/Boost-1.80.0
//Path to a file.
Boost_INCLUDE_DIR:PATH=/usr/include
Boost_MPI_LIBRARY_RELEASE:STRING=/usr/lib/libboost_mpi.so.1.80.0
Boost_SERIALIZATION_LIBRARY_RELEASE:STRING=/usr/lib/libboost_serialization.so.1.80.0
//Path to a program.
CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line
//Path to a program.
CMAKE_AR:FILEPATH=/usr/bin/ar
//Choose the type of build, options are: None Debug Release RelWithDebInfo
// MinSizeRel ...
CMAKE_BUILD_TYPE:STRING=
//Enable/Disable color output during build.
CMAKE_COLOR_MAKEFILE:BOOL=ON
//CXX compiler
CMAKE_CXX_COMPILER:STRING=/usr/bin/c++
//A wrapper around 'ar' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
// for the GCC compiler
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib
//Flags used by the CXX compiler during all build types.
CMAKE_CXX_FLAGS:STRING=
//Flags used by the CXX compiler during DEBUG builds.
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
//Flags used by the CXX compiler during MINSIZEREL builds.
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
//Flags used by the CXX compiler during RELEASE builds.
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
//Flags used by the CXX compiler during RELWITHDEBINFO builds.
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
//Path to a program.
CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
//Flags used by the linker during all build types.
CMAKE_EXE_LINKER_FLAGS:STRING=
//Flags used by the linker during DEBUG builds.
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during MINSIZEREL builds.
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during RELEASE builds.
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during RELWITHDEBINFO builds.
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Enable/Disable output of compile commands during generation.
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=
//Value Computed by CMake.
CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/pkgRedirects
//Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=/usr/local
//Path to a program.
CMAKE_LINKER:FILEPATH=/usr/bin/ld
//Path to a program.
CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
//Flags used by the linker during the creation of modules during
// all build types.
CMAKE_MODULE_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of modules during
// DEBUG builds.
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of modules during
// MINSIZEREL builds.
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of modules during
// RELEASE builds.
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of modules during
// RELWITHDEBINFO builds.
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Path to a program.
CMAKE_NM:FILEPATH=/usr/bin/nm
//Path to a program.
CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
//Path to a program.
CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
//Value Computed by CMake
CMAKE_PROJECT_DESCRIPTION:STATIC=
//Value Computed by CMake
CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
//Value Computed by CMake
CMAKE_PROJECT_NAME:STATIC=demo
//Path to a program.
CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
//Path to a program.
CMAKE_READELF:FILEPATH=/usr/bin/readelf
//Flags used by the linker during the creation of shared libraries
// during all build types.
CMAKE_SHARED_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of shared libraries
// during DEBUG builds.
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of shared libraries
// during MINSIZEREL builds.
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of shared libraries
// during RELEASE builds.
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of shared libraries
// during RELWITHDEBINFO builds.
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//If set, runtime paths are not added when installing shared libraries,
// but are added when building.
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
//If set, runtime paths are not added when using shared libraries.
CMAKE_SKIP_RPATH:BOOL=NO
//Flags used by the linker during the creation of static libraries
// during all build types.
CMAKE_STATIC_LINKER_FLAGS:STRING=
//Flags used by the linker during the creation of static libraries
// during DEBUG builds.
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
//Flags used by the linker during the creation of static libraries
// during MINSIZEREL builds.
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
//Flags used by the linker during the creation of static libraries
// during RELEASE builds.
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
//Flags used by the linker during the creation of static libraries
// during RELWITHDEBINFO builds.
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
//Path to a program.
CMAKE_STRIP:FILEPATH=/usr/bin/strip
//If this value is on, makefiles will be generated without the
// .SILENT directive, and all commands will be echoed to the console
// during the make. This is useful for debugging only. With Visual
// Studio IDE projects all commands are done without /nologo.
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
//Executable for running MPI programs.
MPIEXEC_EXECUTABLE:FILEPATH=/usr/bin/mpiexec
//Maximum number of processors available to run MPI applications.
MPIEXEC_MAX_NUMPROCS:STRING=2
//Flag used by MPI to specify the number of processes for mpiexec;
// the next option will be the number of processes.
MPIEXEC_NUMPROC_FLAG:STRING=-n
//These flags will be placed after all flags passed to mpiexec.
MPIEXEC_POSTFLAGS:STRING=
//These flags will be directly before the executable that is being
// run by mpiexec.
MPIEXEC_PREFLAGS:STRING=
//MPI CXX additional include directories
MPI_CXX_ADDITIONAL_INCLUDE_DIRS:STRING=
//MPI compiler for CXX
MPI_CXX_COMPILER:FILEPATH=/usr/bin/mpicxx
//MPI CXX compiler wrapper include directories
MPI_CXX_COMPILER_INCLUDE_DIRS:STRING=
//MPI CXX compilation definitions
MPI_CXX_COMPILE_DEFINITIONS:STRING=
//MPI CXX compilation options
MPI_CXX_COMPILE_OPTIONS:STRING=
//Path to a file.
MPI_CXX_HEADER_DIR:PATH=/usr/include
//MPI CXX libraries to link against
MPI_CXX_LIB_NAMES:STRING=mpi_cxx;mpi
//MPI CXX linker flags
MPI_CXX_LINK_FLAGS:STRING=-Wl,-rpath -Wl,/usr/lib -Wl,--enable-new-dtags
//If true, the MPI-2 C++ bindings are disabled using definitions.
MPI_CXX_SKIP_MPICXX:BOOL=OFF
//Location of the mpi library for MPI
MPI_mpi_LIBRARY:FILEPATH=/usr/lib/libmpi.so
//Location of the mpi_cxx library for MPI
MPI_mpi_cxx_LIBRARY:FILEPATH=/usr/lib/libmpi_cxx.so
//Arguments to supply to pkg-config
PKG_CONFIG_ARGN:STRING=
//pkg-config executable
PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config
//The directory containing a CMake configuration file for Palisade.
Palisade_DIR:PATH=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build
//The directory containing a CMake configuration file for boost_headers.
boost_headers_DIR:PATH=/usr/lib/cmake/boost_headers-1.80.0
//The directory containing a CMake configuration file for boost_mpi.
boost_mpi_DIR:PATH=/usr/lib/cmake/boost_mpi-1.80.0
//The directory containing a CMake configuration file for boost_serialization.
boost_serialization_DIR:PATH=/usr/lib/cmake/boost_serialization-1.80.0
//Value Computed by CMake
demo_BINARY_DIR:STATIC=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build
//Value Computed by CMake
demo_IS_TOP_LEVEL:STATIC=ON
//Value Computed by CMake
demo_SOURCE_DIR:STATIC=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS
//The directory containing a CMake configuration file for libplinkio.
libplinkio_DIR:PATH=libplinkio_DIR-NOTFOUND
########################
# INTERNAL cache entries
########################
//ADVANCED property for variable: Boost_DIR
Boost_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_ADDR2LINE
CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_AR
CMAKE_AR-ADVANCED:INTERNAL=1
//This is the directory where this CMakeCache.txt was created
CMAKE_CACHEFILE_DIR:INTERNAL=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build
//Major version of cmake used to create the current loaded cache
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
//Minor version of cmake used to create the current loaded cache
CMAKE_CACHE_MINOR_VERSION:INTERNAL=25
//Patch version of cmake used to create the current loaded cache
CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
//Path to CMake executable.
CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
//Path to cpack program executable.
CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
//Path to ctest program executable.
CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest
//ADVANCED property for variable: CMAKE_CXX_COMPILER
CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR
CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB
CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_DLLTOOL
CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
//Path to cache edit program executable.
CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/ccmake
//Executable file format
CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
CMAKE_GENERATOR:INTERNAL=Unix Makefiles
//Generator instance identifier.
CMAKE_GENERATOR_INSTANCE:INTERNAL=
//Name of generator platform.
CMAKE_GENERATOR_PLATFORM:INTERNAL=
//Name of generator toolset.
CMAKE_GENERATOR_TOOLSET:INTERNAL=
//Source directory with the top level CMakeLists.txt file for this
// project
CMAKE_HOME_DIRECTORY:INTERNAL=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS
//Install .so files without execute permission.
CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
//ADVANCED property for variable: CMAKE_LINKER
CMAKE_LINKER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_NM
CMAKE_NM-ADVANCED:INTERNAL=1
//number of local generators
CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
//ADVANCED property for variable: CMAKE_OBJCOPY
CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_OBJDUMP
CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
//Platform information initialized
CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
//ADVANCED property for variable: CMAKE_RANLIB
CMAKE_RANLIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_READELF
CMAKE_READELF-ADVANCED:INTERNAL=1
//Path to CMake installation.
CMAKE_ROOT:INTERNAL=/usr/share/cmake
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_RPATH
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_STRIP
CMAKE_STRIP-ADVANCED:INTERNAL=1
//uname command
CMAKE_UNAME:INTERNAL=/usr/bin/uname
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
//Details about finding Boost
FIND_PACKAGE_MESSAGE_DETAILS_Boost:INTERNAL=[/usr/lib/cmake/Boost-1.80.0/BoostConfig.cmake][cfound components: mpi serialization ][v1.80.0()]
//Details about finding MPI
FIND_PACKAGE_MESSAGE_DETAILS_MPI:INTERNAL=[TRUE][c ][v3.1()]
//Details about finding MPI_CXX
FIND_PACKAGE_MESSAGE_DETAILS_MPI_CXX:INTERNAL=[/usr/lib/libmpi_cxx.so][/usr/lib/libmpi.so][mpi_cxx;mpi][/usr/include][TRUE][v3.1()]
//ADVANCED property for variable: MPIEXEC_EXECUTABLE
MPIEXEC_EXECUTABLE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPIEXEC_MAX_NUMPROCS
MPIEXEC_MAX_NUMPROCS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPIEXEC_NUMPROC_FLAG
MPIEXEC_NUMPROC_FLAG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPIEXEC_POSTFLAGS
MPIEXEC_POSTFLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPIEXEC_PREFLAGS
MPIEXEC_PREFLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_ADDITIONAL_INCLUDE_DIRS
MPI_CXX_ADDITIONAL_INCLUDE_DIRS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_COMPILER
MPI_CXX_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_COMPILER_INCLUDE_DIRS
MPI_CXX_COMPILER_INCLUDE_DIRS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_COMPILE_DEFINITIONS
MPI_CXX_COMPILE_DEFINITIONS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_COMPILE_OPTIONS
MPI_CXX_COMPILE_OPTIONS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_HEADER_DIR
MPI_CXX_HEADER_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_LIB_NAMES
MPI_CXX_LIB_NAMES-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_LINK_FLAGS
MPI_CXX_LINK_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_SKIP_MPICXX
MPI_CXX_SKIP_MPICXX-ADVANCED:INTERNAL=1
//Result of TRY_COMPILE
MPI_RESULT_CXX_test_mpi_MPICXX:INTERNAL=TRUE
//Result of TRY_COMPILE
MPI_RESULT_CXX_test_mpi_normal:INTERNAL=TRUE
//ADVANCED property for variable: MPI_mpi_LIBRARY
MPI_mpi_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_mpi_cxx_LIBRARY
MPI_mpi_cxx_LIBRARY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PKG_CONFIG_ARGN
PKG_CONFIG_ARGN-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE
PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1
//linker supports push/pop state
_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE
//ADVANCED property for variable: boost_headers_DIR
boost_headers_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: boost_mpi_DIR
boost_mpi_DIR-ADVANCED:INTERNAL=1
//ADVANCED property for variable: boost_serialization_DIR
boost_serialization_DIR-ADVANCED:INTERNAL=1

View File

@ -0,0 +1,83 @@
set(CMAKE_CXX_COMPILER "/usr/bin/c++")
set(CMAKE_CXX_COMPILER_ARG1 "")
set(CMAKE_CXX_COMPILER_ID "GNU")
set(CMAKE_CXX_COMPILER_VERSION "12.2.0")
set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
set(CMAKE_CXX_COMPILER_WRAPPER "")
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17")
set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON")
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23")
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20")
set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23")
set(CMAKE_CXX_PLATFORM_ID "Linux")
set(CMAKE_CXX_SIMULATE_ID "")
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "")
set(CMAKE_CXX_SIMULATE_VERSION "")
set(CMAKE_AR "/usr/bin/ar")
set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar")
set(CMAKE_RANLIB "/usr/bin/ranlib")
set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib")
set(CMAKE_LINKER "/usr/bin/ld")
set(CMAKE_MT "")
set(CMAKE_COMPILER_IS_GNUCXX 1)
set(CMAKE_CXX_COMPILER_LOADED 1)
set(CMAKE_CXX_COMPILER_WORKS TRUE)
set(CMAKE_CXX_ABI_COMPILED TRUE)
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
set(CMAKE_CXX_COMPILER_ID_RUN 1)
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm)
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
foreach (lang C OBJC OBJCXX)
if (CMAKE_${lang}_COMPILER_ID_RUN)
foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
endforeach()
endif()
endforeach()
set(CMAKE_CXX_LINKER_PREFERENCE 30)
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
# Save compiler ABI information.
set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
set(CMAKE_CXX_COMPILER_ABI "ELF")
set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN")
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
if(CMAKE_CXX_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_CXX_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
endif()
if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/12.2.0;/usr/include/c++/12.2.0/x86_64-pc-linux-gnu;/usr/include/c++/12.2.0/backward;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed;/usr/include")
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0;/usr/lib;/lib")
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")

View File

@ -0,0 +1,15 @@
set(CMAKE_HOST_SYSTEM "Linux-6.0.9-hardened1-1-hardened")
set(CMAKE_HOST_SYSTEM_NAME "Linux")
set(CMAKE_HOST_SYSTEM_VERSION "6.0.9-hardened1-1-hardened")
set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_SYSTEM "Linux-6.0.9-hardened1-1-hardened")
set(CMAKE_SYSTEM_NAME "Linux")
set(CMAKE_SYSTEM_VERSION "6.0.9-hardened1-1-hardened")
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_CROSSCOMPILING "FALSE")
set(CMAKE_SYSTEM_LOADED 1)

View File

@ -0,0 +1,857 @@
/* This source file must have a .cpp extension so that all C++ compilers
recognize the extension without flags. Borland does not know .cxx for
example. */
#ifndef __cplusplus
# error "A C compiler has been selected for C++."
#endif
#if !defined(__has_include)
/* If the compiler does not have __has_include, pretend the answer is
always no. */
# define __has_include(x) 0
#endif
/* Version number components: V=Version, R=Revision, P=Patch
Version date components: YYYY=Year, MM=Month, DD=Day */
#if defined(__COMO__)
# define COMPILER_ID "Comeau"
/* __COMO_VERSION__ = VRR */
# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
#elif defined(__INTEL_COMPILER) || defined(__ICC)
# define COMPILER_ID "Intel"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# if defined(__GNUC__)
# define SIMULATE_ID "GNU"
# endif
/* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
except that a few beta releases use the old format with V=2021. */
# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
# if defined(__INTEL_COMPILER_UPDATE)
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
# else
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
# endif
# else
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
/* The third version component from --version is an update index,
but no macro is provided for it. */
# define COMPILER_VERSION_PATCH DEC(0)
# endif
# if defined(__INTEL_COMPILER_BUILD_DATE)
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
# endif
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# if defined(__GNUC__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
# elif defined(__GNUG__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER)
# define COMPILER_ID "IntelLLVM"
#if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
#endif
#if defined(__GNUC__)
# define SIMULATE_ID "GNU"
#endif
/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
* later. Look for 6 digit vs. 8 digit version number to decide encoding.
* VVVV is no smaller than the current year when a version is released.
*/
#if __INTEL_LLVM_COMPILER < 1000000L
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10)
#else
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000)
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100)
#endif
#if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
#endif
#if defined(__GNUC__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
#elif defined(__GNUG__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
#endif
#if defined(__GNUC_MINOR__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
#endif
#if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
#endif
#elif defined(__PATHCC__)
# define COMPILER_ID "PathScale"
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
# if defined(__PATHCC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
# endif
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
# define COMPILER_ID "Embarcadero"
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
#elif defined(__BORLANDC__)
# define COMPILER_ID "Borland"
/* __BORLANDC__ = 0xVRR */
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
# define COMPILER_ID "Watcom"
/* __WATCOMC__ = VVRR */
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__WATCOMC__)
# define COMPILER_ID "OpenWatcom"
/* __WATCOMC__ = VVRP + 1100 */
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__SUNPRO_CC)
# define COMPILER_ID "SunPro"
# if __SUNPRO_CC >= 0x5100
/* __SUNPRO_CC = 0xVRRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
# else
/* __SUNPRO_CC = 0xVRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
# endif
#elif defined(__HP_aCC)
# define COMPILER_ID "HP"
/* __HP_aCC = VVRRPP */
# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100)
#elif defined(__DECCXX)
# define COMPILER_ID "Compaq"
/* __DECCXX_VER = VVRRTPPPP */
# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100)
# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000)
#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
# define COMPILER_ID "zOS"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__open_xl__) && defined(__clang__)
# define COMPILER_ID "IBMClang"
# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__)
# define COMPILER_VERSION_MINOR DEC(__open_xl_release__)
# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__)
# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__)
#elif defined(__ibmxl__) && defined(__clang__)
# define COMPILER_ID "XLClang"
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
# define COMPILER_ID "XL"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
# define COMPILER_ID "VisualAge"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__NVCOMPILER)
# define COMPILER_ID "NVHPC"
# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__)
# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__)
# if defined(__NVCOMPILER_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__)
# endif
#elif defined(__PGI)
# define COMPILER_ID "PGI"
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
# if defined(__PGIC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
# endif
#elif defined(_CRAYC)
# define COMPILER_ID "Cray"
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
#elif defined(__TI_COMPILER_VERSION__)
# define COMPILER_ID "TI"
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
#elif defined(__CLANG_FUJITSU)
# define COMPILER_ID "FujitsuClang"
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
# define COMPILER_VERSION_INTERNAL_STR __clang_version__
#elif defined(__FUJITSU)
# define COMPILER_ID "Fujitsu"
# if defined(__FCC_version__)
# define COMPILER_VERSION __FCC_version__
# elif defined(__FCC_major__)
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
# endif
# if defined(__fcc_version)
# define COMPILER_VERSION_INTERNAL DEC(__fcc_version)
# elif defined(__FCC_VERSION)
# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION)
# endif
#elif defined(__ghs__)
# define COMPILER_ID "GHS"
/* __GHS_VERSION_NUMBER = VVVVRP */
# ifdef __GHS_VERSION_NUMBER
# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10)
# endif
#elif defined(__TASKING__)
# define COMPILER_ID "Tasking"
# define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000)
# define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100)
# define COMPILER_VERSION_INTERNAL DEC(__VERSION__)
#elif defined(__SCO_VERSION__)
# define COMPILER_ID "SCO"
#elif defined(__ARMCC_VERSION) && !defined(__clang__)
# define COMPILER_ID "ARMCC"
#if __ARMCC_VERSION >= 1000000
/* __ARMCC_VERSION = VRRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#else
/* __ARMCC_VERSION = VRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#endif
#elif defined(__clang__) && defined(__apple_build_version__)
# define COMPILER_ID "AppleClang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
# define COMPILER_ID "ARMClang"
# define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000)
# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
#elif defined(__clang__)
# define COMPILER_ID "Clang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__))
# define COMPILER_ID "LCC"
# define COMPILER_VERSION_MAJOR DEC(1)
# if defined(__LCC__)
# define COMPILER_VERSION_MINOR DEC(__LCC__- 100)
# endif
# if defined(__LCC_MINOR__)
# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__)
# endif
# if defined(__GNUC__) && defined(__GNUC_MINOR__)
# define SIMULATE_ID "GNU"
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
# if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
# endif
#elif defined(__GNUC__) || defined(__GNUG__)
# define COMPILER_ID "GNU"
# if defined(__GNUC__)
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
# else
# define COMPILER_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif defined(_MSC_VER)
# define COMPILER_ID "MSVC"
/* _MSC_VER = VVRR */
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
# if defined(_MSC_FULL_VER)
# if _MSC_VER >= 1400
/* _MSC_FULL_VER = VVRRPPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
# else
/* _MSC_FULL_VER = VVRRPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
# endif
# endif
# if defined(_MSC_BUILD)
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
# endif
#elif defined(_ADI_COMPILER)
# define COMPILER_ID "ADSP"
#if defined(__VERSIONNUM__)
/* __VERSIONNUM__ = 0xVVRRPPTT */
# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF)
# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF)
# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF)
# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF)
#endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# define COMPILER_ID "IAR"
# if defined(__VER__) && defined(__ICCARM__)
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100))
# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# endif
/* These compilers are either not known or too old to define an
identification macro. Try to identify the platform and guess that
it is the native compiler. */
#elif defined(__hpux) || defined(__hpua)
# define COMPILER_ID "HP"
#else /* unknown compiler */
# define COMPILER_ID ""
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
#ifdef SIMULATE_ID
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
#endif
#ifdef __QNXNTO__
char const* qnxnto = "INFO" ":" "qnxnto[]";
#endif
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
#endif
#define STRINGIFY_HELPER(X) #X
#define STRINGIFY(X) STRINGIFY_HELPER(X)
/* Identify known platforms by name. */
#if defined(__linux) || defined(__linux__) || defined(linux)
# define PLATFORM_ID "Linux"
#elif defined(__MSYS__)
# define PLATFORM_ID "MSYS"
#elif defined(__CYGWIN__)
# define PLATFORM_ID "Cygwin"
#elif defined(__MINGW32__)
# define PLATFORM_ID "MinGW"
#elif defined(__APPLE__)
# define PLATFORM_ID "Darwin"
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
# define PLATFORM_ID "Windows"
#elif defined(__FreeBSD__) || defined(__FreeBSD)
# define PLATFORM_ID "FreeBSD"
#elif defined(__NetBSD__) || defined(__NetBSD)
# define PLATFORM_ID "NetBSD"
#elif defined(__OpenBSD__) || defined(__OPENBSD)
# define PLATFORM_ID "OpenBSD"
#elif defined(__sun) || defined(sun)
# define PLATFORM_ID "SunOS"
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
# define PLATFORM_ID "AIX"
#elif defined(__hpux) || defined(__hpux__)
# define PLATFORM_ID "HP-UX"
#elif defined(__HAIKU__)
# define PLATFORM_ID "Haiku"
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
# define PLATFORM_ID "BeOS"
#elif defined(__QNX__) || defined(__QNXNTO__)
# define PLATFORM_ID "QNX"
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
# define PLATFORM_ID "Tru64"
#elif defined(__riscos) || defined(__riscos__)
# define PLATFORM_ID "RISCos"
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
# define PLATFORM_ID "SINIX"
#elif defined(__UNIX_SV__)
# define PLATFORM_ID "UNIX_SV"
#elif defined(__bsdos__)
# define PLATFORM_ID "BSDOS"
#elif defined(_MPRAS) || defined(MPRAS)
# define PLATFORM_ID "MP-RAS"
#elif defined(__osf) || defined(__osf__)
# define PLATFORM_ID "OSF1"
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
# define PLATFORM_ID "SCO_SV"
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
# define PLATFORM_ID "ULTRIX"
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
# define PLATFORM_ID "Xenix"
#elif defined(__WATCOMC__)
# if defined(__LINUX__)
# define PLATFORM_ID "Linux"
# elif defined(__DOS__)
# define PLATFORM_ID "DOS"
# elif defined(__OS2__)
# define PLATFORM_ID "OS2"
# elif defined(__WINDOWS__)
# define PLATFORM_ID "Windows3x"
# elif defined(__VXWORKS__)
# define PLATFORM_ID "VxWorks"
# else /* unknown platform */
# define PLATFORM_ID
# endif
#elif defined(__INTEGRITY)
# if defined(INT_178B)
# define PLATFORM_ID "Integrity178"
# else /* regular Integrity */
# define PLATFORM_ID "Integrity"
# endif
# elif defined(_ADI_COMPILER)
# define PLATFORM_ID "ADSP"
#else /* unknown platform */
# define PLATFORM_ID
#endif
/* For windows compilers MSVC and Intel we can determine
the architecture of the compiler being used. This is because
the compilers do not have flags that can change the architecture,
but rather depend on which compiler is being used
*/
#if defined(_WIN32) && defined(_MSC_VER)
# if defined(_M_IA64)
# define ARCHITECTURE_ID "IA64"
# elif defined(_M_ARM64EC)
# define ARCHITECTURE_ID "ARM64EC"
# elif defined(_M_X64) || defined(_M_AMD64)
# define ARCHITECTURE_ID "x64"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# elif defined(_M_ARM64)
# define ARCHITECTURE_ID "ARM64"
# elif defined(_M_ARM)
# if _M_ARM == 4
# define ARCHITECTURE_ID "ARMV4I"
# elif _M_ARM == 5
# define ARCHITECTURE_ID "ARMV5I"
# else
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
# endif
# elif defined(_M_MIPS)
# define ARCHITECTURE_ID "MIPS"
# elif defined(_M_SH)
# define ARCHITECTURE_ID "SHx"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__WATCOMC__)
# if defined(_M_I86)
# define ARCHITECTURE_ID "I86"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# if defined(__ICCARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__ICCRX__)
# define ARCHITECTURE_ID "RX"
# elif defined(__ICCRH850__)
# define ARCHITECTURE_ID "RH850"
# elif defined(__ICCRL78__)
# define ARCHITECTURE_ID "RL78"
# elif defined(__ICCRISCV__)
# define ARCHITECTURE_ID "RISCV"
# elif defined(__ICCAVR__)
# define ARCHITECTURE_ID "AVR"
# elif defined(__ICC430__)
# define ARCHITECTURE_ID "MSP430"
# elif defined(__ICCV850__)
# define ARCHITECTURE_ID "V850"
# elif defined(__ICC8051__)
# define ARCHITECTURE_ID "8051"
# elif defined(__ICCSTM8__)
# define ARCHITECTURE_ID "STM8"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__ghs__)
# if defined(__PPC64__)
# define ARCHITECTURE_ID "PPC64"
# elif defined(__ppc__)
# define ARCHITECTURE_ID "PPC"
# elif defined(__ARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__x86_64__)
# define ARCHITECTURE_ID "x64"
# elif defined(__i386__)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__TI_COMPILER_VERSION__)
# if defined(__TI_ARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__MSP430__)
# define ARCHITECTURE_ID "MSP430"
# elif defined(__TMS320C28XX__)
# define ARCHITECTURE_ID "TMS320C28x"
# elif defined(__TMS320C6X__) || defined(_TMS320C6X)
# define ARCHITECTURE_ID "TMS320C6x"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
# elif defined(__ADSPSHARC__)
# define ARCHITECTURE_ID "SHARC"
# elif defined(__ADSPBLACKFIN__)
# define ARCHITECTURE_ID "Blackfin"
#elif defined(__TASKING__)
# if defined(__CTC__) || defined(__CPTC__)
# define ARCHITECTURE_ID "TriCore"
# elif defined(__CMCS__)
# define ARCHITECTURE_ID "MCS"
# elif defined(__CARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__CARC__)
# define ARCHITECTURE_ID "ARC"
# elif defined(__C51__)
# define ARCHITECTURE_ID "8051"
# elif defined(__CPCP__)
# define ARCHITECTURE_ID "PCP"
# else
# define ARCHITECTURE_ID ""
# endif
#else
# define ARCHITECTURE_ID
#endif
/* Convert integer to decimal digit literals. */
#define DEC(n) \
('0' + (((n) / 10000000)%10)), \
('0' + (((n) / 1000000)%10)), \
('0' + (((n) / 100000)%10)), \
('0' + (((n) / 10000)%10)), \
('0' + (((n) / 1000)%10)), \
('0' + (((n) / 100)%10)), \
('0' + (((n) / 10)%10)), \
('0' + ((n) % 10))
/* Convert integer to hex digit literals. */
#define HEX(n) \
('0' + ((n)>>28 & 0xF)), \
('0' + ((n)>>24 & 0xF)), \
('0' + ((n)>>20 & 0xF)), \
('0' + ((n)>>16 & 0xF)), \
('0' + ((n)>>12 & 0xF)), \
('0' + ((n)>>8 & 0xF)), \
('0' + ((n)>>4 & 0xF)), \
('0' + ((n) & 0xF))
/* Construct a string literal encoding the version number. */
#ifdef COMPILER_VERSION
char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
/* Construct a string literal encoding the version number components. */
#elif defined(COMPILER_VERSION_MAJOR)
char const info_version[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
COMPILER_VERSION_MAJOR,
# ifdef COMPILER_VERSION_MINOR
'.', COMPILER_VERSION_MINOR,
# ifdef COMPILER_VERSION_PATCH
'.', COMPILER_VERSION_PATCH,
# ifdef COMPILER_VERSION_TWEAK
'.', COMPILER_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct a string literal encoding the internal version number. */
#ifdef COMPILER_VERSION_INTERNAL
char const info_version_internal[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
'i','n','t','e','r','n','a','l','[',
COMPILER_VERSION_INTERNAL,']','\0'};
#elif defined(COMPILER_VERSION_INTERNAL_STR)
char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
#endif
/* Construct a string literal encoding the version number components. */
#ifdef SIMULATE_VERSION_MAJOR
char const info_simulate_version[] = {
'I', 'N', 'F', 'O', ':',
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
SIMULATE_VERSION_MAJOR,
# ifdef SIMULATE_VERSION_MINOR
'.', SIMULATE_VERSION_MINOR,
# ifdef SIMULATE_VERSION_PATCH
'.', SIMULATE_VERSION_PATCH,
# ifdef SIMULATE_VERSION_TWEAK
'.', SIMULATE_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L
# if defined(__INTEL_CXX11_MODE__)
# if defined(__cpp_aggregate_nsdmi)
# define CXX_STD 201402L
# else
# define CXX_STD 201103L
# endif
# else
# define CXX_STD 199711L
# endif
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
# define CXX_STD _MSVC_LANG
#else
# define CXX_STD __cplusplus
#endif
const char* info_language_standard_default = "INFO" ":" "standard_default["
#if CXX_STD > 202002L
"23"
#elif CXX_STD > 201703L
"20"
#elif CXX_STD >= 201703L
"17"
#elif CXX_STD >= 201402L
"14"
#elif CXX_STD >= 201103L
"11"
#else
"98"
#endif
"]";
const char* info_language_extensions_default = "INFO" ":" "extensions_default["
#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \
defined(__TI_COMPILER_VERSION__)) && \
!defined(__STRICT_ANSI__)
"ON"
#else
"OFF"
#endif
"]";
/*--------------------------------------------------------------------------*/
int main(int argc, char* argv[])
{
int require = 0;
require += info_compiler[argc];
require += info_platform[argc];
require += info_arch[argc];
#ifdef COMPILER_VERSION_MAJOR
require += info_version[argc];
#endif
#ifdef COMPILER_VERSION_INTERNAL
require += info_version_internal[argc];
#endif
#ifdef SIMULATE_ID
require += info_simulate[argc];
#endif
#ifdef SIMULATE_VERSION_MAJOR
require += info_simulate_version[argc];
#endif
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
require += info_cray[argc];
#endif
require += info_language_standard_default[argc];
require += info_language_extensions_default[argc];
(void)argv;
return require;
}

View File

@ -0,0 +1,83 @@
set(CMAKE_CXX_COMPILER "/usr/bin/c++")
set(CMAKE_CXX_COMPILER_ARG1 "")
set(CMAKE_CXX_COMPILER_ID "GNU")
set(CMAKE_CXX_COMPILER_VERSION "12.2.0")
set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
set(CMAKE_CXX_COMPILER_WRAPPER "")
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17")
set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON")
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23")
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20")
set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23")
set(CMAKE_CXX_PLATFORM_ID "Linux")
set(CMAKE_CXX_SIMULATE_ID "")
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "")
set(CMAKE_CXX_SIMULATE_VERSION "")
set(CMAKE_AR "/usr/bin/ar")
set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar")
set(CMAKE_RANLIB "/usr/bin/ranlib")
set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib")
set(CMAKE_LINKER "/usr/bin/ld")
set(CMAKE_MT "")
set(CMAKE_COMPILER_IS_GNUCXX 1)
set(CMAKE_CXX_COMPILER_LOADED 1)
set(CMAKE_CXX_COMPILER_WORKS TRUE)
set(CMAKE_CXX_ABI_COMPILED TRUE)
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
set(CMAKE_CXX_COMPILER_ID_RUN 1)
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm)
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
foreach (lang C OBJC OBJCXX)
if (CMAKE_${lang}_COMPILER_ID_RUN)
foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
endforeach()
endif()
endforeach()
set(CMAKE_CXX_LINKER_PREFERENCE 30)
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
# Save compiler ABI information.
set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
set(CMAKE_CXX_COMPILER_ABI "ELF")
set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN")
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
if(CMAKE_CXX_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_CXX_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
endif()
if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/12.2.0;/usr/include/c++/12.2.0/x86_64-pc-linux-gnu;/usr/include/c++/12.2.0/backward;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed;/usr/include")
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0;/usr/lib;/lib")
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")

View File

@ -0,0 +1,15 @@
set(CMAKE_HOST_SYSTEM "Linux-6.0.10-hardened1-1-hardened")
set(CMAKE_HOST_SYSTEM_NAME "Linux")
set(CMAKE_HOST_SYSTEM_VERSION "6.0.10-hardened1-1-hardened")
set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_SYSTEM "Linux-6.0.10-hardened1-1-hardened")
set(CMAKE_SYSTEM_NAME "Linux")
set(CMAKE_SYSTEM_VERSION "6.0.10-hardened1-1-hardened")
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_CROSSCOMPILING "FALSE")
set(CMAKE_SYSTEM_LOADED 1)

View File

@ -0,0 +1,857 @@
/* This source file must have a .cpp extension so that all C++ compilers
recognize the extension without flags. Borland does not know .cxx for
example. */
#ifndef __cplusplus
# error "A C compiler has been selected for C++."
#endif
#if !defined(__has_include)
/* If the compiler does not have __has_include, pretend the answer is
always no. */
# define __has_include(x) 0
#endif
/* Version number components: V=Version, R=Revision, P=Patch
Version date components: YYYY=Year, MM=Month, DD=Day */
#if defined(__COMO__)
# define COMPILER_ID "Comeau"
/* __COMO_VERSION__ = VRR */
# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
#elif defined(__INTEL_COMPILER) || defined(__ICC)
# define COMPILER_ID "Intel"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# if defined(__GNUC__)
# define SIMULATE_ID "GNU"
# endif
/* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later,
except that a few beta releases use the old format with V=2021. */
# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
# if defined(__INTEL_COMPILER_UPDATE)
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
# else
# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
# endif
# else
# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER)
# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE)
/* The third version component from --version is an update index,
but no macro is provided for it. */
# define COMPILER_VERSION_PATCH DEC(0)
# endif
# if defined(__INTEL_COMPILER_BUILD_DATE)
/* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
# endif
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# if defined(__GNUC__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
# elif defined(__GNUG__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER)
# define COMPILER_ID "IntelLLVM"
#if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
#endif
#if defined(__GNUC__)
# define SIMULATE_ID "GNU"
#endif
/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and
* later. Look for 6 digit vs. 8 digit version number to decide encoding.
* VVVV is no smaller than the current year when a version is released.
*/
#if __INTEL_LLVM_COMPILER < 1000000L
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100)
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10)
#else
# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000)
# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100)
#endif
#if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
#endif
#if defined(__GNUC__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
#elif defined(__GNUG__)
# define SIMULATE_VERSION_MAJOR DEC(__GNUG__)
#endif
#if defined(__GNUC_MINOR__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
#endif
#if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
#endif
#elif defined(__PATHCC__)
# define COMPILER_ID "PathScale"
# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
# if defined(__PATHCC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
# endif
#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
# define COMPILER_ID "Embarcadero"
# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
#elif defined(__BORLANDC__)
# define COMPILER_ID "Borland"
/* __BORLANDC__ = 0xVRR */
# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
# define COMPILER_ID "Watcom"
/* __WATCOMC__ = VVRR */
# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__WATCOMC__)
# define COMPILER_ID "OpenWatcom"
/* __WATCOMC__ = VVRP + 1100 */
# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
# if (__WATCOMC__ % 10) > 0
# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
# endif
#elif defined(__SUNPRO_CC)
# define COMPILER_ID "SunPro"
# if __SUNPRO_CC >= 0x5100
/* __SUNPRO_CC = 0xVRRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
# else
/* __SUNPRO_CC = 0xVRP */
# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
# endif
#elif defined(__HP_aCC)
# define COMPILER_ID "HP"
/* __HP_aCC = VVRRPP */
# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100)
#elif defined(__DECCXX)
# define COMPILER_ID "Compaq"
/* __DECCXX_VER = VVRRTPPPP */
# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100)
# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000)
#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
# define COMPILER_ID "zOS"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__open_xl__) && defined(__clang__)
# define COMPILER_ID "IBMClang"
# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__)
# define COMPILER_VERSION_MINOR DEC(__open_xl_release__)
# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__)
# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__)
#elif defined(__ibmxl__) && defined(__clang__)
# define COMPILER_ID "XLClang"
# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__)
# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__)
# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__)
# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__)
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
# define COMPILER_ID "XL"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
# define COMPILER_ID "VisualAge"
/* __IBMCPP__ = VRP */
# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
#elif defined(__NVCOMPILER)
# define COMPILER_ID "NVHPC"
# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__)
# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__)
# if defined(__NVCOMPILER_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__)
# endif
#elif defined(__PGI)
# define COMPILER_ID "PGI"
# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
# if defined(__PGIC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
# endif
#elif defined(_CRAYC)
# define COMPILER_ID "Cray"
# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
#elif defined(__TI_COMPILER_VERSION__)
# define COMPILER_ID "TI"
/* __TI_COMPILER_VERSION__ = VVVRRRPPP */
# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
#elif defined(__CLANG_FUJITSU)
# define COMPILER_ID "FujitsuClang"
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
# define COMPILER_VERSION_INTERNAL_STR __clang_version__
#elif defined(__FUJITSU)
# define COMPILER_ID "Fujitsu"
# if defined(__FCC_version__)
# define COMPILER_VERSION __FCC_version__
# elif defined(__FCC_major__)
# define COMPILER_VERSION_MAJOR DEC(__FCC_major__)
# define COMPILER_VERSION_MINOR DEC(__FCC_minor__)
# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__)
# endif
# if defined(__fcc_version)
# define COMPILER_VERSION_INTERNAL DEC(__fcc_version)
# elif defined(__FCC_VERSION)
# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION)
# endif
#elif defined(__ghs__)
# define COMPILER_ID "GHS"
/* __GHS_VERSION_NUMBER = VVVVRP */
# ifdef __GHS_VERSION_NUMBER
# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100)
# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10)
# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10)
# endif
#elif defined(__TASKING__)
# define COMPILER_ID "Tasking"
# define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000)
# define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100)
# define COMPILER_VERSION_INTERNAL DEC(__VERSION__)
#elif defined(__SCO_VERSION__)
# define COMPILER_ID "SCO"
#elif defined(__ARMCC_VERSION) && !defined(__clang__)
# define COMPILER_ID "ARMCC"
#if __ARMCC_VERSION >= 1000000
/* __ARMCC_VERSION = VRRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#else
/* __ARMCC_VERSION = VRPPPP */
# define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
# define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
# define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
#endif
#elif defined(__clang__) && defined(__apple_build_version__)
# define COMPILER_ID "AppleClang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION)
# define COMPILER_ID "ARMClang"
# define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000)
# define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100)
# define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000)
# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION)
#elif defined(__clang__)
# define COMPILER_ID "Clang"
# if defined(_MSC_VER)
# define SIMULATE_ID "MSVC"
# endif
# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
# if defined(_MSC_VER)
/* _MSC_VER = VVRR */
# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
# endif
#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__))
# define COMPILER_ID "LCC"
# define COMPILER_VERSION_MAJOR DEC(1)
# if defined(__LCC__)
# define COMPILER_VERSION_MINOR DEC(__LCC__- 100)
# endif
# if defined(__LCC_MINOR__)
# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__)
# endif
# if defined(__GNUC__) && defined(__GNUC_MINOR__)
# define SIMULATE_ID "GNU"
# define SIMULATE_VERSION_MAJOR DEC(__GNUC__)
# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__)
# if defined(__GNUC_PATCHLEVEL__)
# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
# endif
#elif defined(__GNUC__) || defined(__GNUG__)
# define COMPILER_ID "GNU"
# if defined(__GNUC__)
# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
# else
# define COMPILER_VERSION_MAJOR DEC(__GNUG__)
# endif
# if defined(__GNUC_MINOR__)
# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
# endif
# if defined(__GNUC_PATCHLEVEL__)
# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
# endif
#elif defined(_MSC_VER)
# define COMPILER_ID "MSVC"
/* _MSC_VER = VVRR */
# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
# if defined(_MSC_FULL_VER)
# if _MSC_VER >= 1400
/* _MSC_FULL_VER = VVRRPPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
# else
/* _MSC_FULL_VER = VVRRPPPP */
# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
# endif
# endif
# if defined(_MSC_BUILD)
# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
# endif
#elif defined(_ADI_COMPILER)
# define COMPILER_ID "ADSP"
#if defined(__VERSIONNUM__)
/* __VERSIONNUM__ = 0xVVRRPPTT */
# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF)
# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF)
# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF)
# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF)
#endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# define COMPILER_ID "IAR"
# if defined(__VER__) && defined(__ICCARM__)
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000)
# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000)
# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__))
# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100)
# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100))
# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__)
# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__)
# endif
/* These compilers are either not known or too old to define an
identification macro. Try to identify the platform and guess that
it is the native compiler. */
#elif defined(__hpux) || defined(__hpua)
# define COMPILER_ID "HP"
#else /* unknown compiler */
# define COMPILER_ID ""
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
#ifdef SIMULATE_ID
char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
#endif
#ifdef __QNXNTO__
char const* qnxnto = "INFO" ":" "qnxnto[]";
#endif
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
#endif
#define STRINGIFY_HELPER(X) #X
#define STRINGIFY(X) STRINGIFY_HELPER(X)
/* Identify known platforms by name. */
#if defined(__linux) || defined(__linux__) || defined(linux)
# define PLATFORM_ID "Linux"
#elif defined(__MSYS__)
# define PLATFORM_ID "MSYS"
#elif defined(__CYGWIN__)
# define PLATFORM_ID "Cygwin"
#elif defined(__MINGW32__)
# define PLATFORM_ID "MinGW"
#elif defined(__APPLE__)
# define PLATFORM_ID "Darwin"
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
# define PLATFORM_ID "Windows"
#elif defined(__FreeBSD__) || defined(__FreeBSD)
# define PLATFORM_ID "FreeBSD"
#elif defined(__NetBSD__) || defined(__NetBSD)
# define PLATFORM_ID "NetBSD"
#elif defined(__OpenBSD__) || defined(__OPENBSD)
# define PLATFORM_ID "OpenBSD"
#elif defined(__sun) || defined(sun)
# define PLATFORM_ID "SunOS"
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
# define PLATFORM_ID "AIX"
#elif defined(__hpux) || defined(__hpux__)
# define PLATFORM_ID "HP-UX"
#elif defined(__HAIKU__)
# define PLATFORM_ID "Haiku"
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
# define PLATFORM_ID "BeOS"
#elif defined(__QNX__) || defined(__QNXNTO__)
# define PLATFORM_ID "QNX"
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
# define PLATFORM_ID "Tru64"
#elif defined(__riscos) || defined(__riscos__)
# define PLATFORM_ID "RISCos"
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
# define PLATFORM_ID "SINIX"
#elif defined(__UNIX_SV__)
# define PLATFORM_ID "UNIX_SV"
#elif defined(__bsdos__)
# define PLATFORM_ID "BSDOS"
#elif defined(_MPRAS) || defined(MPRAS)
# define PLATFORM_ID "MP-RAS"
#elif defined(__osf) || defined(__osf__)
# define PLATFORM_ID "OSF1"
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
# define PLATFORM_ID "SCO_SV"
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
# define PLATFORM_ID "ULTRIX"
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
# define PLATFORM_ID "Xenix"
#elif defined(__WATCOMC__)
# if defined(__LINUX__)
# define PLATFORM_ID "Linux"
# elif defined(__DOS__)
# define PLATFORM_ID "DOS"
# elif defined(__OS2__)
# define PLATFORM_ID "OS2"
# elif defined(__WINDOWS__)
# define PLATFORM_ID "Windows3x"
# elif defined(__VXWORKS__)
# define PLATFORM_ID "VxWorks"
# else /* unknown platform */
# define PLATFORM_ID
# endif
#elif defined(__INTEGRITY)
# if defined(INT_178B)
# define PLATFORM_ID "Integrity178"
# else /* regular Integrity */
# define PLATFORM_ID "Integrity"
# endif
# elif defined(_ADI_COMPILER)
# define PLATFORM_ID "ADSP"
#else /* unknown platform */
# define PLATFORM_ID
#endif
/* For windows compilers MSVC and Intel we can determine
the architecture of the compiler being used. This is because
the compilers do not have flags that can change the architecture,
but rather depend on which compiler is being used
*/
#if defined(_WIN32) && defined(_MSC_VER)
# if defined(_M_IA64)
# define ARCHITECTURE_ID "IA64"
# elif defined(_M_ARM64EC)
# define ARCHITECTURE_ID "ARM64EC"
# elif defined(_M_X64) || defined(_M_AMD64)
# define ARCHITECTURE_ID "x64"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# elif defined(_M_ARM64)
# define ARCHITECTURE_ID "ARM64"
# elif defined(_M_ARM)
# if _M_ARM == 4
# define ARCHITECTURE_ID "ARMV4I"
# elif _M_ARM == 5
# define ARCHITECTURE_ID "ARMV5I"
# else
# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
# endif
# elif defined(_M_MIPS)
# define ARCHITECTURE_ID "MIPS"
# elif defined(_M_SH)
# define ARCHITECTURE_ID "SHx"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__WATCOMC__)
# if defined(_M_I86)
# define ARCHITECTURE_ID "I86"
# elif defined(_M_IX86)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
# if defined(__ICCARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__ICCRX__)
# define ARCHITECTURE_ID "RX"
# elif defined(__ICCRH850__)
# define ARCHITECTURE_ID "RH850"
# elif defined(__ICCRL78__)
# define ARCHITECTURE_ID "RL78"
# elif defined(__ICCRISCV__)
# define ARCHITECTURE_ID "RISCV"
# elif defined(__ICCAVR__)
# define ARCHITECTURE_ID "AVR"
# elif defined(__ICC430__)
# define ARCHITECTURE_ID "MSP430"
# elif defined(__ICCV850__)
# define ARCHITECTURE_ID "V850"
# elif defined(__ICC8051__)
# define ARCHITECTURE_ID "8051"
# elif defined(__ICCSTM8__)
# define ARCHITECTURE_ID "STM8"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__ghs__)
# if defined(__PPC64__)
# define ARCHITECTURE_ID "PPC64"
# elif defined(__ppc__)
# define ARCHITECTURE_ID "PPC"
# elif defined(__ARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__x86_64__)
# define ARCHITECTURE_ID "x64"
# elif defined(__i386__)
# define ARCHITECTURE_ID "X86"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
#elif defined(__TI_COMPILER_VERSION__)
# if defined(__TI_ARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__MSP430__)
# define ARCHITECTURE_ID "MSP430"
# elif defined(__TMS320C28XX__)
# define ARCHITECTURE_ID "TMS320C28x"
# elif defined(__TMS320C6X__) || defined(_TMS320C6X)
# define ARCHITECTURE_ID "TMS320C6x"
# else /* unknown architecture */
# define ARCHITECTURE_ID ""
# endif
# elif defined(__ADSPSHARC__)
# define ARCHITECTURE_ID "SHARC"
# elif defined(__ADSPBLACKFIN__)
# define ARCHITECTURE_ID "Blackfin"
#elif defined(__TASKING__)
# if defined(__CTC__) || defined(__CPTC__)
# define ARCHITECTURE_ID "TriCore"
# elif defined(__CMCS__)
# define ARCHITECTURE_ID "MCS"
# elif defined(__CARM__)
# define ARCHITECTURE_ID "ARM"
# elif defined(__CARC__)
# define ARCHITECTURE_ID "ARC"
# elif defined(__C51__)
# define ARCHITECTURE_ID "8051"
# elif defined(__CPCP__)
# define ARCHITECTURE_ID "PCP"
# else
# define ARCHITECTURE_ID ""
# endif
#else
# define ARCHITECTURE_ID
#endif
/* Convert integer to decimal digit literals. */
#define DEC(n) \
('0' + (((n) / 10000000)%10)), \
('0' + (((n) / 1000000)%10)), \
('0' + (((n) / 100000)%10)), \
('0' + (((n) / 10000)%10)), \
('0' + (((n) / 1000)%10)), \
('0' + (((n) / 100)%10)), \
('0' + (((n) / 10)%10)), \
('0' + ((n) % 10))
/* Convert integer to hex digit literals. */
#define HEX(n) \
('0' + ((n)>>28 & 0xF)), \
('0' + ((n)>>24 & 0xF)), \
('0' + ((n)>>20 & 0xF)), \
('0' + ((n)>>16 & 0xF)), \
('0' + ((n)>>12 & 0xF)), \
('0' + ((n)>>8 & 0xF)), \
('0' + ((n)>>4 & 0xF)), \
('0' + ((n) & 0xF))
/* Construct a string literal encoding the version number. */
#ifdef COMPILER_VERSION
char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
/* Construct a string literal encoding the version number components. */
#elif defined(COMPILER_VERSION_MAJOR)
char const info_version[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
COMPILER_VERSION_MAJOR,
# ifdef COMPILER_VERSION_MINOR
'.', COMPILER_VERSION_MINOR,
# ifdef COMPILER_VERSION_PATCH
'.', COMPILER_VERSION_PATCH,
# ifdef COMPILER_VERSION_TWEAK
'.', COMPILER_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct a string literal encoding the internal version number. */
#ifdef COMPILER_VERSION_INTERNAL
char const info_version_internal[] = {
'I', 'N', 'F', 'O', ':',
'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
'i','n','t','e','r','n','a','l','[',
COMPILER_VERSION_INTERNAL,']','\0'};
#elif defined(COMPILER_VERSION_INTERNAL_STR)
char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
#endif
/* Construct a string literal encoding the version number components. */
#ifdef SIMULATE_VERSION_MAJOR
char const info_simulate_version[] = {
'I', 'N', 'F', 'O', ':',
's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
SIMULATE_VERSION_MAJOR,
# ifdef SIMULATE_VERSION_MINOR
'.', SIMULATE_VERSION_MINOR,
# ifdef SIMULATE_VERSION_PATCH
'.', SIMULATE_VERSION_PATCH,
# ifdef SIMULATE_VERSION_TWEAK
'.', SIMULATE_VERSION_TWEAK,
# endif
# endif
# endif
']','\0'};
#endif
/* Construct the string literal in pieces to prevent the source from
getting matched. Store it in a pointer rather than an array
because some compilers will just produce instructions to fill the
array rather than assigning a pointer to a static array. */
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L
# if defined(__INTEL_CXX11_MODE__)
# if defined(__cpp_aggregate_nsdmi)
# define CXX_STD 201402L
# else
# define CXX_STD 201103L
# endif
# else
# define CXX_STD 199711L
# endif
#elif defined(_MSC_VER) && defined(_MSVC_LANG)
# define CXX_STD _MSVC_LANG
#else
# define CXX_STD __cplusplus
#endif
const char* info_language_standard_default = "INFO" ":" "standard_default["
#if CXX_STD > 202002L
"23"
#elif CXX_STD > 201703L
"20"
#elif CXX_STD >= 201703L
"17"
#elif CXX_STD >= 201402L
"14"
#elif CXX_STD >= 201103L
"11"
#else
"98"
#endif
"]";
const char* info_language_extensions_default = "INFO" ":" "extensions_default["
#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \
defined(__TI_COMPILER_VERSION__)) && \
!defined(__STRICT_ANSI__)
"ON"
#else
"OFF"
#endif
"]";
/*--------------------------------------------------------------------------*/
int main(int argc, char* argv[])
{
int require = 0;
require += info_compiler[argc];
require += info_platform[argc];
require += info_arch[argc];
#ifdef COMPILER_VERSION_MAJOR
require += info_version[argc];
#endif
#ifdef COMPILER_VERSION_INTERNAL
require += info_version_internal[argc];
#endif
#ifdef SIMULATE_ID
require += info_simulate[argc];
#endif
#ifdef SIMULATE_VERSION_MAJOR
require += info_simulate_version[argc];
#endif
#if defined(__CRAYXT_COMPUTE_LINUX_TARGET)
require += info_cray[argc];
#endif
require += info_language_standard_default[argc];
require += info_language_extensions_default[argc];
(void)argv;
return require;
}

View File

@ -0,0 +1,16 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.25
# Relative path conversion top directories.
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS")
set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build")
# Force unix paths in dependencies.
set(CMAKE_FORCE_UNIX_PATHS 1)
# The C and CXX include file regular expressions for this directory.
set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})

View File

@ -0,0 +1,422 @@
The system is: Linux - 6.0.9-hardened1-1-hardened - x86_64
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
Compiler: /usr/bin/c++
Build flags:
Id flags:
The output was:
0
Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
The CXX compiler identification is GNU, found in "/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/3.25.0/CompilerIdCXX/a.out"
Detecting CXX compiler ABI info compiled with the following output:
Change Dir: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/CMakeScratch/TryCompile-pQV6u3
Run Build Command(s):/usr/bin/make -f Makefile cmTC_a26ac/fast && /usr/bin/make -f CMakeFiles/cmTC_a26ac.dir/build.make CMakeFiles/cmTC_a26ac.dir/build
make[1]: Entering directory '/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/CMakeScratch/TryCompile-pQV6u3'
Building CXX object CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o
/usr/bin/c++ -v -o CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp
Using built-in specs.
COLLECT_GCC=/usr/bin/c++
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a26ac.dir/'
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_a26ac.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccNDhREi.s
GNU C++17 (GCC) version 12.2.0 (x86_64-pc-linux-gnu)
compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.0-p13, MPC version 1.2.1, isl version isl-0.25-GMP
warning: MPFR header version 4.1.0-p13 differs from library version 4.1.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/x86_64-pc-linux-gnu
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/backward
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include
/usr/local/include
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed
/usr/include
End of search list.
GNU C++17 (GCC) version 12.2.0 (x86_64-pc-linux-gnu)
compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.0-p13, MPC version 1.2.1, isl version isl-0.25-GMP
warning: MPFR header version 4.1.0-p13 differs from library version 4.1.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 402ce889a414e2a3abbbe3146fa0a6cb
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a26ac.dir/'
as -v --64 -o CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccNDhREi.s
GNU assembler version 2.39.0 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.39.0
COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.'
Linking CXX executable cmTC_a26ac
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a26ac.dir/link.txt --verbose=1
/usr/bin/c++ -v CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_a26ac
Using built-in specs.
COLLECT_GCC=/usr/bin/c++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (GCC)
COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_a26ac' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_a26ac.'
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccubyOH1.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_a26ac /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../.. CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crtn.o
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_a26ac' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_a26ac.'
make[1]: Leaving directory '/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/CMakeScratch/TryCompile-pQV6u3'
Parsed CXX implicit include dir info from above output: rv=done
found start of include info
found start of implicit include info
add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0]
add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/x86_64-pc-linux-gnu]
add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/backward]
add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include]
add: [/usr/local/include]
add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed]
add: [/usr/include]
end of search list found
collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0] ==> [/usr/include/c++/12.2.0]
collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/x86_64-pc-linux-gnu] ==> [/usr/include/c++/12.2.0/x86_64-pc-linux-gnu]
collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/backward] ==> [/usr/include/c++/12.2.0/backward]
collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include]
collapse include dir [/usr/local/include] ==> [/usr/local/include]
collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed]
collapse include dir [/usr/include] ==> [/usr/include]
implicit include dirs: [/usr/include/c++/12.2.0;/usr/include/c++/12.2.0/x86_64-pc-linux-gnu;/usr/include/c++/12.2.0/backward;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed;/usr/include]
Parsed CXX implicit link information from above output:
link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)]
ignore line: [Change Dir: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/CMakeScratch/TryCompile-pQV6u3]
ignore line: []
ignore line: [Run Build Command(s):/usr/bin/make -f Makefile cmTC_a26ac/fast && /usr/bin/make -f CMakeFiles/cmTC_a26ac.dir/build.make CMakeFiles/cmTC_a26ac.dir/build]
ignore line: [make[1]: Entering directory '/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/CMakeScratch/TryCompile-pQV6u3']
ignore line: [Building CXX object CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o]
ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp]
ignore line: [Using built-in specs.]
ignore line: [COLLECT_GCC=/usr/bin/c++]
ignore line: [Target: x86_64-pc-linux-gnu]
ignore line: [Configured with: /build/gcc/src/gcc/configure --enable-languages=c c++ ada fortran go lto objc obj-c++ d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror]
ignore line: [Thread model: posix]
ignore line: [Supported LTO compression algorithms: zlib zstd]
ignore line: [gcc version 12.2.0 (GCC) ]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a26ac.dir/']
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_a26ac.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccNDhREi.s]
ignore line: [GNU C++17 (GCC) version 12.2.0 (x86_64-pc-linux-gnu)]
ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.0-p13 MPC version 1.2.1 isl version isl-0.25-GMP]
ignore line: []
ignore line: [warning: MPFR header version 4.1.0-p13 differs from library version 4.1.1.]
ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../x86_64-pc-linux-gnu/include"]
ignore line: [#include "..." search starts here:]
ignore line: [#include <...> search starts here:]
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0]
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/x86_64-pc-linux-gnu]
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/backward]
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include]
ignore line: [ /usr/local/include]
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed]
ignore line: [ /usr/include]
ignore line: [End of search list.]
ignore line: [GNU C++17 (GCC) version 12.2.0 (x86_64-pc-linux-gnu)]
ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.0-p13 MPC version 1.2.1 isl version isl-0.25-GMP]
ignore line: []
ignore line: [warning: MPFR header version 4.1.0-p13 differs from library version 4.1.1.]
ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
ignore line: [Compiler executable checksum: 402ce889a414e2a3abbbe3146fa0a6cb]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a26ac.dir/']
ignore line: [ as -v --64 -o CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccNDhREi.s]
ignore line: [GNU assembler version 2.39.0 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.39.0]
ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/]
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../:/lib/:/usr/lib/]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.']
ignore line: [Linking CXX executable cmTC_a26ac]
ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a26ac.dir/link.txt --verbose=1]
ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_a26ac ]
ignore line: [Using built-in specs.]
ignore line: [COLLECT_GCC=/usr/bin/c++]
ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper]
ignore line: [Target: x86_64-pc-linux-gnu]
ignore line: [Configured with: /build/gcc/src/gcc/configure --enable-languages=c c++ ada fortran go lto objc obj-c++ d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror]
ignore line: [Thread model: posix]
ignore line: [Supported LTO compression algorithms: zlib zstd]
ignore line: [gcc version 12.2.0 (GCC) ]
ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/]
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../:/lib/:/usr/lib/]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_a26ac' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_a26ac.']
link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccubyOH1.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_a26ac /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../.. CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crtn.o]
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/collect2] ==> ignore
arg [-plugin] ==> ignore
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/liblto_plugin.so] ==> ignore
arg [-plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper] ==> ignore
arg [-plugin-opt=-fresolution=/tmp/ccubyOH1.res] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [-plugin-opt=-pass-through=-lc] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [--build-id] ==> ignore
arg [--eh-frame-hdr] ==> ignore
arg [--hash-style=gnu] ==> ignore
arg [-m] ==> ignore
arg [elf_x86_64] ==> ignore
arg [-dynamic-linker] ==> ignore
arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
arg [-pie] ==> ignore
arg [-o] ==> ignore
arg [cmTC_a26ac] ==> ignore
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/Scrt1.o]
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o]
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtbeginS.o]
arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0]
arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib]
arg [-L/lib/../lib] ==> dir [/lib/../lib]
arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../..] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../..]
arg [CMakeFiles/cmTC_a26ac.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
arg [-lstdc++] ==> lib [stdc++]
arg [-lm] ==> lib [m]
arg [-lgcc_s] ==> lib [gcc_s]
arg [-lgcc] ==> lib [gcc]
arg [-lc] ==> lib [c]
arg [-lgcc_s] ==> lib [gcc_s]
arg [-lgcc] ==> lib [gcc]
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtendS.o]
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crtn.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crtn.o]
collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/Scrt1.o] ==> [/usr/lib/Scrt1.o]
collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o] ==> [/usr/lib/crti.o]
collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crtn.o] ==> [/usr/lib/crtn.o]
collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0]
collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib] ==> [/usr/lib]
collapse library dir [/lib/../lib] ==> [/lib]
collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../..] ==> [/usr/lib]
implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc]
implicit objs: [/usr/lib/Scrt1.o;/usr/lib/crti.o;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtbeginS.o;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtendS.o;/usr/lib/crtn.o]
implicit dirs: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0;/usr/lib;/lib]
implicit fwks: []
The system is: Linux - 6.0.10-hardened1-1-hardened - x86_64
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
Compiler: /usr/bin/c++
Build flags:
Id flags:
The output was:
0
Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
The CXX compiler identification is GNU, found in "/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/3.25.1/CompilerIdCXX/a.out"
Detecting CXX compiler ABI info compiled with the following output:
Change Dir: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/CMakeScratch/TryCompile-GsgNaI
Run Build Command(s):/usr/bin/make -f Makefile cmTC_e1de9/fast && /usr/bin/make -f CMakeFiles/cmTC_e1de9.dir/build.make CMakeFiles/cmTC_e1de9.dir/build
make[1]: Entering directory '/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/CMakeScratch/TryCompile-GsgNaI'
Building CXX object CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o
/usr/bin/c++ -v -o CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp
Using built-in specs.
COLLECT_GCC=/usr/bin/c++
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (GCC)
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e1de9.dir/'
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_e1de9.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccLWzns8.s
GNU C++17 (GCC) version 12.2.0 (x86_64-pc-linux-gnu)
compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.0-p13, MPC version 1.2.1, isl version isl-0.25-GMP
warning: MPFR header version 4.1.0-p13 differs from library version 4.1.1-p1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/x86_64-pc-linux-gnu
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/backward
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include
/usr/local/include
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed
/usr/include
End of search list.
GNU C++17 (GCC) version 12.2.0 (x86_64-pc-linux-gnu)
compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.0-p13, MPC version 1.2.1, isl version isl-0.25-GMP
warning: MPFR header version 4.1.0-p13 differs from library version 4.1.1-p1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 402ce889a414e2a3abbbe3146fa0a6cb
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e1de9.dir/'
as -v --64 -o CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccLWzns8.s
GNU assembler version 2.39.0 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.39.0
COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.'
Linking CXX executable cmTC_e1de9
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_e1de9.dir/link.txt --verbose=1
/usr/bin/c++ -v CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_e1de9
Using built-in specs.
COLLECT_GCC=/usr/bin/c++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (GCC)
COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_e1de9' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_e1de9.'
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccZcvyAt.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_e1de9 /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../.. CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crtn.o
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_e1de9' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_e1de9.'
make[1]: Leaving directory '/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/CMakeScratch/TryCompile-GsgNaI'
Parsed CXX implicit include dir info from above output: rv=done
found start of include info
found start of implicit include info
add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0]
add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/x86_64-pc-linux-gnu]
add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/backward]
add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include]
add: [/usr/local/include]
add: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed]
add: [/usr/include]
end of search list found
collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0] ==> [/usr/include/c++/12.2.0]
collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/x86_64-pc-linux-gnu] ==> [/usr/include/c++/12.2.0/x86_64-pc-linux-gnu]
collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/backward] ==> [/usr/include/c++/12.2.0/backward]
collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include]
collapse include dir [/usr/local/include] ==> [/usr/local/include]
collapse include dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed]
collapse include dir [/usr/include] ==> [/usr/include]
implicit include dirs: [/usr/include/c++/12.2.0;/usr/include/c++/12.2.0/x86_64-pc-linux-gnu;/usr/include/c++/12.2.0/backward;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include;/usr/local/include;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed;/usr/include]
Parsed CXX implicit link information from above output:
link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)]
ignore line: [Change Dir: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/CMakeScratch/TryCompile-GsgNaI]
ignore line: []
ignore line: [Run Build Command(s):/usr/bin/make -f Makefile cmTC_e1de9/fast && /usr/bin/make -f CMakeFiles/cmTC_e1de9.dir/build.make CMakeFiles/cmTC_e1de9.dir/build]
ignore line: [make[1]: Entering directory '/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/CMakeScratch/TryCompile-GsgNaI']
ignore line: [Building CXX object CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o]
ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp]
ignore line: [Using built-in specs.]
ignore line: [COLLECT_GCC=/usr/bin/c++]
ignore line: [Target: x86_64-pc-linux-gnu]
ignore line: [Configured with: /build/gcc/src/gcc/configure --enable-languages=c c++ ada fortran go lto objc obj-c++ d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror]
ignore line: [Thread model: posix]
ignore line: [Supported LTO compression algorithms: zlib zstd]
ignore line: [gcc version 12.2.0 (GCC) ]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e1de9.dir/']
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/cc1plus -quiet -v -D_GNU_SOURCE /usr/share/cmake/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_e1de9.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -o /tmp/ccLWzns8.s]
ignore line: [GNU C++17 (GCC) version 12.2.0 (x86_64-pc-linux-gnu)]
ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.0-p13 MPC version 1.2.1 isl version isl-0.25-GMP]
ignore line: []
ignore line: [warning: MPFR header version 4.1.0-p13 differs from library version 4.1.1-p1.]
ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../x86_64-pc-linux-gnu/include"]
ignore line: [#include "..." search starts here:]
ignore line: [#include <...> search starts here:]
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0]
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/x86_64-pc-linux-gnu]
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../include/c++/12.2.0/backward]
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include]
ignore line: [ /usr/local/include]
ignore line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed]
ignore line: [ /usr/include]
ignore line: [End of search list.]
ignore line: [GNU C++17 (GCC) version 12.2.0 (x86_64-pc-linux-gnu)]
ignore line: [ compiled by GNU C version 12.2.0 GMP version 6.2.1 MPFR version 4.1.0-p13 MPC version 1.2.1 isl version isl-0.25-GMP]
ignore line: []
ignore line: [warning: MPFR header version 4.1.0-p13 differs from library version 4.1.1-p1.]
ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
ignore line: [Compiler executable checksum: 402ce889a414e2a3abbbe3146fa0a6cb]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e1de9.dir/']
ignore line: [ as -v --64 -o CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccLWzns8.s]
ignore line: [GNU assembler version 2.39.0 (x86_64-pc-linux-gnu) using BFD version (GNU Binutils) 2.39.0]
ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/]
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../:/lib/:/usr/lib/]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.']
ignore line: [Linking CXX executable cmTC_e1de9]
ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_e1de9.dir/link.txt --verbose=1]
ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_e1de9 ]
ignore line: [Using built-in specs.]
ignore line: [COLLECT_GCC=/usr/bin/c++]
ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper]
ignore line: [Target: x86_64-pc-linux-gnu]
ignore line: [Configured with: /build/gcc/src/gcc/configure --enable-languages=c c++ ada fortran go lto objc obj-c++ d --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-build-config=bootstrap-lto --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-libstdcxx-backtrace --enable-link-serialization=1 --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror]
ignore line: [Thread model: posix]
ignore line: [Supported LTO compression algorithms: zlib zstd]
ignore line: [gcc version 12.2.0 (GCC) ]
ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/]
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../:/lib/:/usr/lib/]
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_e1de9' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_e1de9.']
link line: [ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/collect2 -plugin /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccZcvyAt.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o cmTC_e1de9 /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/Scrt1.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtbeginS.o -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0 -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../.. CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtendS.o /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crtn.o]
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/collect2] ==> ignore
arg [-plugin] ==> ignore
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/liblto_plugin.so] ==> ignore
arg [-plugin-opt=/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper] ==> ignore
arg [-plugin-opt=-fresolution=/tmp/ccZcvyAt.res] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [-plugin-opt=-pass-through=-lc] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
arg [--build-id] ==> ignore
arg [--eh-frame-hdr] ==> ignore
arg [--hash-style=gnu] ==> ignore
arg [-m] ==> ignore
arg [elf_x86_64] ==> ignore
arg [-dynamic-linker] ==> ignore
arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
arg [-pie] ==> ignore
arg [-o] ==> ignore
arg [cmTC_e1de9] ==> ignore
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/Scrt1.o]
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o]
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtbeginS.o]
arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0]
arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib]
arg [-L/lib/../lib] ==> dir [/lib/../lib]
arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
arg [-L/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../..] ==> dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../..]
arg [CMakeFiles/cmTC_e1de9.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
arg [-lstdc++] ==> lib [stdc++]
arg [-lm] ==> lib [m]
arg [-lgcc_s] ==> lib [gcc_s]
arg [-lgcc] ==> lib [gcc]
arg [-lc] ==> lib [c]
arg [-lgcc_s] ==> lib [gcc_s]
arg [-lgcc] ==> lib [gcc]
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtendS.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtendS.o]
arg [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crtn.o] ==> obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crtn.o]
collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/Scrt1.o] ==> [/usr/lib/Scrt1.o]
collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crti.o] ==> [/usr/lib/crti.o]
collapse obj [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib/crtn.o] ==> [/usr/lib/crtn.o]
collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0] ==> [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0]
collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../lib] ==> [/usr/lib]
collapse library dir [/lib/../lib] ==> [/lib]
collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
collapse library dir [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../..] ==> [/usr/lib]
implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc]
implicit objs: [/usr/lib/Scrt1.o;/usr/lib/crti.o;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtbeginS.o;/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/crtendS.o;/usr/lib/crtn.o]
implicit dirs: [/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0;/usr/lib;/lib]
implicit fwks: []

View File

@ -0,0 +1,65 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.25
# The generator used is:
set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
# The top level Makefile was generated from the following files:
set(CMAKE_MAKEFILE_DEPENDS
"CMakeCache.txt"
"/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/CMakeLists.txt"
"CMakeFiles/3.25.1/CMakeCXXCompiler.cmake"
"CMakeFiles/3.25.1/CMakeSystem.cmake"
"/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/PalisadeConfig.cmake"
"/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/PalisadeConfigVersion.cmake"
"/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/PalisadeTargets.cmake"
"/usr/lib/cmake/Boost-1.80.0/BoostConfig.cmake"
"/usr/lib/cmake/Boost-1.80.0/BoostConfigVersion.cmake"
"/usr/lib/cmake/BoostDetectToolset-1.80.0.cmake"
"/usr/lib/cmake/boost_headers-1.80.0/boost_headers-config-version.cmake"
"/usr/lib/cmake/boost_headers-1.80.0/boost_headers-config.cmake"
"/usr/lib/cmake/boost_mpi-1.80.0/boost_mpi-config-version.cmake"
"/usr/lib/cmake/boost_mpi-1.80.0/boost_mpi-config.cmake"
"/usr/lib/cmake/boost_mpi-1.80.0/libboost_mpi-variant-shared.cmake"
"/usr/lib/cmake/boost_mpi-1.80.0/libboost_mpi-variant-static.cmake"
"/usr/lib/cmake/boost_serialization-1.80.0/boost_serialization-config-version.cmake"
"/usr/lib/cmake/boost_serialization-1.80.0/boost_serialization-config.cmake"
"/usr/lib/cmake/boost_serialization-1.80.0/libboost_serialization-variant-shared.cmake"
"/usr/lib/cmake/boost_serialization-1.80.0/libboost_serialization-variant-static.cmake"
"/usr/share/cmake/Modules/CMakeCXXInformation.cmake"
"/usr/share/cmake/Modules/CMakeCommonLanguageInclude.cmake"
"/usr/share/cmake/Modules/CMakeFindDependencyMacro.cmake"
"/usr/share/cmake/Modules/CMakeGenericSystem.cmake"
"/usr/share/cmake/Modules/CMakeInitializeConfigs.cmake"
"/usr/share/cmake/Modules/CMakeLanguageInformation.cmake"
"/usr/share/cmake/Modules/CMakeSystemSpecificInformation.cmake"
"/usr/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake"
"/usr/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
"/usr/share/cmake/Modules/Compiler/GNU-CXX.cmake"
"/usr/share/cmake/Modules/Compiler/GNU.cmake"
"/usr/share/cmake/Modules/FindBoost.cmake"
"/usr/share/cmake/Modules/FindMPI.cmake"
"/usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake"
"/usr/share/cmake/Modules/FindPackageMessage.cmake"
"/usr/share/cmake/Modules/FindPkgConfig.cmake"
"/usr/share/cmake/Modules/Platform/Linux-GNU-CXX.cmake"
"/usr/share/cmake/Modules/Platform/Linux-GNU.cmake"
"/usr/share/cmake/Modules/Platform/Linux.cmake"
"/usr/share/cmake/Modules/Platform/UnixPaths.cmake"
)
# The corresponding makefile is:
set(CMAKE_MAKEFILE_OUTPUTS
"Makefile"
"CMakeFiles/cmake.check_cache"
)
# Byproducts of CMake generate step:
set(CMAKE_MAKEFILE_PRODUCTS
"CMakeFiles/CMakeDirectoryInformation.cmake"
)
# Dependency information for all targets:
set(CMAKE_DEPEND_INFO_FILES
"CMakeFiles/demo-chi2.dir/DependInfo.cmake"
)

View File

@ -0,0 +1,112 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.25
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build
#=============================================================================
# Directory level rules for the build root directory
# The main recursive "all" target.
all: CMakeFiles/demo-chi2.dir/all
.PHONY : all
# The main recursive "preinstall" target.
preinstall:
.PHONY : preinstall
# The main recursive "clean" target.
clean: CMakeFiles/demo-chi2.dir/clean
.PHONY : clean
#=============================================================================
# Target rules for target CMakeFiles/demo-chi2.dir
# All Build rule for target.
CMakeFiles/demo-chi2.dir/all:
$(MAKE) $(MAKESILENT) -f CMakeFiles/demo-chi2.dir/build.make CMakeFiles/demo-chi2.dir/depend
$(MAKE) $(MAKESILENT) -f CMakeFiles/demo-chi2.dir/build.make CMakeFiles/demo-chi2.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles --progress-num=1,2,3 "Built target demo-chi2"
.PHONY : CMakeFiles/demo-chi2.dir/all
# Build rule for subdir invocation for target.
CMakeFiles/demo-chi2.dir/rule: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles 3
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/demo-chi2.dir/all
$(CMAKE_COMMAND) -E cmake_progress_start /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles 0
.PHONY : CMakeFiles/demo-chi2.dir/rule
# Convenience name for target.
demo-chi2: CMakeFiles/demo-chi2.dir/rule
.PHONY : demo-chi2
# clean rule for target.
CMakeFiles/demo-chi2.dir/clean:
$(MAKE) $(MAKESILENT) -f CMakeFiles/demo-chi2.dir/build.make CMakeFiles/demo-chi2.dir/clean
.PHONY : CMakeFiles/demo-chi2.dir/clean
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@ -0,0 +1,3 @@
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/demo-chi2.dir
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/edit_cache.dir
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/rebuild_cache.dir

View File

@ -0,0 +1 @@
# This file is generated by cmake for dependency checking of the CMakeCache.txt file

View File

@ -0,0 +1,20 @@
# Consider dependencies only in project.
set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF)
# The set of languages for which implicit dependencies are needed:
set(CMAKE_DEPENDS_LANGUAGES
)
# The set of dependency files which are needed:
set(CMAKE_DEPENDS_DEPENDENCY_FILES
"/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/avail_mem.cpp" "CMakeFiles/demo-chi2.dir/avail_mem.cpp.o" "gcc" "CMakeFiles/demo-chi2.dir/avail_mem.cpp.o.d"
"/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-chi2.cpp" "CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o" "gcc" "CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o.d"
)
# Targets to which this target links.
set(CMAKE_TARGET_LINKED_INFO_FILES
)
# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")

View File

@ -0,0 +1,151 @@
CMakeFiles/demo-chi2.dir/avail_mem.cpp.o: \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/avail_mem.cpp \
/usr/include/stdc-predef.h /usr/include/unistd.h /usr/include/features.h \
/usr/include/features-time64.h /usr/include/bits/wordsize.h \
/usr/include/bits/timesize.h /usr/include/sys/cdefs.h \
/usr/include/bits/long-double.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h /usr/include/bits/posix_opt.h \
/usr/include/bits/environments.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/bits/time64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \
/usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \
/usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \
/usr/include/linux/close_range.h /usr/include/c++/12.2.0/ios \
/usr/include/c++/12.2.0/iosfwd \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++config.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/os_defines.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h \
/usr/include/c++/12.2.0/pstl/pstl_config.h \
/usr/include/c++/12.2.0/bits/stringfwd.h \
/usr/include/c++/12.2.0/bits/memoryfwd.h \
/usr/include/c++/12.2.0/bits/postypes.h /usr/include/c++/12.2.0/cwchar \
/usr/include/wchar.h /usr/include/bits/libc-header-start.h \
/usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \
/usr/include/bits/wchar.h /usr/include/bits/types/wint_t.h \
/usr/include/bits/types/mbstate_t.h \
/usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \
/usr/include/bits/types/FILE.h /usr/include/bits/types/locale_t.h \
/usr/include/bits/types/__locale_t.h /usr/include/c++/12.2.0/exception \
/usr/include/c++/12.2.0/bits/exception.h \
/usr/include/c++/12.2.0/bits/exception_ptr.h \
/usr/include/c++/12.2.0/bits/exception_defines.h \
/usr/include/c++/12.2.0/bits/cxxabi_init_exception.h \
/usr/include/c++/12.2.0/typeinfo \
/usr/include/c++/12.2.0/bits/hash_bytes.h /usr/include/c++/12.2.0/new \
/usr/include/c++/12.2.0/bits/move.h /usr/include/c++/12.2.0/type_traits \
/usr/include/c++/12.2.0/bits/nested_exception.h \
/usr/include/c++/12.2.0/bits/char_traits.h \
/usr/include/c++/12.2.0/compare /usr/include/c++/12.2.0/concepts \
/usr/include/c++/12.2.0/bits/stl_construct.h \
/usr/include/c++/12.2.0/bits/stl_iterator_base_types.h \
/usr/include/c++/12.2.0/bits/iterator_concepts.h \
/usr/include/c++/12.2.0/bits/ptr_traits.h \
/usr/include/c++/12.2.0/bits/ranges_cmp.h \
/usr/include/c++/12.2.0/bits/stl_iterator_base_funcs.h \
/usr/include/c++/12.2.0/bits/concept_check.h \
/usr/include/c++/12.2.0/debug/assertions.h \
/usr/include/c++/12.2.0/cstdint \
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/stdint-intn.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/c++/12.2.0/bits/localefwd.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++locale.h \
/usr/include/c++/12.2.0/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/c++/12.2.0/cctype \
/usr/include/ctype.h /usr/include/bits/endian.h \
/usr/include/bits/endianness.h /usr/include/c++/12.2.0/bits/ios_base.h \
/usr/include/c++/12.2.0/ext/atomicity.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/gthr.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h \
/usr/include/bits/types/time_t.h \
/usr/include/bits/types/struct_timespec.h /usr/include/bits/sched.h \
/usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \
/usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \
/usr/include/bits/types/struct_timeval.h \
/usr/include/bits/types/clock_t.h /usr/include/bits/types/struct_tm.h \
/usr/include/bits/types/clockid_t.h /usr/include/bits/types/timer_t.h \
/usr/include/bits/types/struct_itimerspec.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
/usr/include/bits/pthreadtypes-arch.h \
/usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \
/usr/include/bits/struct_rwlock.h /usr/include/bits/setjmp.h \
/usr/include/bits/types/__sigset_t.h \
/usr/include/bits/types/struct___jmp_buf_tag.h \
/usr/include/bits/pthread_stack_min-dynamic.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/atomic_word.h \
/usr/include/sys/single_threaded.h \
/usr/include/c++/12.2.0/bits/locale_classes.h \
/usr/include/c++/12.2.0/string /usr/include/c++/12.2.0/bits/allocator.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++allocator.h \
/usr/include/c++/12.2.0/bits/new_allocator.h \
/usr/include/c++/12.2.0/bits/functexcept.h \
/usr/include/c++/12.2.0/bits/cpp_type_traits.h \
/usr/include/c++/12.2.0/bits/ostream_insert.h \
/usr/include/c++/12.2.0/bits/cxxabi_forced.h \
/usr/include/c++/12.2.0/bits/stl_iterator.h \
/usr/include/c++/12.2.0/ext/type_traits.h \
/usr/include/c++/12.2.0/bits/stl_function.h \
/usr/include/c++/12.2.0/backward/binders.h \
/usr/include/c++/12.2.0/ext/numeric_traits.h \
/usr/include/c++/12.2.0/bits/stl_algobase.h \
/usr/include/c++/12.2.0/bits/stl_pair.h \
/usr/include/c++/12.2.0/bits/utility.h \
/usr/include/c++/12.2.0/debug/debug.h \
/usr/include/c++/12.2.0/bits/predefined_ops.h \
/usr/include/c++/12.2.0/bits/refwrap.h \
/usr/include/c++/12.2.0/bits/invoke.h \
/usr/include/c++/12.2.0/bits/range_access.h \
/usr/include/c++/12.2.0/initializer_list \
/usr/include/c++/12.2.0/bits/basic_string.h \
/usr/include/c++/12.2.0/ext/alloc_traits.h \
/usr/include/c++/12.2.0/bits/alloc_traits.h \
/usr/include/c++/12.2.0/string_view \
/usr/include/c++/12.2.0/bits/functional_hash.h \
/usr/include/c++/12.2.0/bits/ranges_base.h \
/usr/include/c++/12.2.0/bits/max_size_type.h \
/usr/include/c++/12.2.0/numbers \
/usr/include/c++/12.2.0/bits/string_view.tcc \
/usr/include/c++/12.2.0/ext/string_conversions.h \
/usr/include/c++/12.2.0/cstdlib /usr/include/stdlib.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/sys/types.h /usr/include/endian.h \
/usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/types/sigset_t.h /usr/include/alloca.h \
/usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
/usr/include/c++/12.2.0/bits/std_abs.h /usr/include/c++/12.2.0/cstdio \
/usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \
/usr/include/bits/types/__fpos64_t.h \
/usr/include/bits/types/struct_FILE.h \
/usr/include/bits/types/cookie_io_functions_t.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
/usr/include/c++/12.2.0/cerrno /usr/include/errno.h \
/usr/include/bits/errno.h /usr/include/linux/errno.h \
/usr/include/asm/errno.h /usr/include/asm-generic/errno.h \
/usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \
/usr/include/c++/12.2.0/bits/charconv.h \
/usr/include/c++/12.2.0/bits/basic_string.tcc \
/usr/include/c++/12.2.0/bits/locale_classes.tcc \
/usr/include/c++/12.2.0/system_error \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/error_constants.h \
/usr/include/c++/12.2.0/stdexcept /usr/include/c++/12.2.0/streambuf \
/usr/include/c++/12.2.0/bits/streambuf.tcc \
/usr/include/c++/12.2.0/bits/basic_ios.h \
/usr/include/c++/12.2.0/bits/locale_facets.h \
/usr/include/c++/12.2.0/cwctype /usr/include/wctype.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/ctype_base.h \
/usr/include/c++/12.2.0/bits/streambuf_iterator.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/ctype_inline.h \
/usr/include/c++/12.2.0/bits/locale_facets.tcc \
/usr/include/c++/12.2.0/bits/basic_ios.tcc \
/usr/include/c++/12.2.0/iostream /usr/include/c++/12.2.0/ostream \
/usr/include/c++/12.2.0/bits/ostream.tcc /usr/include/c++/12.2.0/istream \
/usr/include/c++/12.2.0/bits/istream.tcc /usr/include/c++/12.2.0/fstream \
/usr/include/c++/12.2.0/bits/codecvt.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/basic_file.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++io.h \
/usr/include/c++/12.2.0/bits/fstream.tcc \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/avail_mem.h

View File

@ -0,0 +1,135 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.25
# Delete rule output on recipe failure.
.DELETE_ON_ERROR:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build
# Include any dependencies generated for this target.
include CMakeFiles/demo-chi2.dir/depend.make
# Include any dependencies generated by the compiler for this target.
include CMakeFiles/demo-chi2.dir/compiler_depend.make
# Include the progress variables for this target.
include CMakeFiles/demo-chi2.dir/progress.make
# Include the compile flags for this target's objects.
include CMakeFiles/demo-chi2.dir/flags.make
CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o: CMakeFiles/demo-chi2.dir/flags.make
CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-chi2.cpp
CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o: CMakeFiles/demo-chi2.dir/compiler_depend.ts
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o -MF CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o.d -o CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o -c /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-chi2.cpp
CMakeFiles/demo-chi2.dir/demo-chi2.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/demo-chi2.dir/demo-chi2.cpp.i"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-chi2.cpp > CMakeFiles/demo-chi2.dir/demo-chi2.cpp.i
CMakeFiles/demo-chi2.dir/demo-chi2.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/demo-chi2.dir/demo-chi2.cpp.s"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-chi2.cpp -o CMakeFiles/demo-chi2.dir/demo-chi2.cpp.s
CMakeFiles/demo-chi2.dir/avail_mem.cpp.o: CMakeFiles/demo-chi2.dir/flags.make
CMakeFiles/demo-chi2.dir/avail_mem.cpp.o: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/avail_mem.cpp
CMakeFiles/demo-chi2.dir/avail_mem.cpp.o: CMakeFiles/demo-chi2.dir/compiler_depend.ts
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/demo-chi2.dir/avail_mem.cpp.o"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/demo-chi2.dir/avail_mem.cpp.o -MF CMakeFiles/demo-chi2.dir/avail_mem.cpp.o.d -o CMakeFiles/demo-chi2.dir/avail_mem.cpp.o -c /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/avail_mem.cpp
CMakeFiles/demo-chi2.dir/avail_mem.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/demo-chi2.dir/avail_mem.cpp.i"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/avail_mem.cpp > CMakeFiles/demo-chi2.dir/avail_mem.cpp.i
CMakeFiles/demo-chi2.dir/avail_mem.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/demo-chi2.dir/avail_mem.cpp.s"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/avail_mem.cpp -o CMakeFiles/demo-chi2.dir/avail_mem.cpp.s
# Object files for target demo-chi2
demo__chi2_OBJECTS = \
"CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o" \
"CMakeFiles/demo-chi2.dir/avail_mem.cpp.o"
# External object files for target demo-chi2
demo__chi2_EXTERNAL_OBJECTS =
demo-chi2: CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o
demo-chi2: CMakeFiles/demo-chi2.dir/avail_mem.cpp.o
demo-chi2: CMakeFiles/demo-chi2.dir/build.make
demo-chi2: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEpke.so.1.11.8
demo-chi2: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEbinfhe.so.1.11.8
demo-chi2: /usr/lib/libboost_mpi.so.1.80.0
demo-chi2: /usr/lib/libmpi_cxx.so
demo-chi2: /usr/lib/libmpi.so
demo-chi2: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEcore.so.1.11.8
demo-chi2: /usr/lib/libboost_serialization.so.1.80.0
demo-chi2: /usr/lib/libmpi_cxx.so
demo-chi2: /usr/lib/libmpi.so
demo-chi2: CMakeFiles/demo-chi2.dir/link.txt
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking CXX executable demo-chi2"
$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/demo-chi2.dir/link.txt --verbose=$(VERBOSE)
# Rule to build all files generated by this target.
CMakeFiles/demo-chi2.dir/build: demo-chi2
.PHONY : CMakeFiles/demo-chi2.dir/build
CMakeFiles/demo-chi2.dir/clean:
$(CMAKE_COMMAND) -P CMakeFiles/demo-chi2.dir/cmake_clean.cmake
.PHONY : CMakeFiles/demo-chi2.dir/clean
CMakeFiles/demo-chi2.dir/depend:
cd /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/demo-chi2.dir/DependInfo.cmake --color=$(COLOR)
.PHONY : CMakeFiles/demo-chi2.dir/depend

View File

@ -0,0 +1,13 @@
file(REMOVE_RECURSE
"CMakeFiles/demo-chi2.dir/avail_mem.cpp.o"
"CMakeFiles/demo-chi2.dir/avail_mem.cpp.o.d"
"CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o"
"CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o.d"
"demo-chi2"
"demo-chi2.pdb"
)
# Per-language clean rules from dependency scanning.
foreach(lang CXX)
include(CMakeFiles/demo-chi2.dir/cmake_clean_${lang}.cmake OPTIONAL)
endforeach()

View File

@ -0,0 +1,2 @@
# CMAKE generated file: DO NOT EDIT!
# Timestamp file for compiler generated dependencies management for demo-chi2.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,2 @@
# Empty dependencies file for demo-chi2.
# This may be replaced when dependencies are built.

View File

@ -0,0 +1,10 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.25
# compile CXX with /usr/bin/c++
CXX_DEFINES = -DBOOST_MPI_DYN_LINK -DBOOST_MPI_NO_LIB -DBOOST_SERIALIZATION_DYN_LINK -DBOOST_SERIALIZATION_NO_LIB
CXX_INCLUDES = -I/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade -I/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core -I/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke
CXX_FLAGS = -Wall -Werror -O3 -DPALISADE_VERSION=1.11.8 -Wno-parentheses -DMATHBACKEND=2 -fopenmp -fopenmp -std=c++20

View File

@ -0,0 +1 @@
/usr/bin/c++ -Wall -Werror -O3 -DPALISADE_VERSION=1.11.8 -Wno-parentheses -DMATHBACKEND=2 -fopenmp -fopenmp -Wl,-rpath -Wl,/usr/lib -Wl,--enable-new-dtags "CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o" "CMakeFiles/demo-chi2.dir/avail_mem.cpp.o" -o demo-chi2 -L/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/lib -Wl,-rpath,/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib:/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/lib /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEpke.so.1.11.8 /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEbinfhe.so.1.11.8 -fopenmp /usr/lib/libboost_mpi.so.1.80.0 /usr/lib/libmpi_cxx.so /usr/lib/libmpi.so /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEcore.so.1.11.8 -fopenmp /usr/lib/libboost_serialization.so.1.80.0 /usr/lib/libmpi_cxx.so /usr/lib/libmpi.so

View File

@ -0,0 +1,4 @@
CMAKE_PROGRESS_1 = 1
CMAKE_PROGRESS_2 = 2
CMAKE_PROGRESS_3 = 3

View File

@ -0,0 +1,19 @@
# Consider dependencies only in project.
set(CMAKE_DEPENDS_IN_PROJECT_ONLY OFF)
# The set of languages for which implicit dependencies are needed:
set(CMAKE_DEPENDS_LANGUAGES
)
# The set of dependency files which are needed:
set(CMAKE_DEPENDS_DEPENDENCY_FILES
"/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-logistic.cpp" "CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o" "gcc" "CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o.d"
)
# Targets to which this target links.
set(CMAKE_TARGET_LINKED_INFO_FILES
)
# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")

View File

@ -0,0 +1,113 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.25
# Delete rule output on recipe failure.
.DELETE_ON_ERROR:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build
# Include any dependencies generated for this target.
include CMakeFiles/demo-logistic.dir/depend.make
# Include any dependencies generated by the compiler for this target.
include CMakeFiles/demo-logistic.dir/compiler_depend.make
# Include the progress variables for this target.
include CMakeFiles/demo-logistic.dir/progress.make
# Include the compile flags for this target's objects.
include CMakeFiles/demo-logistic.dir/flags.make
CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o: CMakeFiles/demo-logistic.dir/flags.make
CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-logistic.cpp
CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o: CMakeFiles/demo-logistic.dir/compiler_depend.ts
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o -MF CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o.d -o CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o -c /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-logistic.cpp
CMakeFiles/demo-logistic.dir/demo-logistic.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/demo-logistic.dir/demo-logistic.cpp.i"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-logistic.cpp > CMakeFiles/demo-logistic.dir/demo-logistic.cpp.i
CMakeFiles/demo-logistic.dir/demo-logistic.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/demo-logistic.dir/demo-logistic.cpp.s"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-logistic.cpp -o CMakeFiles/demo-logistic.dir/demo-logistic.cpp.s
# Object files for target demo-logistic
demo__logistic_OBJECTS = \
"CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o"
# External object files for target demo-logistic
demo__logistic_EXTERNAL_OBJECTS =
demo-logistic: CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o
demo-logistic: CMakeFiles/demo-logistic.dir/build.make
demo-logistic: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEpke.so.1.11.8
demo-logistic: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEbinfhe.so.1.11.8
demo-logistic: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEcore.so.1.11.8
demo-logistic: CMakeFiles/demo-logistic.dir/link.txt
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX executable demo-logistic"
$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/demo-logistic.dir/link.txt --verbose=$(VERBOSE)
# Rule to build all files generated by this target.
CMakeFiles/demo-logistic.dir/build: demo-logistic
.PHONY : CMakeFiles/demo-logistic.dir/build
CMakeFiles/demo-logistic.dir/clean:
$(CMAKE_COMMAND) -P CMakeFiles/demo-logistic.dir/cmake_clean.cmake
.PHONY : CMakeFiles/demo-logistic.dir/clean
CMakeFiles/demo-logistic.dir/depend:
cd /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles/demo-logistic.dir/DependInfo.cmake --color=$(COLOR)
.PHONY : CMakeFiles/demo-logistic.dir/depend

View File

@ -0,0 +1,11 @@
file(REMOVE_RECURSE
"CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o"
"CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o.d"
"demo-logistic"
"demo-logistic.pdb"
)
# Per-language clean rules from dependency scanning.
foreach(lang CXX)
include(CMakeFiles/demo-logistic.dir/cmake_clean_${lang}.cmake OPTIONAL)
endforeach()

View File

@ -0,0 +1,446 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.25
CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-logistic.cpp
/usr/include/stdc-predef.h
/usr/include/getopt.h
/usr/include/features.h
/usr/include/features-time64.h
/usr/include/bits/wordsize.h
/usr/include/bits/timesize.h
/usr/include/sys/cdefs.h
/usr/include/bits/long-double.h
/usr/include/gnu/stubs.h
/usr/include/gnu/stubs-64.h
/usr/include/bits/getopt_core.h
/usr/include/bits/getopt_ext.h
/usr/include/c++/12.2.0/numeric
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++config.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/os_defines.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h
/usr/include/c++/12.2.0/bits/stl_iterator_base_types.h
/usr/include/c++/12.2.0/type_traits
/usr/include/c++/12.2.0/bits/stl_numeric.h
/usr/include/c++/12.2.0/bits/concept_check.h
/usr/include/c++/12.2.0/debug/debug.h
/usr/include/c++/12.2.0/debug/assertions.h
/usr/include/c++/12.2.0/bits/move.h
/usr/include/c++/12.2.0/cmath
/usr/include/c++/12.2.0/bits/cpp_type_traits.h
/usr/include/c++/12.2.0/ext/type_traits.h
/usr/include/math.h
/usr/include/bits/libc-header-start.h
/usr/include/bits/types.h
/usr/include/bits/typesizes.h
/usr/include/bits/time64.h
/usr/include/bits/math-vector.h
/usr/include/bits/libm-simd-decl-stubs.h
/usr/include/bits/floatn.h
/usr/include/bits/floatn-common.h
/usr/include/bits/flt-eval-method.h
/usr/include/bits/fp-logb.h
/usr/include/bits/fp-fast.h
/usr/include/bits/mathcalls-helper-functions.h
/usr/include/bits/mathcalls.h
/usr/include/bits/mathcalls-narrow.h
/usr/include/bits/iscanonical.h
/usr/include/c++/12.2.0/bits/std_abs.h
/usr/include/stdlib.h
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h
/usr/include/bits/waitflags.h
/usr/include/bits/waitstatus.h
/usr/include/bits/types/locale_t.h
/usr/include/bits/types/__locale_t.h
/usr/include/sys/types.h
/usr/include/bits/types/clock_t.h
/usr/include/bits/types/clockid_t.h
/usr/include/bits/types/time_t.h
/usr/include/bits/types/timer_t.h
/usr/include/bits/stdint-intn.h
/usr/include/endian.h
/usr/include/bits/endian.h
/usr/include/bits/endianness.h
/usr/include/bits/byteswap.h
/usr/include/bits/uintn-identity.h
/usr/include/sys/select.h
/usr/include/bits/select.h
/usr/include/bits/types/sigset_t.h
/usr/include/bits/types/__sigset_t.h
/usr/include/bits/types/struct_timeval.h
/usr/include/bits/types/struct_timespec.h
/usr/include/bits/pthreadtypes.h
/usr/include/bits/thread-shared-types.h
/usr/include/bits/pthreadtypes-arch.h
/usr/include/bits/atomic_wide_counter.h
/usr/include/bits/struct_mutex.h
/usr/include/bits/struct_rwlock.h
/usr/include/alloca.h
/usr/include/bits/stdlib-bsearch.h
/usr/include/bits/stdlib-float.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/palisade.h
/usr/include/c++/12.2.0/initializer_list
/usr/include/c++/12.2.0/memory
/usr/include/c++/12.2.0/bits/stl_algobase.h
/usr/include/c++/12.2.0/bits/functexcept.h
/usr/include/c++/12.2.0/bits/exception_defines.h
/usr/include/c++/12.2.0/ext/numeric_traits.h
/usr/include/c++/12.2.0/bits/stl_pair.h
/usr/include/c++/12.2.0/bits/utility.h
/usr/include/c++/12.2.0/bits/stl_iterator_base_funcs.h
/usr/include/c++/12.2.0/bits/stl_iterator.h
/usr/include/c++/12.2.0/bits/ptr_traits.h
/usr/include/c++/12.2.0/bits/predefined_ops.h
/usr/include/c++/12.2.0/bits/allocator.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++allocator.h
/usr/include/c++/12.2.0/bits/new_allocator.h
/usr/include/c++/12.2.0/new
/usr/include/c++/12.2.0/bits/exception.h
/usr/include/c++/12.2.0/bits/memoryfwd.h
/usr/include/c++/12.2.0/bits/stl_construct.h
/usr/include/c++/12.2.0/bits/stl_uninitialized.h
/usr/include/c++/12.2.0/ext/alloc_traits.h
/usr/include/c++/12.2.0/bits/alloc_traits.h
/usr/include/c++/12.2.0/bits/stl_tempbuf.h
/usr/include/c++/12.2.0/bits/stl_raw_storage_iter.h
/usr/include/c++/12.2.0/bits/align.h
/usr/include/c++/12.2.0/bit
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h
/usr/include/stdint.h
/usr/include/bits/wchar.h
/usr/include/bits/stdint-uintn.h
/usr/include/c++/12.2.0/bits/uses_allocator.h
/usr/include/c++/12.2.0/bits/unique_ptr.h
/usr/include/c++/12.2.0/tuple
/usr/include/c++/12.2.0/bits/invoke.h
/usr/include/c++/12.2.0/bits/stl_function.h
/usr/include/c++/12.2.0/backward/binders.h
/usr/include/c++/12.2.0/bits/functional_hash.h
/usr/include/c++/12.2.0/bits/hash_bytes.h
/usr/include/c++/12.2.0/bits/shared_ptr.h
/usr/include/c++/12.2.0/iosfwd
/usr/include/c++/12.2.0/bits/stringfwd.h
/usr/include/c++/12.2.0/bits/postypes.h
/usr/include/c++/12.2.0/cwchar
/usr/include/wchar.h
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h
/usr/include/bits/types/wint_t.h
/usr/include/bits/types/mbstate_t.h
/usr/include/bits/types/__mbstate_t.h
/usr/include/bits/types/__FILE.h
/usr/include/bits/types/FILE.h
/usr/include/c++/12.2.0/bits/shared_ptr_base.h
/usr/include/c++/12.2.0/typeinfo
/usr/include/c++/12.2.0/bits/allocated_ptr.h
/usr/include/c++/12.2.0/bits/refwrap.h
/usr/include/c++/12.2.0/ext/aligned_buffer.h
/usr/include/c++/12.2.0/ext/atomicity.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/gthr.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/gthr-default.h
/usr/include/pthread.h
/usr/include/sched.h
/usr/include/bits/sched.h
/usr/include/bits/types/struct_sched_param.h
/usr/include/bits/cpu-set.h
/usr/include/time.h
/usr/include/bits/time.h
/usr/include/bits/timex.h
/usr/include/bits/types/struct_tm.h
/usr/include/bits/types/struct_itimerspec.h
/usr/include/bits/setjmp.h
/usr/include/bits/types/struct___jmp_buf_tag.h
/usr/include/bits/pthread_stack_min-dynamic.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/atomic_word.h
/usr/include/sys/single_threaded.h
/usr/include/c++/12.2.0/ext/concurrence.h
/usr/include/c++/12.2.0/exception
/usr/include/c++/12.2.0/bits/exception_ptr.h
/usr/include/c++/12.2.0/bits/cxxabi_init_exception.h
/usr/include/c++/12.2.0/bits/nested_exception.h
/usr/include/c++/12.2.0/bits/shared_ptr_atomic.h
/usr/include/c++/12.2.0/bits/atomic_base.h
/usr/include/c++/12.2.0/bits/atomic_lockfree_defines.h
/usr/include/c++/12.2.0/backward/auto_ptr.h
/usr/include/c++/12.2.0/string
/usr/include/c++/12.2.0/bits/char_traits.h
/usr/include/c++/12.2.0/cstdint
/usr/include/c++/12.2.0/bits/localefwd.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++locale.h
/usr/include/c++/12.2.0/clocale
/usr/include/locale.h
/usr/include/bits/locale.h
/usr/include/c++/12.2.0/cctype
/usr/include/ctype.h
/usr/include/c++/12.2.0/bits/ostream_insert.h
/usr/include/c++/12.2.0/bits/cxxabi_forced.h
/usr/include/c++/12.2.0/bits/range_access.h
/usr/include/c++/12.2.0/bits/basic_string.h
/usr/include/c++/12.2.0/ext/string_conversions.h
/usr/include/c++/12.2.0/cstdlib
/usr/include/c++/12.2.0/cstdio
/usr/include/stdio.h
/usr/include/bits/types/__fpos_t.h
/usr/include/bits/types/__fpos64_t.h
/usr/include/bits/types/struct_FILE.h
/usr/include/bits/types/cookie_io_functions_t.h
/usr/include/bits/stdio_lim.h
/usr/include/bits/stdio.h
/usr/include/c++/12.2.0/cerrno
/usr/include/errno.h
/usr/include/bits/errno.h
/usr/include/linux/errno.h
/usr/include/asm/errno.h
/usr/include/asm-generic/errno.h
/usr/include/asm-generic/errno-base.h
/usr/include/bits/types/error_t.h
/usr/include/c++/12.2.0/bits/charconv.h
/usr/include/c++/12.2.0/bits/basic_string.tcc
/usr/include/c++/12.2.0/utility
/usr/include/c++/12.2.0/bits/stl_relops.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/palisadecore.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/version.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/backend.h
/usr/include/c++/12.2.0/fstream
/usr/include/c++/12.2.0/istream
/usr/include/c++/12.2.0/ios
/usr/include/c++/12.2.0/bits/ios_base.h
/usr/include/c++/12.2.0/bits/locale_classes.h
/usr/include/c++/12.2.0/bits/locale_classes.tcc
/usr/include/c++/12.2.0/system_error
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/error_constants.h
/usr/include/c++/12.2.0/stdexcept
/usr/include/c++/12.2.0/streambuf
/usr/include/c++/12.2.0/bits/streambuf.tcc
/usr/include/c++/12.2.0/bits/basic_ios.h
/usr/include/c++/12.2.0/bits/locale_facets.h
/usr/include/c++/12.2.0/cwctype
/usr/include/wctype.h
/usr/include/bits/wctype-wchar.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/ctype_base.h
/usr/include/c++/12.2.0/bits/streambuf_iterator.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/ctype_inline.h
/usr/include/c++/12.2.0/bits/locale_facets.tcc
/usr/include/c++/12.2.0/bits/basic_ios.tcc
/usr/include/c++/12.2.0/ostream
/usr/include/c++/12.2.0/bits/ostream.tcc
/usr/include/c++/12.2.0/bits/istream.tcc
/usr/include/c++/12.2.0/bits/codecvt.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/basic_file.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++io.h
/usr/include/c++/12.2.0/bits/fstream.tcc
/usr/include/c++/12.2.0/functional
/usr/include/c++/12.2.0/bits/std_function.h
/usr/include/c++/12.2.0/iostream
/usr/include/c++/12.2.0/limits
/usr/include/c++/12.2.0/sstream
/usr/include/c++/12.2.0/bits/sstream.tcc
/usr/include/c++/12.2.0/vector
/usr/include/c++/12.2.0/bits/stl_vector.h
/usr/include/c++/12.2.0/bits/stl_bvector.h
/usr/include/c++/12.2.0/bits/vector.tcc
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/config_core.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/version.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/interface.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/inttypes.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/debug.h
/usr/include/c++/12.2.0/chrono
/usr/include/c++/12.2.0/bits/chrono.h
/usr/include/c++/12.2.0/ratio
/usr/include/c++/12.2.0/ctime
/usr/include/c++/12.2.0/bits/parse_numbers.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/exception.h
/usr/include/c++/12.2.0/mutex
/usr/include/c++/12.2.0/bits/std_mutex.h
/usr/include/c++/12.2.0/bits/unique_lock.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/memory.h
/usr/include/c++/12.2.0/algorithm
/usr/include/c++/12.2.0/bits/stl_algo.h
/usr/include/c++/12.2.0/bits/algorithmfwd.h
/usr/include/c++/12.2.0/bits/stl_heap.h
/usr/include/c++/12.2.0/bits/uniform_int_dist.h
/usr/include/c++/12.2.0/iterator
/usr/include/c++/12.2.0/bits/stream_iterator.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/palisadebase64.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/parallel.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/serializable.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/cereal.hpp
/usr/include/c++/12.2.0/unordered_map
/usr/include/c++/12.2.0/bits/hashtable.h
/usr/include/c++/12.2.0/bits/hashtable_policy.h
/usr/include/c++/12.2.0/bits/enable_special_members.h
/usr/include/c++/12.2.0/bits/unordered_map.h
/usr/include/c++/12.2.0/bits/erase_if.h
/usr/include/c++/12.2.0/unordered_set
/usr/include/c++/12.2.0/bits/unordered_set.h
/usr/include/c++/12.2.0/cstddef
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/macros.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/traits.hpp
/usr/include/c++/12.2.0/typeindex
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/access.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/specialize.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/helpers.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/static_object.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/base_class.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/polymorphic_impl_fwd.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/common.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/polymorphic.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/memory.hpp
/usr/include/c++/12.2.0/cstring
/usr/include/string.h
/usr/include/strings.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/util.hpp
/usr/include/c++/12.2.0/cxxabi.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/cxxabi_tweaks.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/polymorphic_impl.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/string.hpp
/usr/include/c++/12.2.0/map
/usr/include/c++/12.2.0/bits/stl_tree.h
/usr/include/c++/12.2.0/bits/stl_map.h
/usr/include/c++/12.2.0/bits/stl_multimap.h
/usr/include/c++/12.2.0/set
/usr/include/c++/12.2.0/bits/stl_set.h
/usr/include/c++/12.2.0/bits/stl_multiset.h
/usr/include/c++/12.2.0/stack
/usr/include/c++/12.2.0/deque
/usr/include/c++/12.2.0/bits/stl_deque.h
/usr/include/c++/12.2.0/bits/deque.tcc
/usr/include/c++/12.2.0/bits/stl_stack.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintfxd/mubintvecfxd.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintfxd/ubintfxd.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/backend.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintfxd/ubintfxd.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintdyn/mubintvecdyn.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintfxd/mubintvecfxd.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintdyn/ubintdyn.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/nbtheory.h
/usr/include/c++/12.2.0/random
/usr/include/c++/12.2.0/bits/random.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/opt_random.h
/usr/include/c++/12.2.0/bits/random.tcc
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintnat/mubintvecnat.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/interface.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/blockAllocator/xvector.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/blockAllocator/stl_allocator.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/blockAllocator/xallocator.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintnat/ubintnat.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/nbtheory.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/distrgen.h
/usr/include/c++/12.2.0/bitset
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/binaryuniformgenerator.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/distributiongenerator.h
/usr/include/c++/12.2.0/thread
/usr/include/c++/12.2.0/bits/std_thread.h
/usr/include/c++/12.2.0/bits/this_thread_sleep.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/prng/blake2engine.h
/usr/include/c++/12.2.0/array
/usr/include/c++/12.2.0/compare
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/prng/blake2.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/discretegaussiangenerator.h
/usr/include/c++/12.2.0/math.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/discretegaussiangeneratorgeneric.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/discreteuniformgenerator.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/ternaryuniformgenerator.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/encodings.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/ckkspackedencoding.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/encodingparams.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/plaintext.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/backend.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/elemparams.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/ildcrtparams.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/ilparams.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/ilelement.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/poly.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/distrgen.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/transfrm.h
/usr/include/c++/12.2.0/complex
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/utilities.h
/usr/include/c++/12.2.0/iomanip
/usr/include/c++/12.2.0/locale
/usr/include/c++/12.2.0/bits/locale_facets_nonio.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/time_members.h
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/messages_members.h
/usr/include/libintl.h
/usr/include/c++/12.2.0/bits/locale_facets_nonio.tcc
/usr/include/c++/12.2.0/bits/locale_conv.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/dcrtpoly.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/coefpackedencoding.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/packedencoding.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/stringencoding.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/backend.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/stdlatticeparms.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/debug.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/defines.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/config.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/metadata.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/plaintextfactory.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/encodings.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/matrix.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/pubkeylp.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/caller_info.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/hashutil.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/ciphertext.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/palisade.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/cryptocontext.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/allscheme.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/rlwe.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/stdlatticeparms.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/bgvrns/bgvrns.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/dftransfrm.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/bfv/bfv.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/bfvrns/bfvrns.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/bfvrnsb/bfvrnsB.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/ckks/ckks.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/null/nullscheme.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/cryptocontexthelper.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/cryptocontextparametersets.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/serial.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/sertype.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/archives/portable_binary.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/archives/json.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/prettywriter.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/writer.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/stream.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/rapidjson.h
/usr/include/inttypes.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/encodings.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/meta.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/rapidjson.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/stack.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/allocators.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/rapidjson.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/swap.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/strfunc.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/stream.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/dtoa.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/itoa.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/diyfp.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/ieee754.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/itoa.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/stringbuffer.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/ostreamwrapper.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/istreamwrapper.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/document.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/reader.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/allocators.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/encodedstream.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/memorystream.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/strtod.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/biginteger.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/pow10.h
/usr/include/c++/12.2.0/climits
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed/limits.h
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed/syslimits.h
/usr/include/limits.h
/usr/include/bits/posix1_lim.h
/usr/include/bits/local_lim.h
/usr/include/linux/limits.h
/usr/include/bits/posix2_lim.h
/usr/include/bits/xopen_lim.h
/usr/include/bits/uio_lim.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/error/error.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/rapidjson.h
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/base64.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/map.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/concepts/pair_associative_container.hpp
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/vector.hpp

View File

@ -0,0 +1,2 @@
# CMAKE generated file: DO NOT EDIT!
# Timestamp file for compiler generated dependencies management for demo-logistic.

View File

@ -0,0 +1,365 @@
CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o: \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/demo-logistic.cpp \
/usr/include/stdc-predef.h /usr/include/getopt.h /usr/include/features.h \
/usr/include/features-time64.h /usr/include/bits/wordsize.h \
/usr/include/bits/timesize.h /usr/include/sys/cdefs.h \
/usr/include/bits/long-double.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h /usr/include/bits/getopt_core.h \
/usr/include/bits/getopt_ext.h /usr/include/c++/12.2.0/numeric \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++config.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/os_defines.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h \
/usr/include/c++/12.2.0/bits/stl_iterator_base_types.h \
/usr/include/c++/12.2.0/type_traits \
/usr/include/c++/12.2.0/bits/stl_numeric.h \
/usr/include/c++/12.2.0/bits/concept_check.h \
/usr/include/c++/12.2.0/debug/debug.h \
/usr/include/c++/12.2.0/debug/assertions.h \
/usr/include/c++/12.2.0/bits/move.h /usr/include/c++/12.2.0/cmath \
/usr/include/c++/12.2.0/bits/cpp_type_traits.h \
/usr/include/c++/12.2.0/ext/type_traits.h /usr/include/math.h \
/usr/include/bits/libc-header-start.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/bits/time64.h \
/usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \
/usr/include/bits/floatn.h /usr/include/bits/floatn-common.h \
/usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \
/usr/include/bits/fp-fast.h \
/usr/include/bits/mathcalls-helper-functions.h \
/usr/include/bits/mathcalls.h /usr/include/bits/mathcalls-narrow.h \
/usr/include/bits/iscanonical.h /usr/include/c++/12.2.0/bits/std_abs.h \
/usr/include/stdlib.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \
/usr/include/sys/types.h /usr/include/bits/types/clock_t.h \
/usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \
/usr/include/bits/types/timer_t.h /usr/include/bits/stdint-intn.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/endianness.h /usr/include/bits/byteswap.h \
/usr/include/bits/uintn-identity.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/types/sigset_t.h \
/usr/include/bits/types/__sigset_t.h \
/usr/include/bits/types/struct_timeval.h \
/usr/include/bits/types/struct_timespec.h \
/usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \
/usr/include/bits/pthreadtypes-arch.h \
/usr/include/bits/atomic_wide_counter.h /usr/include/bits/struct_mutex.h \
/usr/include/bits/struct_rwlock.h /usr/include/alloca.h \
/usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/palisade.h \
/usr/include/c++/12.2.0/initializer_list /usr/include/c++/12.2.0/memory \
/usr/include/c++/12.2.0/bits/stl_algobase.h \
/usr/include/c++/12.2.0/bits/functexcept.h \
/usr/include/c++/12.2.0/bits/exception_defines.h \
/usr/include/c++/12.2.0/ext/numeric_traits.h \
/usr/include/c++/12.2.0/bits/stl_pair.h \
/usr/include/c++/12.2.0/bits/utility.h \
/usr/include/c++/12.2.0/bits/stl_iterator_base_funcs.h \
/usr/include/c++/12.2.0/bits/stl_iterator.h \
/usr/include/c++/12.2.0/bits/ptr_traits.h \
/usr/include/c++/12.2.0/bits/predefined_ops.h \
/usr/include/c++/12.2.0/bits/allocator.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++allocator.h \
/usr/include/c++/12.2.0/bits/new_allocator.h /usr/include/c++/12.2.0/new \
/usr/include/c++/12.2.0/bits/exception.h \
/usr/include/c++/12.2.0/bits/memoryfwd.h \
/usr/include/c++/12.2.0/bits/stl_construct.h \
/usr/include/c++/12.2.0/bits/stl_uninitialized.h \
/usr/include/c++/12.2.0/ext/alloc_traits.h \
/usr/include/c++/12.2.0/bits/alloc_traits.h \
/usr/include/c++/12.2.0/bits/stl_tempbuf.h \
/usr/include/c++/12.2.0/bits/stl_raw_storage_iter.h \
/usr/include/c++/12.2.0/bits/align.h /usr/include/c++/12.2.0/bit \
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/c++/12.2.0/bits/uses_allocator.h \
/usr/include/c++/12.2.0/bits/unique_ptr.h /usr/include/c++/12.2.0/tuple \
/usr/include/c++/12.2.0/bits/invoke.h \
/usr/include/c++/12.2.0/bits/stl_function.h \
/usr/include/c++/12.2.0/backward/binders.h \
/usr/include/c++/12.2.0/bits/functional_hash.h \
/usr/include/c++/12.2.0/bits/hash_bytes.h \
/usr/include/c++/12.2.0/bits/shared_ptr.h /usr/include/c++/12.2.0/iosfwd \
/usr/include/c++/12.2.0/bits/stringfwd.h \
/usr/include/c++/12.2.0/bits/postypes.h /usr/include/c++/12.2.0/cwchar \
/usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include/stdarg.h \
/usr/include/bits/types/wint_t.h /usr/include/bits/types/mbstate_t.h \
/usr/include/bits/types/__mbstate_t.h /usr/include/bits/types/__FILE.h \
/usr/include/bits/types/FILE.h \
/usr/include/c++/12.2.0/bits/shared_ptr_base.h \
/usr/include/c++/12.2.0/typeinfo \
/usr/include/c++/12.2.0/bits/allocated_ptr.h \
/usr/include/c++/12.2.0/bits/refwrap.h \
/usr/include/c++/12.2.0/ext/aligned_buffer.h \
/usr/include/c++/12.2.0/ext/atomicity.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/gthr.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \
/usr/include/bits/types/struct_sched_param.h /usr/include/bits/cpu-set.h \
/usr/include/time.h /usr/include/bits/time.h /usr/include/bits/timex.h \
/usr/include/bits/types/struct_tm.h \
/usr/include/bits/types/struct_itimerspec.h /usr/include/bits/setjmp.h \
/usr/include/bits/types/struct___jmp_buf_tag.h \
/usr/include/bits/pthread_stack_min-dynamic.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/atomic_word.h \
/usr/include/sys/single_threaded.h \
/usr/include/c++/12.2.0/ext/concurrence.h \
/usr/include/c++/12.2.0/exception \
/usr/include/c++/12.2.0/bits/exception_ptr.h \
/usr/include/c++/12.2.0/bits/cxxabi_init_exception.h \
/usr/include/c++/12.2.0/bits/nested_exception.h \
/usr/include/c++/12.2.0/bits/shared_ptr_atomic.h \
/usr/include/c++/12.2.0/bits/atomic_base.h \
/usr/include/c++/12.2.0/bits/atomic_lockfree_defines.h \
/usr/include/c++/12.2.0/backward/auto_ptr.h \
/usr/include/c++/12.2.0/string \
/usr/include/c++/12.2.0/bits/char_traits.h \
/usr/include/c++/12.2.0/cstdint /usr/include/c++/12.2.0/bits/localefwd.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++locale.h \
/usr/include/c++/12.2.0/clocale /usr/include/locale.h \
/usr/include/bits/locale.h /usr/include/c++/12.2.0/cctype \
/usr/include/ctype.h /usr/include/c++/12.2.0/bits/ostream_insert.h \
/usr/include/c++/12.2.0/bits/cxxabi_forced.h \
/usr/include/c++/12.2.0/bits/range_access.h \
/usr/include/c++/12.2.0/bits/basic_string.h \
/usr/include/c++/12.2.0/ext/string_conversions.h \
/usr/include/c++/12.2.0/cstdlib /usr/include/c++/12.2.0/cstdio \
/usr/include/stdio.h /usr/include/bits/types/__fpos_t.h \
/usr/include/bits/types/__fpos64_t.h \
/usr/include/bits/types/struct_FILE.h \
/usr/include/bits/types/cookie_io_functions_t.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/stdio.h \
/usr/include/c++/12.2.0/cerrno /usr/include/errno.h \
/usr/include/bits/errno.h /usr/include/linux/errno.h \
/usr/include/asm/errno.h /usr/include/asm-generic/errno.h \
/usr/include/asm-generic/errno-base.h /usr/include/bits/types/error_t.h \
/usr/include/c++/12.2.0/bits/charconv.h \
/usr/include/c++/12.2.0/bits/basic_string.tcc \
/usr/include/c++/12.2.0/utility \
/usr/include/c++/12.2.0/bits/stl_relops.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/palisadecore.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/version.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/backend.h \
/usr/include/c++/12.2.0/fstream /usr/include/c++/12.2.0/istream \
/usr/include/c++/12.2.0/ios /usr/include/c++/12.2.0/bits/ios_base.h \
/usr/include/c++/12.2.0/bits/locale_classes.h \
/usr/include/c++/12.2.0/bits/locale_classes.tcc \
/usr/include/c++/12.2.0/system_error \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/error_constants.h \
/usr/include/c++/12.2.0/stdexcept /usr/include/c++/12.2.0/streambuf \
/usr/include/c++/12.2.0/bits/streambuf.tcc \
/usr/include/c++/12.2.0/bits/basic_ios.h \
/usr/include/c++/12.2.0/bits/locale_facets.h \
/usr/include/c++/12.2.0/cwctype /usr/include/wctype.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/ctype_base.h \
/usr/include/c++/12.2.0/bits/streambuf_iterator.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/ctype_inline.h \
/usr/include/c++/12.2.0/bits/locale_facets.tcc \
/usr/include/c++/12.2.0/bits/basic_ios.tcc \
/usr/include/c++/12.2.0/ostream /usr/include/c++/12.2.0/bits/ostream.tcc \
/usr/include/c++/12.2.0/bits/istream.tcc \
/usr/include/c++/12.2.0/bits/codecvt.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/basic_file.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/c++io.h \
/usr/include/c++/12.2.0/bits/fstream.tcc \
/usr/include/c++/12.2.0/functional \
/usr/include/c++/12.2.0/bits/std_function.h \
/usr/include/c++/12.2.0/iostream /usr/include/c++/12.2.0/limits \
/usr/include/c++/12.2.0/sstream /usr/include/c++/12.2.0/bits/sstream.tcc \
/usr/include/c++/12.2.0/vector /usr/include/c++/12.2.0/bits/stl_vector.h \
/usr/include/c++/12.2.0/bits/stl_bvector.h \
/usr/include/c++/12.2.0/bits/vector.tcc \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/config_core.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/version.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/interface.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/inttypes.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/debug.h \
/usr/include/c++/12.2.0/chrono /usr/include/c++/12.2.0/bits/chrono.h \
/usr/include/c++/12.2.0/ratio /usr/include/c++/12.2.0/ctime \
/usr/include/c++/12.2.0/bits/parse_numbers.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/exception.h \
/usr/include/c++/12.2.0/mutex /usr/include/c++/12.2.0/bits/std_mutex.h \
/usr/include/c++/12.2.0/bits/unique_lock.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/memory.h \
/usr/include/c++/12.2.0/algorithm \
/usr/include/c++/12.2.0/bits/stl_algo.h \
/usr/include/c++/12.2.0/bits/algorithmfwd.h \
/usr/include/c++/12.2.0/bits/stl_heap.h \
/usr/include/c++/12.2.0/bits/uniform_int_dist.h \
/usr/include/c++/12.2.0/iterator \
/usr/include/c++/12.2.0/bits/stream_iterator.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/palisadebase64.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/parallel.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/serializable.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/cereal.hpp \
/usr/include/c++/12.2.0/unordered_map \
/usr/include/c++/12.2.0/bits/hashtable.h \
/usr/include/c++/12.2.0/bits/hashtable_policy.h \
/usr/include/c++/12.2.0/bits/enable_special_members.h \
/usr/include/c++/12.2.0/bits/unordered_map.h \
/usr/include/c++/12.2.0/bits/erase_if.h \
/usr/include/c++/12.2.0/unordered_set \
/usr/include/c++/12.2.0/bits/unordered_set.h \
/usr/include/c++/12.2.0/cstddef \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/macros.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/traits.hpp \
/usr/include/c++/12.2.0/typeindex \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/access.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/specialize.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/helpers.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/static_object.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/base_class.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/polymorphic_impl_fwd.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/common.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/polymorphic.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/memory.hpp \
/usr/include/c++/12.2.0/cstring /usr/include/string.h \
/usr/include/strings.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/util.hpp \
/usr/include/c++/12.2.0/cxxabi.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/cxxabi_tweaks.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/details/polymorphic_impl.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/string.hpp \
/usr/include/c++/12.2.0/map /usr/include/c++/12.2.0/bits/stl_tree.h \
/usr/include/c++/12.2.0/bits/stl_map.h \
/usr/include/c++/12.2.0/bits/stl_multimap.h /usr/include/c++/12.2.0/set \
/usr/include/c++/12.2.0/bits/stl_set.h \
/usr/include/c++/12.2.0/bits/stl_multiset.h \
/usr/include/c++/12.2.0/stack /usr/include/c++/12.2.0/deque \
/usr/include/c++/12.2.0/bits/stl_deque.h \
/usr/include/c++/12.2.0/bits/deque.tcc \
/usr/include/c++/12.2.0/bits/stl_stack.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintfxd/mubintvecfxd.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintfxd/ubintfxd.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/backend.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintfxd/ubintfxd.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintdyn/mubintvecdyn.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintfxd/mubintvecfxd.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintdyn/ubintdyn.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/nbtheory.h \
/usr/include/c++/12.2.0/random /usr/include/c++/12.2.0/bits/random.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/opt_random.h \
/usr/include/c++/12.2.0/bits/random.tcc \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintnat/mubintvecnat.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/interface.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/blockAllocator/xvector.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/blockAllocator/stl_allocator.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/blockAllocator/xallocator.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/bigintnat/ubintnat.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/nbtheory.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/distrgen.h \
/usr/include/c++/12.2.0/bitset \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/binaryuniformgenerator.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/distributiongenerator.h \
/usr/include/c++/12.2.0/thread /usr/include/c++/12.2.0/bits/std_thread.h \
/usr/include/c++/12.2.0/bits/this_thread_sleep.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/prng/blake2engine.h \
/usr/include/c++/12.2.0/array /usr/include/c++/12.2.0/compare \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/prng/blake2.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/discretegaussiangenerator.h \
/usr/include/c++/12.2.0/math.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/discretegaussiangeneratorgeneric.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/discreteuniformgenerator.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/ternaryuniformgenerator.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/encodings.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/ckkspackedencoding.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/encodingparams.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/plaintext.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/backend.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/elemparams.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/ildcrtparams.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/ilparams.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/ilelement.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/poly.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/distrgen.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/transfrm.h \
/usr/include/c++/12.2.0/complex \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/utilities.h \
/usr/include/c++/12.2.0/iomanip /usr/include/c++/12.2.0/locale \
/usr/include/c++/12.2.0/bits/locale_facets_nonio.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/time_members.h \
/usr/include/c++/12.2.0/x86_64-pc-linux-gnu/bits/messages_members.h \
/usr/include/libintl.h \
/usr/include/c++/12.2.0/bits/locale_facets_nonio.tcc \
/usr/include/c++/12.2.0/bits/locale_conv.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/dcrtpoly.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/coefpackedencoding.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/packedencoding.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/stringencoding.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/backend.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/stdlatticeparms.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/debug.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/defines.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/config.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/metadata.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/plaintextfactory.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/encoding/encodings.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/matrix.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/pubkeylp.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/caller_info.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/hashutil.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/ciphertext.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/palisade.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/cryptocontext.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/allscheme.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/rlwe.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/lattice/stdlatticeparms.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/bgvrns/bgvrns.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/math/dftransfrm.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/bfv/bfv.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/bfvrns/bfvrns.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/bfvrnsb/bfvrnsB.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/ckks/ckks.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/scheme/null/nullscheme.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/cryptocontexthelper.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke/cryptocontextparametersets.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/serial.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core/utils/sertype.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/archives/portable_binary.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/archives/json.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/prettywriter.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/writer.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/stream.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/rapidjson.h \
/usr/include/inttypes.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/encodings.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/meta.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/../rapidjson.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/stack.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/../allocators.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/../rapidjson.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/swap.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/strfunc.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/../stream.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/dtoa.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/itoa.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/diyfp.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/ieee754.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/itoa.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/stringbuffer.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/ostreamwrapper.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/istreamwrapper.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/document.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/reader.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/allocators.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/encodedstream.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/memorystream.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/strtod.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/biginteger.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/internal/pow10.h \
/usr/include/c++/12.2.0/climits \
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed/limits.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed/syslimits.h \
/usr/include/limits.h /usr/include/bits/posix1_lim.h \
/usr/include/bits/local_lim.h /usr/include/linux/limits.h \
/usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
/usr/include/bits/uio_lim.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/error/error.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/rapidjson/error/../rapidjson.h \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/external/base64.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/map.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/concepts/pair_associative_container.hpp \
/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/cereal/types/vector.hpp

View File

@ -0,0 +1,2 @@
# Empty dependencies file for demo-logistic.
# This may be replaced when dependencies are built.

View File

@ -0,0 +1,10 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.25
# compile CXX with /usr/bin/c++
CXX_DEFINES =
CXX_INCLUDES = -I/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade -I/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/core -I/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/include/palisade/pke
CXX_FLAGS = -Wall -Werror -O3 -DPALISADE_VERSION=1.11.8 -Wno-parentheses -DMATHBACKEND=2 -fopenmp -fopenmp -std=gnu++11

View File

@ -0,0 +1 @@
/usr/bin/c++ -Wall -Werror -O3 -DPALISADE_VERSION=1.11.8 -Wno-parentheses -DMATHBACKEND=2 -fopenmp -fopenmp "CMakeFiles/demo-logistic.dir/demo-logistic.cpp.o" -o demo-logistic -L/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/lib -Wl,-rpath,/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib:/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/install/lib /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEpke.so.1.11.8 /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEbinfhe.so.1.11.8 -fopenmp /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/PALISADE/build/lib/libPALISADEcore.so.1.11.8 -fopenmp

View File

@ -0,0 +1,3 @@
CMAKE_PROGRESS_1 = 4
CMAKE_PROGRESS_2 = 5

View File

@ -0,0 +1 @@
3

View File

@ -0,0 +1,208 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.25
# Default target executed when no arguments are given to make.
default_target: all
.PHONY : default_target
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
.NOTPARALLEL:
#=============================================================================
# Special targets provided by cmake.
# Disable implicit rules so canonical targets will work.
.SUFFIXES:
# Disable VCS-based implicit rules.
% : %,v
# Disable VCS-based implicit rules.
% : RCS/%
# Disable VCS-based implicit rules.
% : RCS/%,v
# Disable VCS-based implicit rules.
% : SCCS/s.%
# Disable VCS-based implicit rules.
% : s.%
.SUFFIXES: .hpux_make_needs_suffix_list
# Command-line flag to silence nested $(MAKE).
$(VERBOSE)MAKESILENT = -s
#Suppress display of executed commands.
$(VERBOSE).SILENT:
# A target that is always out of date.
cmake_force:
.PHONY : cmake_force
#=============================================================================
# Set environment variables for the build.
# The shell in which to execute make rules.
SHELL = /bin/sh
# The CMake executable.
CMAKE_COMMAND = /usr/bin/cmake
# The command to remove a file.
RM = /usr/bin/cmake -E rm -f
# Escaping for special characters.
EQUALS = =
# The top-level source directory on which CMake was run.
CMAKE_SOURCE_DIR = /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS
# The top-level build directory on which CMake was run.
CMAKE_BINARY_DIR = /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build
#=============================================================================
# Targets provided globally by CMake.
# Special rule for the target edit_cache
edit_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : edit_cache
# Special rule for the target edit_cache
edit_cache/fast: edit_cache
.PHONY : edit_cache/fast
# Special rule for the target rebuild_cache
rebuild_cache:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
.PHONY : rebuild_cache
# Special rule for the target rebuild_cache
rebuild_cache/fast: rebuild_cache
.PHONY : rebuild_cache/fast
# The main all target
all: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build//CMakeFiles/progress.marks
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
$(CMAKE_COMMAND) -E cmake_progress_start /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean
.PHONY : clean
# The main clean target
clean/fast: clean
.PHONY : clean/fast
# Prepare targets for installation.
preinstall: all
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
.PHONY : preinstall/fast
# clear depends
depend:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
#=============================================================================
# Target rules for targets named demo-chi2
# Build rule for target.
demo-chi2: cmake_check_build_system
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 demo-chi2
.PHONY : demo-chi2
# fast build rule for target.
demo-chi2/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/demo-chi2.dir/build.make CMakeFiles/demo-chi2.dir/build
.PHONY : demo-chi2/fast
avail_mem.o: avail_mem.cpp.o
.PHONY : avail_mem.o
# target to build an object file
avail_mem.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/demo-chi2.dir/build.make CMakeFiles/demo-chi2.dir/avail_mem.cpp.o
.PHONY : avail_mem.cpp.o
avail_mem.i: avail_mem.cpp.i
.PHONY : avail_mem.i
# target to preprocess a source file
avail_mem.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/demo-chi2.dir/build.make CMakeFiles/demo-chi2.dir/avail_mem.cpp.i
.PHONY : avail_mem.cpp.i
avail_mem.s: avail_mem.cpp.s
.PHONY : avail_mem.s
# target to generate assembly for a file
avail_mem.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/demo-chi2.dir/build.make CMakeFiles/demo-chi2.dir/avail_mem.cpp.s
.PHONY : avail_mem.cpp.s
demo-chi2.o: demo-chi2.cpp.o
.PHONY : demo-chi2.o
# target to build an object file
demo-chi2.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/demo-chi2.dir/build.make CMakeFiles/demo-chi2.dir/demo-chi2.cpp.o
.PHONY : demo-chi2.cpp.o
demo-chi2.i: demo-chi2.cpp.i
.PHONY : demo-chi2.i
# target to preprocess a source file
demo-chi2.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/demo-chi2.dir/build.make CMakeFiles/demo-chi2.dir/demo-chi2.cpp.i
.PHONY : demo-chi2.cpp.i
demo-chi2.s: demo-chi2.cpp.s
.PHONY : demo-chi2.s
# target to generate assembly for a file
demo-chi2.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/demo-chi2.dir/build.make CMakeFiles/demo-chi2.dir/demo-chi2.cpp.s
.PHONY : demo-chi2.cpp.s
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@echo "... all (the default if no target is provided)"
@echo "... clean"
@echo "... depend"
@echo "... edit_cache"
@echo "... rebuild_cache"
@echo "... demo-chi2"
@echo "... avail_mem.o"
@echo "... avail_mem.i"
@echo "... avail_mem.s"
@echo "... demo-chi2.o"
@echo "... demo-chi2.i"
@echo "... demo-chi2.s"
.PHONY : help
#=============================================================================
# Special targets to cleanup operation of make.
# Special rule to run CMake to check the build system integrity.
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system

View File

@ -0,0 +1,54 @@
# Install script for directory: /home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS
# Set the install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
set(CMAKE_INSTALL_PREFIX "/usr/local")
endif()
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
# Set the install configuration name.
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
if(BUILD_TYPE)
string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
else()
set(CMAKE_INSTALL_CONFIG_NAME "")
endif()
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
endif()
# Set the component getting installed.
if(NOT CMAKE_INSTALL_COMPONENT)
if(COMPONENT)
message(STATUS "Install component: \"${COMPONENT}\"")
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
else()
set(CMAKE_INSTALL_COMPONENT)
endif()
endif()
# Install shared libraries without execute permission?
if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
set(CMAKE_INSTALL_SO_NO_EXE "0")
endif()
# Is this installation the result of a crosscompile?
if(NOT DEFINED CMAKE_CROSSCOMPILING)
set(CMAKE_CROSSCOMPILING "FALSE")
endif()
# Set default install directory permissions.
if(NOT DEFINED CMAKE_OBJDUMP)
set(CMAKE_OBJDUMP "/usr/bin/objdump")
endif()
if(CMAKE_INSTALL_COMPONENT)
set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
else()
set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
endif()
string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
"${CMAKE_INSTALL_MANIFEST_FILES}")
file(WRITE "/home/noah/Documents/School/CS-6643-Bioinformatics/CS-6643-Bioinformatics-Research-Project/Code/Duality_Technologies/GWAS/build/${CMAKE_INSTALL_MANIFEST}"
"${CMAKE_INSTALL_MANIFEST_CONTENT}")

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,4 @@
NODES=${1:-1}
mpiexec --mca opal_warn_on_missing_libcuda 0 --mca btl_openib_allow_ib 1 -np ${NODES} demo-chi2 --SNPdir "../data" --SNPfilename "random_sample" --pvalue "pvalue.txt" --runtime "result.txt" --samplesize="200" --snps="16384"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
Key Generation Time: 0.024 s
Encoding and Encryption Time: 5.123 s
Computation Time: 1.372 s
Decryption & Decoding Time: 0.169 s
End-to-end Runtime: 6.994 s

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,5 @@
Key Generation Time: 0.029 s
Encoding and Encryption Time: 5.157 s
Computation Time: 1.37 s
Decryption & Decoding Time: 0.209 s
End-to-end Runtime: 6.988 s

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,5 @@
Key Generation Time: 0.023 s
Encoding and Encryption Time: 9.686 s
Computation Time: 1.842 s
Decryption & Decoding Time: 0.159 s
End-to-end Runtime: 12.014 s

View File

@ -0,0 +1,646 @@
/***
* Copyright (c) 2020 Duality Technologies, Inc.
* Licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License <https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode>
* See the LICENSE.md file for the full text of the license.
* If you share the Licensed Material (including in modified form) you must include the above attribution in the copy you share.
***/
/*
Implementation for the Chi-Square GWAS solution described in
"Secure large-scale genome-wide association studies using homomorphic encryption"
by Marcelo Blatt, Alexander Gusev, Yuriy Polyakov, and Shafi Goldwasser
Command to execute the prototype
./demo-chi2 --SNPdir "../data" --SNPfilename "random_sample" --pvalue "pvalue.txt" --runtime "result.txt" --samplesize="200" --snps="16384"
*/
#include <getopt.h>
#include <numeric>
#include <cmath>
#include <boost/mpi.hpp>
#include <boost/mpi/environment.hpp>
#include "palisade.h"
#include "demo_chi2.h"
#include "avail_mem.h"
namespace mpi = boost::mpi;
namespace mt = mpi::threading;
using namespace std;
using namespace lbcrypto;
double BS(double z) {
double y = exp(-z*z/2);
return sqrt(1-y) * (31*y/200 - 341*y*y/8000) / sqrt(M_PI);
}
static bool Equal(double a, double b) { return (EPSILON > fabs(a-b)); }
static bool Less(double a, double b) { return ((a-b) < (-EPSILON)); }
static bool Greater(double a, double b) { return ((a-b) > EPSILON); }
int main(int argc, char *argv[]) {
int opt;
PalisadeParallelControls.Enable();
static struct option long_options[] =
{
/* These options dont set a flag.
We distinguish them by their indices. */
{"SNPdir", required_argument, 0, 'S'},
{"SNPfilename", required_argument, 0, 's'},
{"pvalue", required_argument, 0, 'p'},
{"runtime", required_argument, 0, 'r'},
{"samplesize", required_argument, 0, 'N'},
{"snps", required_argument, 0, 'M'},
{0, 0, 0, 0}
};
/* getopt_long stores the option index here. */
int option_index = 0;
string SNPDir;
string SNPFileName;
string pValue;
string Runtime;
string SampleSize;
string SNPs;
vector<string> headers1;
vector<string> headersS;
std::vector<double> yData;
std::vector<std::vector<double>> sData;
while ((opt = getopt_long(argc, argv, "S:s:p:r:N:M", long_options, &option_index)) != -1) {
switch (opt)
{
case 'S':
SNPDir = optarg;
break;
case 's':
SNPFileName = optarg;
break;
case 'p':
pValue = optarg;
break;
case 'r':
Runtime = optarg;
break;
case 'N':
SampleSize = optarg;
break;
case 'M':
SNPs = optarg;
break;
default: /* '?' */
std::cerr<< "Usage: "<<argv[0]<<" <arguments> " <<std::endl
<< "arguments:" <<std::endl
<< " -S --SNPdir SNP file directory" <<std::endl
<< " -s --SNPfilename SNP file name" <<std::endl
<< " -o --pvalue p-values file" <<std::endl
<< " -r --runtime runtime output file name" <<std::endl
<< " -N --samplesize number of individuals" <<std::endl
<< " -M --snps number of SNPs" <<std::endl;
exit(EXIT_FAILURE);
}
}
mt::level mt_level = mt::multiple;
boost::mpi::environment env(argc, argv, mt_level);
mt ::level provided = env.thread_level();
mpi::communicator world;
if (world.rank() == 0){
std::cout << "Asked the MPI environment to be created with threading level: "\
<< mt_level << std::endl;
std::cout << "MPI Environment was created with threading level: " << provided \
<< std::endl;
}
char hammer_host[256];
gethostname(hammer_host, 256);
std::cout << "\nHello from process " << world.rank() << " of " << world.size()
<< " running on " << hammer_host << std::endl;
world.barrier();
ReadSNPFile(headersS,sData,yData,SNPDir + "/" + SNPFileName,1,1, 0);
auto tot_sys_mem = getTotalSystemMemory();
auto mem_test = (double) ((yData.size() * (sizeof(double_t)) + (sData.size() * (sData.back().size() * sizeof(double_t)))));
std::cout << "Maximum Memory size of Node " << world.rank() << " is " << std::ceil(double(tot_sys_mem/1024.0/1024.0/1024.0) * 100.0)/100.0 << " GB" << std::endl;
int batch_size = std::floor((0.50*tot_sys_mem)/mem_test);
int rem = std::stoi(SampleSize) % world.size();
int node_samples = std::stoi(SampleSize)/world.size();
int node_start = world.rank()*node_samples + rem;
//int node_stop = node_start+(node_samples-1);
if (world.rank() < rem){
node_start = world.rank() * (node_samples+1);
//int node_stop = node_start + node_samples;
}
std::cout << "Node " << world.rank() << " can have a maximum batch size of " << batch_size << " samples." << std::endl;
world.barrier();
if (world.rank() == 0 ){
std::cout << "Each node is responsible for " << node_samples << " samples.\n" << std::endl;
}
double keyGenTime(0.0);
double encryptionTime(0.0);
double computationTime(0.0);
double decryptionTime(0.0);
double endToEndTime(0.0);
//usint m = 16384;
usint m = 65536;
usint init_size = 4;
usint dcrtBits = 54;
CryptoContext<DCRTPoly> cc =
CryptoContextFactory<DCRTPoly>::genCryptoContextCKKS(
init_size-1,
dcrtBits,
0,
HEStd_128_classic,
m/2, /*ringDimension*/
APPROXRESCALE,
BV,
3, /*numLargeDigits*/
2, /*maxDepth*/
dcrtBits, /*firstMod*/
0,
OPTIMIZED);
cc->Enable(ENCRYPTION);
cc->Enable(SHE);
cc->Enable(LEVELEDSHE);
TimeVar t;
TIC(t);
auto keyPair = cc->KeyGen();
keyGenTime += TOC(t);
for (int i = 0; i < std::ceil((double)node_samples/(double)batch_size); i++)
{
int curr_batch = node_samples - (batch_size*i);
int batch_gen = curr_batch;
if (curr_batch > batch_size){
batch_gen = batch_size;
}
int file_start = node_start + (batch_size*i);
std::cout << "Node " << world.rank() << " running batch " << i << " with batch size " << batch_gen << std::endl;
RunChi2(SNPDir, SNPFileName, pValue, Runtime, std::to_string(batch_gen), SNPs, file_start, keyGenTime, encryptionTime, computationTime, decryptionTime, endToEndTime, cc, keyPair, i, world);
}
std::cout << "Node " << world.rank() << " completed all batches." << std::endl;
if (world.rank() != 0){
world.isend(0, 0, keyGenTime);
world.isend(0, 1, encryptionTime);
world.isend(0, 2, computationTime);
world.isend(0, 3, decryptionTime);
world.isend(0, 4, endToEndTime);
}
world.barrier();
if (world.rank() == 0){
std::vector<double> task_times;
for (int task = 0; task < 5; task++){
task_times.push_back(0);
}
task_times.at(0) += keyGenTime;
task_times.at(1) = encryptionTime;
task_times.at(2)= computationTime;
task_times.at(3) = decryptionTime;
task_times.at(4) = endToEndTime;
if (world.size() > 1){
for (int j = 0; j < 5; j++){
while (world.iprobe(mpi::any_source, j)){
double tmp;
world.recv(mpi::any_source, j, tmp);
task_times.at(j) += tmp;
}
}
}
std::cout << "\nTotal Key Generation Time: \t\t" << task_times.at(0)/1000 << " s" << std::endl;
std::cout << "Total Encoding and Encryption Time: \t" << task_times.at(1)/1000 << " s" << std::endl;
std::cout << "Total Computation Time: \t\t" << task_times.at(2)/1000 << " s" << std::endl;
std::cout << "Total Decryption & Decoding Time: \t" << task_times.at(3)/1000 << " s" << std::endl;
std::cout << "Total End-to-end Runtime: \t\t" << task_times.at(4)/1000 << " s" << std::endl;
}
return 0;
}
void RunChi2(const string &SNPDir,
const string &SNPFileName, const string &pValue, const string &Runtime, const string &SampleSize, const string &SNPs,
size_t file_start, double &keyGenTime, double &encryptionTime, double &computationTime, double &decryptionTime, double &endToEndTime,
CryptoContext<DCRTPoly> &cc, auto &keyPair, int batch_num, mpi::communicator &world) {
TimeVar t;
TimeVar tAll;
TIC(tAll);
//std::cout << "\n======CHI-SQUARE SOLUTION========\n" << std::endl;
vector<string> headers1;
vector<string> headersS;
std::vector<double> yData;
std::vector<std::vector<double>> sData;
size_t N = std::stoi(SampleSize);
size_t M = std::stoi(SNPs);
usint m = 65536;
double scalingFactor = 2.5e-6;
ReadSNPFile(headersS,sData,yData,SNPDir + "/" + SNPFileName,N,M, file_start);
TIC(t);
size_t sizeS = (size_t)std::ceil((double)sData[0].size()/(m/4));
std::vector<std::vector<std::vector<std::complex<double>>>> sDataArray(sizeS);
for(size_t s = 0; s < sizeS; s++)
sDataArray[s] = std::vector<std::vector<std::complex<double>>>(sData.size());
for (size_t i=0; i < sData.size(); i++){
for(size_t s = 0; s < sizeS; s++)
sDataArray[s][i] = std::vector<std::complex<double>>(sData[i].size());
size_t counter = 0;
for (size_t j=0; j<sData[i].size(); j++) {
if ((j>0) && (j%(m/4)==0))
counter++;
sDataArray[counter][i][j%(m/4)] = sData[i][j];
}
}
//std::cerr << " sData = " << sDataArray << std::endl;
std::vector<std::vector<Ciphertext<DCRTPoly>>> S(sizeS);
std::vector<Ciphertext<DCRTPoly>> Y(N);
for (size_t i = 0; i < sizeS; i++)
S[i] = std::vector<Ciphertext<DCRTPoly>>(N);
//Encryption of single-integer ciphertexts
#pragma omp parallel for
for (size_t i=0; i<N; i++){
for (size_t s=0; s < sizeS; s++){
Plaintext sTemp = cc->MakeCKKSPackedPlaintext(sDataArray[s][i]);
S[s][i] = cc->Encrypt(keyPair.publicKey, sTemp);
}
Plaintext sTemp2 = cc->MakeCKKSPackedPlaintext(std::vector<std::complex<double>>(m/4,yData[i]));
Y[i] = cc->Encrypt(keyPair.publicKey, sTemp2);
}
encryptionTime += TOC(t);
TIC(t);
Plaintext d = cc->MakeCKKSPackedPlaintext(std::vector<std::complex<double>>(m/4,2*N));
d->SetFormat(EVALUATION);
Plaintext dScaled = cc->MakeCKKSPackedPlaintext(std::vector<std::complex<double>>(m/4,2*N*scalingFactor));
dScaled->SetFormat(EVALUATION);
std::vector<Ciphertext<DCRTPoly>> ySum = Y;
auto yU = BinaryTreeAdd(ySum);
std::vector<Ciphertext<DCRTPoly>> chiD(sizeS);
std::vector<Ciphertext<DCRTPoly>> chiN(sizeS);
std::vector<Ciphertext<DCRTPoly>> orD(sizeS);
std::vector<Ciphertext<DCRTPoly>> orN(sizeS);
for (size_t s = 0; s < sizeS; s++) {
std::vector<Ciphertext<DCRTPoly>> ySMult(N);
#pragma omp parallel for
for(size_t i = 0; i < N; i++) {
ySMult[i] = cc->EvalMultNoRelin(S[s][i],Y[i]);
}
auto n11 = BinaryTreeAdd(ySMult);
n11 = cc->ModReduce(n11);
auto c1 = BinaryTreeAdd(S[s]);
auto r1 = cc->EvalAdd(yU,yU);
auto r1Scaled = cc->EvalMult(r1,scalingFactor);
r1Scaled = cc->ModReduce(r1Scaled);
auto c1Scaled = cc->EvalMult(c1,scalingFactor);
c1Scaled = cc->ModReduce(c1Scaled);
r1 = cc->LevelReduce(r1,nullptr);
c1 = cc->LevelReduce(c1,nullptr);
// Chi2 computation
// numerator
auto mult1 = cc->EvalMult(n11,dScaled);
auto mult2 = cc->EvalMultNoRelin(c1,r1Scaled);
auto chiN1 = cc->EvalSub(mult1,mult2);
chiN1 = cc->ModReduce(chiN1);
chiN[s] = cc->EvalMultNoRelin(chiN1,chiN1);
// denominator
auto chiD1 = cc->EvalMultNoRelin(c1,cc->EvalSub(dScaled,c1Scaled));
chiD1 = cc->ModReduce(chiD1);
auto chiD2 = cc->EvalMultNoRelin(r1,cc->EvalSub(dScaled,r1Scaled));
chiD2 = cc->ModReduce(chiD2);
chiD[s] = cc->EvalMultNoRelin(chiD1,chiD2);
// Odds Ratio Computation
auto n11Scaled = cc->EvalMult(n11,scalingFactor);
n11Scaled = cc->ModReduce(n11Scaled);
// denominator
auto or2 = cc->EvalSub(c1,n11);
or2 = cc->LevelReduce(or2,nullptr);
r1Scaled = cc->LevelReduce(r1Scaled,nullptr);
auto or3 = cc->EvalSub(r1Scaled,n11Scaled);
orD[s] = cc->EvalMultNoRelin(or2,or3);
// numerator
auto or1 = cc->EvalSub(n11Scaled,r1Scaled);
c1Scaled = cc->LevelReduce(c1Scaled,nullptr);
or1 = cc->EvalSub(or1,c1Scaled);
or1 = cc->EvalAdd(or1,dScaled);
n11 = cc->LevelReduce(n11,nullptr);
orN[s] = cc->EvalMultNoRelin(n11,or1);
}
computationTime += TOC(t);
TIC(t);
std::vector<Plaintext> pN(sizeS);
std::vector<Plaintext> pD(sizeS);
std::vector<Plaintext> oddN(sizeS);
std::vector<Plaintext> oddD(sizeS);
for (size_t s = 0; s < sizeS; s++) {
cc->Decrypt(keyPair.secretKey, chiN[s] , &(pN[s]));
cc->Decrypt(keyPair.secretKey, chiD[s] , &(pD[s]));
cc->Decrypt(keyPair.secretKey, orN[s] , &(oddN[s]));
cc->Decrypt(keyPair.secretKey, orD[s] , &(oddD[s]));
}
decryptionTime += TOC(t);
std::vector<double> chival(headersS.size());
std::vector<double> pval(headersS.size());
std::vector<double> odds(headersS.size());
for (size_t s = 0; s < sizeS; s++) {
for (size_t i = 0; i < m/4; i++) {
if (s*m/4 + i < headersS.size()) {
chival[s*m/4 + i] = pN[s]->GetCKKSPackedValue()[i].real()*2*N/pD[s]->GetCKKSPackedValue()[i].real();
if (chival[s*m/4 + i] < 0)
chival[s*m/4 + i] = 0;
pval[s*m/4 + i] = (double)1-IncompleteGamma(chival[s*m/4 + i]/2,0.5);
if (pval[s*m/4 + i] < 0)
pval[s*m/4 + i] = 1e-15;
else
if (pval[s*m/4 + i]==0)
pval[s*m/4 + i] = BS(sqrt(chival[s*m/4 + i]));
odds[s*m/4 + i] = oddN[s]->GetCKKSPackedValue()[i].real()/oddD[s]->GetCKKSPackedValue()[i].real();
}
}
}
ofstream myfile;
myfile.open(SNPDir + "/" + std::to_string(world.rank()) + "_" + std::to_string(batch_num) + pValue);
myfile.precision(10);
for(uint32_t i = 0; i < headersS.size(); i++) {
myfile << headersS[i] << "\t" << pval[i] << std::endl;
}
myfile.close();
ofstream myfile2;
myfile2.open(SNPDir + "/" + std::to_string(world.rank()) + "_" + std::to_string(batch_num) + "odds.txt");
myfile2.precision(10);
for(uint32_t i = 0; i < headersS.size(); i++) {
myfile2 << headersS[i] << "\t" << odds[i] << std::endl;
}
myfile2.close();
ofstream myfile3;
myfile3.open(SNPDir + "/" + std::to_string(world.rank())+ "_" + std::to_string(batch_num) + "chi2.txt");
myfile3.precision(10);
for(uint32_t i = 0; i < headersS.size(); i++) {
myfile3 << headersS[i] << "\t" << chival[i] << std::endl;
}
myfile3.close();
//std::cout << "\nKey Generation Time: \t\t" << keyGenTime/1000 << " s" << std::endl;
//std::cout << "Encoding and Encryption Time: \t" << encryptionTime/1000 << " s" << std::endl;
//std::cout << "Computation Time: \t\t" << computationTime/1000 << " s" << std::endl;
//std::cout << "Decryption & Decoding Time: \t" << decryptionTime/1000 << " s" << std::endl;
endToEndTime += TOC(tAll);
//std::cout << "\nEnd-to-end Runtime: \t\t" << endToEndTime/1000 << " s" << std::endl;
ofstream myfileRuntime;
myfileRuntime.open(SNPDir + "/" + std::to_string(world.rank()) + "_" + std::to_string(batch_num) + Runtime);
myfileRuntime << "Key Generation Time: \t\t" << keyGenTime/1000 << " s" << std::endl;
myfileRuntime << "Encoding and Encryption Time: \t" << encryptionTime/1000 << " s" << std::endl;
myfileRuntime << "Computation Time: \t\t" << computationTime/1000 << " s" << std::endl;
myfileRuntime << "Decryption & Decoding Time: \t" << decryptionTime/1000 << " s" << std::endl;
myfileRuntime << "End-to-end Runtime: \t\t" << endToEndTime/1000 << " s" << std::endl;
myfileRuntime.close();
}
Ciphertext<DCRTPoly> BinaryTreeAdd(std::vector<Ciphertext<DCRTPoly>> &vector) {
auto cc = vector[0]->GetCryptoContext();
for(size_t j = 1; j < vector.size(); j=j*2) {
for(size_t i = 0; i<vector.size(); i = i + 2*j) {
if ((i+j)<vector.size())
vector[i] = cc->EvalAdd(vector[i],vector[i+j]);
}
}
Ciphertext<DCRTPoly> result(new CiphertextImpl<DCRTPoly>(*(vector[0])));
return result;
}
double IncompleteGamma(double val, double p)
{
if( !Greater(val, 0) || !Greater(p, 0) )
return 0;
double expValue = p*log(val) - val - lgamma(p);
if( Less(expValue, log(1.0E-37)) ) // undeflow
return 0;
double factor = exp(expValue);
if( !Greater(val, 1) || Less(val, p) )
{
double igamma = 1;
double term = 1;
for( int i = 1; Greater(term, EPSILON); ++i )
{
term *= (val/(p+i));
igamma += term;
}
return (igamma*factor/p);
}
double pn[6] = { 1, val, val+1, val*(2+val-p) };
double upperIncGamma = pn[2]/pn[3];
for( int j = 1; ; ++j )
{
double a = (j+1)*2 + val- p;
double b = (1 + j - p)*j;
pn[4] = a*pn[2] - b*pn[0];
pn[5] = a*pn[3] - b*pn[1];
if( !Equal(pn[5], 0) )
{
double rn = pn[4]/pn[5];
double diff = fabs(upperIncGamma - rn);
if( !Greater(diff, EPSILON) && !Greater(diff, (EPSILON*rn)) )
return (1 - factor*upperIncGamma);
upperIncGamma = rn;
}
for( int i = 0; i < 4; i++ )
pn[i] = pn[i+2];
if( !Greater(1.0E+37, fabs(pn[4])) ) // overflow
{
for( int i = 0; i < 4; i++ )
pn[i] = pn[i] / 1.0E+37;
}
}
return 0;
}
void ReadSNPFile(vector<string>& headers, std::vector<std::vector<double>> & dataColumns, std::vector<double> &y,
string dataFileName, size_t N, size_t M, size_t from)
{
uint32_t cols = 0;
string fileName = dataFileName + ".csv";
//std::cerr << "file name = " << fileName << std::endl;
ifstream file(fileName);
string line, value;
if(file.good()) {
getline(file, line);
cols = std::count(line.begin(), line.end(), ',') + 1;
stringstream ss(line);
vector<string> result;
size_t tempcounter = 0;
for(uint32_t i = 0; i < cols; i++) {
string substr;
getline(ss, substr, ',');
if ((substr != "") && (i>4) && (i<M+5)) {
headers.push_back(substr);
tempcounter++;
}
}
cols = tempcounter;
}
size_t counter = 0;
size_t skip_counter = 0;
while((file.good()) && (counter < N)) {
while(skip_counter < from){
getline(file, line);
skip_counter++;
}
getline(file, line);
uint32_t curCols = std::count(line.begin(), line.end(), ',') + 1;
if (curCols > 2) {
stringstream ss(line);
for(uint32_t i = 0; i < 5; i++) {
string substr;
getline(ss, substr, ',');
if ((i==1))
y.push_back(std::stod(substr));
}
std::vector<double> row(cols);
for(uint32_t i = 5; i < cols + 5; i++) {
string substr;
getline(ss, substr, ',');
if (i < M+5)
{
double val;
val = std::stod(substr);
row[i-5] = val;
}
}
dataColumns.push_back(row);
}
counter++;
}
file.close();
//std::cout << "Read in data: ";
//std::cout << dataFileName << std::endl;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
#ifndef _DEMO_CHI2_H
#define _DEMO_CHI2_H
#include "palisade.h"
#include <boost/mpi/communicator.hpp>
using namespace lbcrypto;
using namespace std;
namespace mpi = boost::mpi;
const double EPSILON = 1.0E-08;
void RunChi2(const string &SNPDir,
const string &SNPFileName, const string &pValue, const string &Runtime, const string &SampleSize, const string &SNPs,
size_t file_start,
double &keyGenTime, double &encryptionTime, double &computationTime, double &decryptionTime, double &endToEndTime,
CryptoContext<DCRTPoly> &cc, auto &keyPair, int batch_num, mpi::communicator &world);
Ciphertext<DCRTPoly> BinaryTreeAdd(std::vector<Ciphertext<DCRTPoly>> &vector);
void ReadSNPFile(vector<string>& headers, std::vector<std::vector<double>> & dataColumns, std::vector<double> &y, string dataFileName, size_t N, size_t M, size_t from);
double normalCFD(double value) { return 0.5 * erfc(-value * M_SQRT1_2); }
double sf(double value) { return 1 - normalCFD(value); }
double IncompleteGamma(double val, double p);
#endif //demo-chi2.h

@ -1 +0,0 @@
Subproject commit 622be46e44b7fac1c0ff1906fa4edda0629be438

View File

@ -0,0 +1,2 @@
BasedOnStyle: Google
SortIncludes: false

View File

@ -0,0 +1,24 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.5.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-merge-conflict
- id: mixed-line-ending
- id: check-byte-order-marker
- repo: local
hooks:
- id: clang-format
name: clang-format
entry: clang-format
language: system
files: \.(c|cc|cxx|cpp|h|hpp|hxx|js|proto)$
args: ["-i"]
- id: cpplint
name: cpplint
entry: cpplint
language: system
files: \.(c|cc|cxx|cpp|h|hpp|hxx)$
args:
- --recursive

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python interpreter</pydev_property>
</pydev_project>

View File

@ -0,0 +1,48 @@
cmake_minimum_required (VERSION 3.5.1)
### To use gcc/g++ on a Macintosh, you must set the Compilers
### here, not inside the project
##if(APPLE)
## set(CMAKE_C_COMPILER "/usr/local/bin/gcc-7")
## set(CMAKE_CXX_COMPILER "/usr/local/bin/g++-7")
##endif()
### TODO: for now, we use CLang for Mac
###
### In order to create PALISADE's static libraries you should enable
### the BUILD_STATIC option. For that, you run "cmake .. -DBUILD_STATIC=ON".
### After having your link completed you will find static libs
### with the suffix "_static" in ./build/libs/.
### Examples: PALISADEpke_static.a, PALISADEcore_static.a, etc.
### After you run "make install" in your build directory, you can build your custom application.
### If you need your application to be linked statically, then run "cmake .. -DBUILD_STATIC=ON"
project(demo CXX)
set(CMAKE_CXX_STANDARD 11)
option( BUILD_STATIC "Set to ON to include static versions of the library" OFF)
find_package(Palisade)
set( CMAKE_CXX_FLAGS ${PALISADE_CXX_FLAGS} )
include_directories( ${OPENMP_INCLUDES} )
include_directories( ${PALISADE_INCLUDE} )
include_directories( ${PALISADE_INCLUDE}/third-party/include )
include_directories( ${PALISADE_INCLUDE}/core )
include_directories( ${PALISADE_INCLUDE}/pke )
### add directories for other PALISADE modules as needed for your project
link_directories( ${PALISADE_LIBDIR} )
link_directories( ${OPENMP_LIBRARIES} )
if(BUILD_STATIC)
set( CMAKE_EXE_LINKER_FLAGS "${PALISADE_EXE_LINKER_FLAGS} -static")
link_libraries( ${PALISADE_STATIC_LIBRARIES} )
else()
set( CMAKE_EXE_LINKER_FLAGS ${PALISADE_EXE_LINKER_FLAGS} )
link_libraries( ${PALISADE_SHARED_LIBRARIES} )
endif()
### ADD YOUR EXECUTABLE(s) HERE
### add_executable( EXECUTABLE-NAME SOURCES )
###
### EXAMPLE:
### add_executable( test demo-simple-example.cpp )

View File

@ -0,0 +1,765 @@
##
## CMakeLists.txt for PALISADE
##
## This script will build machine-specific header files for compile
## as it generates the Makefile
##
## Note many user options are handled using an OPTION in CMake
## An option has the value of ON or OFF
## See below for the list of options
cmake_minimum_required (VERSION 3.5.1)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
endif()
### To use gcc/g++ on a Macintosh, you must set the Compilers
### here, not inside the project
##if(APPLE)
## set(CMAKE_C_COMPILER "/usr/local/bin/gcc-7")
## set(CMAKE_CXX_COMPILER "/usr/local/bin/g++-7")
##endif()
### TODO: for now, we use CLang for Mac
project (PALISADE C CXX)
set(PALISADE_VERSION_MAJOR 1)
set(PALISADE_VERSION_MINOR 11)
set(PALISADE_VERSION_PATCH 8)
set(PALISADE_VERSION ${PALISADE_VERSION_MAJOR}.${PALISADE_VERSION_MINOR}.${PALISADE_VERSION_PATCH})
set(CMAKE_CXX_STANDARD 11)
set(CXX_STANDARD_REQUIRED ON)
#--------------------------------------------------------------------
# Build options
#--------------------------------------------------------------------
if(CMAKE_BUILD_TYPE)
set(RELEASE_TYPES
Debug
Release
RelWithDebInfo
MinSizeRel)
list(FIND RELEASE_TYPES ${CMAKE_BUILD_TYPE} INDEX_FOUND)
if(${INDEX_FOUND} EQUAL -1)
message(
FATAL_ERROR
"CMAKE_BUILD_TYPE must be one of Debug, Release, RelWithDebInfo, or MinSizeRel"
)
endif()
else()
# if no build type is chosen, default to Release mode
set(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build, options are: None, Debug, Release, RelWithDebInfo, or
MinSizeRel."
FORCE )
endif()
message(STATUS "Building in ${CMAKE_BUILD_TYPE} mode" )
if ( EMSCRIPTEN )
set(BUILD_SHARED OFF)
message( "Shared library is not supported by Emscripten")
option( BUILD_STATIC "Set to ON to build static versions of the library" ON)
option( BUILD_UNITTESTS "Set to ON to build unit tests for the library" OFF)
option( BUILD_EXAMPLES "Set to ON to build examples for the library" OFF)
option( BUILD_BENCHMARKS "Set to ON to build benchmarks for the library" OFF)
option( WITH_OPENMP "OpenMP is not supported by Emscripten" OFF)
else()
option( BUILD_SHARED "Set to ON to build shared versions of the library" ON)
option( BUILD_STATIC "Set to ON to build static versions of the library" OFF)
option( BUILD_UNITTESTS "Set to ON to build unit tests for the library" ON)
option( BUILD_EXAMPLES "Set to ON to build examples for the library" ON)
option( BUILD_BENCHMARKS "Set to ON to build benchmarks for the library" ON)
option( WITH_OPENMP "Use OpenMP to enable <omp.h>" ON)
endif()
option( BUILD_EXTRAS "Set to ON to build extras for the library" OFF)
option( GIT_SUBMOD_AUTO "Submodules auto-update" ON)
option( WITH_BE2 "Include Backend 2 in build by setting WITH_BE2 to ON" ON )
option( WITH_BE4 "Include Backend 4 in build by setting WITH_BE4 to ON" ON )
option( WITH_NTL "Include Backend 6 and NTL in build by setting WITH_NTL to ON" OFF )
option( WITH_TCM "Activate tcmalloc by setting WITH_TCM to ON" OFF )
option( WITH_INTEL_HEXL "Use Intel HEXL library" OFF)
option( WITH_NATIVEOPT "Use machine-specific optimizations" OFF)
option( WITH_COVTEST "Turn on to enable coverage testing" OFF)
option( USE_MACPORTS "Use MacPorts installed packages" OFF)
# Set required number of bits for native integer in build by setting NATIVE_SIZE to 64 or 128
if( NOT NATIVE_SIZE )
set( NATIVE_SIZE 64 )
# set( NATIVE_SIZE 128 )
endif()
if( NOT CKKS_M_FACTOR )
set( CKKS_M_FACTOR 1 )
endif()
### Print options
message( STATUS "BUILD_UNITTESTS: ${BUILD_UNITTESTS}")
message( STATUS "BUILD_EXAMPLES: ${BUILD_EXAMPLES}")
message( STATUS "BUILD_BENCHMARKS: ${BUILD_BENCHMARKS}")
message( STATUS "BUILD_EXTRAS: ${BUILD_EXTRAS}")
message( STATUS "BUILD_STATIC: ${BUILD_STATIC}")
message( STATUS "BUILD_SHARED: ${BUILD_SHARED}")
message( STATUS "GIT_SUBMOD_AUTO: ${GIT_SUBMOD_AUTO}")
message( STATUS "WITH_BE2: ${WITH_BE2}")
message( STATUS "WITH_BE4: ${WITH_BE4}")
message( STATUS "WITH_NTL: ${WITH_NTL}")
message( STATUS "WITH_TCM: ${WITH_TCM}")
message( STATUS "WITH_INTEL_HEXL: ${WITH_INTEL_HEXL}")
message( STATUS "WITH_OPENMP: ${WITH_OPENMP}")
message( STATUS "NATIVE_SIZE: ${NATIVE_SIZE}")
message( STATUS "CKKS_M_FACTOR: ${CKKS_M_FACTOR}")
message( STATUS "WITH_NATIVEOPT: ${WITH_NATIVEOPT}")
message( STATUS "WITH_COVTEST: ${WITH_COVTEST}")
message( STATUS "USE_MACPORTS: ${USE_MACPORTS}")
#--------------------------------------------------------------------
# Compiler logic
#--------------------------------------------------------------------
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# require at least gcc 6.1
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.1)
message(WARNING "GCC version should be at least 6.1.")
endif()
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
# require at least clang 6
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6)
message(WARNING "Clang version should be at least 6.")
endif()
else()
message(WARNING "You are using ${CMAKE_CXX_COMPILER_ID} version ${CMAKE_CXX_COMPILER_VERSION}, which is unsupported.")
endif()
# use, i.e. don't skip the full RPATH for the build tree
set(CMAKE_SKIP_BUILD_RPATH FALSE)
# when building, don't use the install RPATH already
# (but later on when installing)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
set(CMAKE_INSTALL_RPATH "${LIBINSTALL}")
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# the RPATH to be used when installing, but only if it's not a system directory
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${LIBINSTALL}" isSystemDir)
if("${isSystemDir}" STREQUAL "-1")
set(CMAKE_INSTALL_RPATH "${LIBINSTALL}")
endif("${isSystemDir}" STREQUAL "-1")
# Compiler flags
# Added -Wno-parentheses for compatibility with g++
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set (IGNORE_WARNINGS "-Wno-parentheses")
# we can use GNU built-in functions provided by GCC for debugging. ex: __builtin_LINE (), __builtin_FUNCTION (), __builtin_FILE ()
add_definitions(-DBUILTIN_INFO_AVAILABLE)
message (STATUS "BUILTIN_INFO_AVAILABLE is defined")
endif()
if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
set(IGNORE_WARNINGS "${IGNORE_WARNINGS} -Wno-unused-private-field -Wno-shift-op-parentheses")
endif()
if( WITH_NATIVEOPT )
set (NATIVE_OPT "-march=native")
else()
set (NATIVE_OPT "")
endif()
set(C_COMPILE_FLAGS "-Wall -Werror -O3 ${NATIVE_OPT} -DPALISADE_VERSION=${PALISADE_VERSION}")
set(CXX_COMPILE_FLAGS "-Wall -Werror -O3 ${NATIVE_OPT} -DPALISADE_VERSION=${PALISADE_VERSION} ${IGNORE_WARNINGS}")
if ( EMSCRIPTEN )
set(EMSCRIPTEN_IGNORE_WARNINGS "-Wno-unused-but-set-variable -Wno-unknown-warning-option")
set(C_COMPILE_FLAGS "${C_COMPILE_FLAGS} ${EMSCRIPTEN_IGNORE_WARNINGS}")
set(CXX_COMPILE_FLAGS "${CXX_COMPILE_FLAGS} ${EMSCRIPTEN_IGNORE_WARNINGS}")
add_compile_options(-fexceptions)
add_link_options(
-sINITIAL_MEMORY=2047MB -sMAXIMUM_MEMORY=4GB -sALLOW_MEMORY_GROWTH=1
-sMALLOC=emmalloc -sNO_DISABLE_EXCEPTION_CATCHING
)
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_COMPILE_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_COMPILE_FLAGS}")
if(WITH_COVTEST)
#Set flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
link_libraries(gcov)
set( BUILDDIR ${CMAKE_CURRENT_SOURCE_DIR}/build/)
set( COVDIR ${BUILDDIR}coverage/)
endif()
if(BUILD_STATIC)
set(PALISADE_STATIC_LIBS PALISADEcore_static PALISADEpke_static PALISADEbinfhe_static)
endif()
if(BUILD_SHARED)
set(PALISADE_SHARED_LIBS PALISADEcore PALISADEpke PALISADEbinfhe)
endif()
set(PALISADE_PACKAGE_LIBS ${PALISADE_STATIC_LIBS} ${PALISADE_SHARED_LIBS})
#--------------------------------------------------------------------
# Installation logic
#--------------------------------------------------------------------
### set up for install
set(INSTALL_LIB_DIR lib CACHE PATH
"Installation directory for libraries")
set(INSTALL_INCLUDE_DIR include/palisade CACHE PATH
"Installation directory for headers")
if(WIN32 AND NOT CYGWIN)
set(DEF_INSTALL_CMAKE_DIR CMake)
else()
set(DEF_INSTALL_CMAKE_DIR lib/Palisade)
endif()
set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH
"Installation directory for CMake files")
foreach(p LIB INCLUDE CMAKE)
set(var INSTALL_${p}_DIR)
if(NOT IS_ABSOLUTE "${${var}}")
set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
endif()
endforeach()
message("***** INSTALL IS AT ${CMAKE_INSTALL_PREFIX}; to change, run cmake with -DCMAKE_INSTALL_PREFIX=/your/path")
set (CMAKE_INSTALL_MESSAGE LAZY)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
#--------------------------------------------------------------------
# Uninstall logic
#--------------------------------------------------------------------
## clobber cleans and deletes the third-party stuff
add_custom_target(
COMMAND make clean
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_custom_target("uninstall" COMMENT "Uninstall PALISADE files")
add_custom_command(
TARGET "uninstall"
POST_BUILD
COMMENT "Uninstall files within install_manifest.txt"
COMMAND ../maint/uninstall_script.sh
USES_TERMINAL
)
#--------------------------------------------------------------------
# Machine-specific checks
#--------------------------------------------------------------------
# determine the architecture on a Linux/Unix/macOS/MinGW system
if(CMAKE_HOST_UNIX OR MINGW)
EXECUTE_PROCESS( COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE )
else()
set(ARCHITECTURE "unknown")
endif()
if(ARCHITECTURE)
message(STATUS "Architecture is " ${ARCHITECTURE})
endif()
# Size checks
include(CheckTypeSize)
check_type_size("__int128" INT128)
check_type_size("uint64_t" INT64)
if (NOT(BUILD_SHARED OR BUILD_STATIC))
message(SEND_ERROR "Either BUILD_SHARED or BUILD_STATIC neeed to be turned on.")
endif()
if( "${NATIVE_SIZE}" EQUAL 128 )
if( ${HAVE_INT128} )
set( NATIVEINT 128 )
message (STATUS "NATIVEINT is set to " ${NATIVEINT})
else()
message(SEND_ERROR "Cannot support NATIVE_SIZE == 128")
endif()
elseif( "${NATIVE_SIZE}" EQUAL 64 )
if( ${HAVE_INT64} )
set( NATIVEINT 64 )
message (STATUS "NATIVEINT is set to " ${NATIVEINT})
else()
message(SEND_ERROR "Cannot support NATIVE_SIZE == 64")
endif()
elseif( "${NATIVE_SIZE}" EQUAL 32 )
if( ${HAVE_INT64} )
set( NATIVEINT 32 )
set( HAVE_INT128 FALSE)
message (STATUS "NATIVEINT is set to " ${NATIVEINT})
else()
message(SEND_ERROR "Cannot support NATIVE_SIZE == 32")
endif()
else()
message(SEND_ERROR "NATIVE_SIZE is " ${NATIVE_SIZE})
message(SEND_ERROR "***ERROR*** need a Native implementation")
endif()
#--------------------------------------------------------------------
# Backend logic
#--------------------------------------------------------------------
## default math backend is 2 for 32-bit and 64-bit integers and 4 for 128-bit integers
if( NOT MATHBACKEND AND NOT ${NATIVE_SIZE} EQUAL 128)
set( MATHBACKEND 2 )
elseif(NOT MATHBACKEND AND ${NATIVE_SIZE} EQUAL 128)
set( MATHBACKEND 4 )
endif()
message (STATUS "MATHBACKEND is set to " ${MATHBACKEND})
if( "${MATHBACKEND}" EQUAL 2 )
if( NOT WITH_BE2 )
message(SEND_ERROR "Cannot select backend 2 if WITH_BE2 is disabled")
endif()
elseif( "${MATHBACKEND}" EQUAL 4 )
if( NOT WITH_BE4 )
message(SEND_ERROR "Cannot select backend 4 if WITH_BE4 is disabled")
endif()
elseif( "${MATHBACKEND}" EQUAL 6 )
if( NOT WITH_NTL )
message(SEND_ERROR "Cannot select backend 6 if WITH_NTL is disabled")
endif()
else()
message(SEND_ERROR "Backend must be 2, 4 or 6")
endif()
if( "${MATHBACKEND}" EQUAL 6 AND "${NATIVEINT}" EQUAL 128)
set (MATHBACKEND 2)
set (WITH_NTL OFF)
message (STATUS "BACKEND 6 is not compatible with 128-bit native backend. Resetting multiprecision backend to 2.")
endif()
set( PALISADE_BACKEND_FLAGS "-DMATHBACKEND=${MATHBACKEND}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PALISADE_BACKEND_FLAGS}")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PALISADE_BACKEND_FLAGS}")
if(WITH_TCM)
message(STATUS "tcmalloc is turned ON")
if(MINGW)
message(SEND_ERROR "***ERROR*** tcmalloc is not supported for MinGW")
endif()
endif()
### build configure_core.h to make options available
configure_file(./configure/config_core.in src/core/config_core.h)
install(FILES ${CMAKE_BINARY_DIR}/src/core/config_core.h DESTINATION include/palisade/core)
find_program(TAR "gtar")
find_program(TAR "tar")
### several of the third-party tools use auto-make and autoconf
### we need to make sure that they are installed
execute_process(COMMAND autogen --version OUTPUT_VARIABLE AUTOGEN_VER)
# execute_process in MINGW by default does not run in a shell
if(MINGW)
execute_process(COMMAND sh autoconf --version OUTPUT_VARIABLE AUTOCONF_VER)
else()
execute_process(COMMAND autoconf --version OUTPUT_VARIABLE AUTOCONF_VER)
endif()
string(LENGTH "${AUTOCONF_VER}" AUTOCONF_VER_LEN)
if( ${AUTOCONF_VER_LEN} EQUAL 0 )
message(SEND_ERROR "Autoconf is not installed.")
endif()
#--------------------------------------------------------------------
# OpenMP logic
#--------------------------------------------------------------------
if (WITH_OPENMP)
# Used to optionally compile openmp code
add_definitions(-DPARALLEL)
# Set OpenMP configuration manually for macOS
if (APPLE)
if (USE_MACPORTS)
# Macports-based installation
message( STATUS "Using Macports setup")
set(OPENMP_LIBRARIES "/opt/local/lib/libomp")
set(OPENMP_INCLUDES "/opt/local/include/libomp")
if(CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "AppleClang")
set(OpenMP_C_FLAGS "-Xpreprocessor -fopenmp -lomp -Wno-unused-command-line-argument")
set(OpenMP_C_LIB_NAMES "omp")
set(OpenMP_omp_LIBRARY ${OpenMP_C_LIB_NAMES})
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
set(OpenMP_CXX_FLAGS "-Xpreprocessor -fopenmp -lomp -Wno-unused-command-line-argument")
set(OpenMP_CXX_LIB_NAMES "omp")
set(OpenMP_omp_LIBRARY ${OpenMP_CXX_LIB_NAMES})
endif()
else (USE_MACPORTS)
# Homebrew-based installation
# Check for Apple M1 Processor
if (${ARCHITECTURE} MATCHES "arm64")
message( STATUS "Apple M1 detected")
set(OPENMP_LIBRARIES "/opt/homebrew/opt/libomp/lib")
set(OPENMP_INCLUDES "/opt/homebrew/opt/libomp/include")
else() # Apple Intel Processor
message( STATUS "Apple Intel detected")
set(OPENMP_LIBRARIES "/usr/local/opt/libomp/lib")
set(OPENMP_INCLUDES "/usr/local/opt/libomp/include")
endif()
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
set(OpenMP_C_FLAGS "-Xpreprocessor -fopenmp -lomp -Wno-unused-command-line-argument")
set(OpenMP_C_LIB_NAMES "libomp")
set(OpenMP_libomp_LIBRARY ${OpenMP_C_LIB_NAMES})
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(OpenMP_CXX_FLAGS "-Xpreprocessor -fopenmp -lomp -Wno-unused-command-line-argument")
set(OpenMP_CXX_LIB_NAMES "libomp")
set(OpenMP_libomp_LIBRARY ${OpenMP_CXX_LIB_NAMES})
endif()
endif (USE_MACPORTS)
include_directories("${OPENMP_INCLUDES}")
link_directories("${OPENMP_LIBRARIES}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
message( STATUS "OPENMP_LIBRARIES: " ${OPENMP_LIBRARIES})
message( STATUS "OPENMP_INCLUDES: " ${OPENMP_INCLUDES})
message( STATUS "OpenMP_CXX_FLAGS: " ${OpenMP_CXX_FLAGS})
message( STATUS "OpenMP_CXX_LIB_NAMES: " ${OpenMP_CXX_LIB_NAMES})
endif()
find_package (OpenMP)
# OpenMP_CXX_FOUND was added in cmake 3.9.x
# so we are also checking the OpenMP_FOUND flag
if (OpenMP_CXX_FOUND OR OpenMP_FOUND)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
else()
message(SEND_ERROR "** ERROR ** OpenMP is not installed. If using macOS/clang, please run 'cmake ..' again.")
endif()
if (OpenMP_C_FOUND OR OpenMP_FOUND)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
endif()
else() # WITH_OPENMP == OFF
find_package (Threads REQUIRED)
# Disable unknown #pragma omp warning
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas")
endif()
#--------------------------------------------------------------------
# Pthreads logic (only for Google benchmark)
#--------------------------------------------------------------------
# In order to have the Threads_FOUND on some Linux and macOS systems
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
set(THREADS_PREFER_PTHREAD_FLAG ON)
#--------------------------------------------------------------------
# Documentation logic
#--------------------------------------------------------------------
find_package (Git REQUIRED)
if(GIT_SUBMOD_AUTO AND EXISTS "${PROJECT_SOURCE_DIR}/.git")
# Update submodules as needed
message(STATUS "Submodule update")
if(NOT GIT_SUBMODULE_SYNCED)
# "git submodule sync --recursive" should run only once, when CMakeCache.txt doesn't exist'
execute_process(COMMAND ${GIT_EXECUTABLE} submodule sync --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMODULE_RESULT)
if(NOT GIT_SUBMODULE_RESULT EQUAL "0")
message(FATAL_ERROR "\"git submodule sync --recursive\" failed with ${GIT_SUBMODULE_RESULT}, please checkout submodules")
endif()
endif()
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMODULE_RESULT)
if(NOT GIT_SUBMODULE_RESULT EQUAL "0")
if(NOT GIT_SUBMODULE_SYNCED)
# print this message only if update has never happened
message(FATAL_ERROR "\"git submodule update --init\" failed with ${GIT_SUBMODULE_RESULT}, please checkout submodules")
else()
message(SEND_ERROR "\"git submodule update --init\" failed with ${GIT_SUBMODULE_RESULT}, please checkout submodules or disable autoupdate with -DGIT_SUBMOD_AUTO=OFF")
endif()
endif()
if(NOT GIT_SUBMODULE_SYNCED)
set(GIT_SUBMODULE_SYNCED ON CACHE BOOL "" FORCE)
endif()
endif()
find_package (Doxygen QUIET COMPONENTS dot)
if (DOXYGEN_FOUND)
add_custom_target( apidocs
COMMAND sh -c "( cat ${CMAKE_CURRENT_SOURCE_DIR}/lbcrypto-doxy-config && echo PROJECT_NUMBER=${PALISADE_VERSION} ) | ${DOXYGEN_EXECUTABLE} -"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM )
message (STATUS "Doxygen and dot are found")
else (DOXYGEN_FOUND)
message(STATUS "Doxygen and dot (from graphviz) need to be installed to generate the doxygen documentation")
endif (DOXYGEN_FOUND)
#--------------------------------------------------------------------
# Coverage logic
#--------------------------------------------------------------------
if ( WITH_COVTEST )
find_program(LCOV_BIN lcov)
if (LCOV_BIN MATCHES "lcov$")
#Creates the command make cov
add_custom_target( cov
DEPENDS core_tests pke_tests binfhe_tests
COMMAND cd ${BUILDDIR} && mkdir -p coverage
COMMAND cd ${BUILDDIR}/src/core/CMakeFiles/core_tests.dir/unittest/ && gcov *.gcno && lcov --capture --directory . --output-file ${COVDIR}/core.info
COMMAND cd ${BUILDDIR}/src/pke/CMakeFiles/pke_tests.dir/unittest/ && gcov *.gcno && lcov --capture --directory . --output-file ${COVDIR}/pke.info
COMMAND cd ${BUILDDIR}/src/binfhe/CMakeFiles/binfhe_tests.dir/unittest/ && gcov *.gcno && lcov --capture --directory . --output-file ${COVDIR}/binfhe.info
COMMAND cd ${COVDIR} && mkdir -p assets && genhtml -t "Coverage Test" -o ${COVDIR}/assets/ *.info
)
message(STATUS "lcov found in ${LCOV_BIN}")
else ()
message(STATUS "lcov needs to be installed to generate a coverage report")
endif ()
endif()
#--------------------------------------------------------------------
# Third-party logic
#--------------------------------------------------------------------
include (ExternalProject)
if (WITH_INTEL_HEXL)
include(third-party/intel-hexl/intel-hexl.cmake)
endif()
# third party directories
set( THIRDPARTYDIR ${CMAKE_CURRENT_SOURCE_DIR}/third-party )
include_directories( ${THIRDPARTYDIR}/include )
### Handle third-party CEREAL
include_directories( ${THIRDPARTYDIR}/cereal/include )
install(DIRECTORY ${THIRDPARTYDIR}/cereal/include/ DESTINATION include/palisade)
include_directories( ${CMAKE_SOURCE_DIR}/third-party/google-test/googletest )
include_directories( ${CMAKE_SOURCE_DIR}/third-party/google-test/googletest/include )
include_directories( ${CMAKE_SOURCE_DIR}/src/core/include )
include_directories( ${CMAKE_BINARY_DIR}/src/core )
### Handle third-party gperftools for optional tcmalloc
add_custom_target(
tcm
COMMAND ./autogen.sh
COMMAND ./configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/third-party --enable-minimal
COMMAND make
COMMAND make install
WORKING_DIRECTORY ${THIRDPARTYDIR}/gperftools
)
add_custom_target(
tcm_clean
COMMAND rm -rf include/gperftools include/google lib/libtcmalloc_minimal* lib/pkgconfig/libtcmalloc* lib/pkgconfig/libprofiler.pc share/doc/gperftools
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third-party
)
if(BUILD_STATIC)
add_library(tcmalloc_static STATIC IMPORTED GLOBAL)
set_target_properties(tcmalloc_static PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/third-party/lib/libtcmalloc_minimal${CMAKE_STATIC_LIBRARY_SUFFIX})
endif()
if(BUILD_SHARED)
add_library(tcmalloc SHARED IMPORTED GLOBAL)
set_target_properties(tcmalloc PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/third-party/lib/libtcmalloc_minimal${CMAKE_SHARED_LIBRARY_SUFFIX})
endif()
if(WITH_TCM)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third-party/lib DESTINATION .
FILES_MATCHING PATTERN "libtcmalloc_minimal.*")
list(APPEND THIRDPARTYLIBS "tcmalloc")
list(APPEND THIRDPARTYSTATICLIBS "tcmalloc_static")
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/third-party/include DESTINATION include/palisade/third-party/)
endif()
if(WITH_NTL)
### Find gmp and ntl libraries. They must be installed by the user
list(APPEND general_paths "/usr" "/usr/local" "/opt" "/opt/local")
list(APPEND header_suffixes "include" "include/NTL" "include/${CMAKE_LIBRARY_ARCHITECTURE}")
list(APPEND lib_suffixes "lib" "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
if (NOT(NTL_INCLUDE_DIR AND NTL_LIBRARIES))
find_path(NTL_INCLUDE_DIR
NAMES RR.h
PATHS ${general_paths}
PATH_SUFFIXES ${header_suffixes}
)
find_library(NTL_LIBRARIES
NAMES ntl libntl
ONLY_CMAKE_FIND_ROOT_PATH
PATHS ${general_paths}
PATH_SUFFIXES ${lib_suffixes}
)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(NTL DEFAULT_MSG NTL_INCLUDE_DIR NTL_LIBRARIES)
if(NTL_FOUND)
get_filename_component(NTL_LIBRARIES ${NTL_LIBRARIES} DIRECTORY)
else()
message(FATAL_ERROR "** ERROR ** libntl is not found."
"In order to use MATHBACKEND 6, install libntl or pass -DNTL_INCLUDE_DIR=<dir> and -DNTL_LIBRARIES=<dir> to cmake")
endif()
endif()
if (NOT(GMP_INCLUDE_DIR AND GMP_LIBRARIES))
find_path(GMP_INCLUDE_DIR
NAMES gmp.h
PATHS ${general_paths}
PATH_SUFFIXES ${header_suffixes}
)
find_library(GMP_LIBRARIES
NAMES gmp libgmp
ONLY_CMAKE_FIND_ROOT_PATH
PATHS ${general_paths}
PATH_SUFFIXES ${lib_suffixes}
)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GMP DEFAULT_MSG GMP_INCLUDE_DIR GMP_LIBRARIES)
if(GMP_FOUND)
get_filename_component(GMP_LIBRARIES ${GMP_LIBRARIES} DIRECTORY)
else()
message(FATAL_ERROR "** ERROR ** libgmp is not found."
"In order to use MATHBACKEND 6, install libgmp or pass -DGMP_INCLUDE_DIR=<dir> and -GMPL_LIBRARIES=<dir> to cmake")
endif()
endif()
mark_as_advanced(NTL_INCLUDE_DIR NTL_LIBRARIES)
mark_as_advanced(GMP_INCLUDE_DIR GMP_LIBRARIES)
include_directories(${NTL_INCLUDE_DIR})
include_directories(${GMP_INCLUDE_DIR})
link_directories(${NTL_LIBRARIES})
link_directories(${GMP_LIBRARIES})
list(APPEND THIRDPARTYLIBS "ntl")
list(APPEND THIRDPARTYLIBS "gmp")
list(APPEND THIRDPARTYSTATICLIBS "ntl")
list(APPEND THIRDPARTYSTATICLIBS "gmp")
endif()
if (WITH_INTEL_HEXL)
list(APPEND THIRDPARTYLIBS HEXL::hexl)
endif()
set(DEMODATAPATH ${CMAKE_CURRENT_SOURCE_DIR}/demoData)
set(BINDEMODATAPATH ${CMAKE_CURRENT_BINARY_DIR}/demoData)
# copies demoData folder from the root of the repo to build/demoData if the folder does not exist
add_custom_target(third-party ALL
COMMAND [ ! -d ${BINDEMODATAPATH} ] && cp -R ${DEMODATAPATH} ${BINDEMODATAPATH} && echo "-- Copied demoData files" || echo "-- demoData folder already exists" )
# when running "make clean", additionally deletes the demoData folder and CMake cache file
set(ADDITIONAL_CLEAN_FILES "")
LIST(APPEND ADDITIONAL_CLEAN_FILES ${BINDEMODATAPATH})
LIST(APPEND ADDITIONAL_CLEAN_FILES ${CMAKE_CURRENT_BINARY_DIR}/CMakeCache.txt)
## for tests
if( BUILD_UNITTESTS )
set(UNITTESTMAIN ${PROJECT_SOURCE_DIR}/test/Main_TestAll.cpp)
endif()
### add each of the subdirs of src
add_subdirectory(src/core)
add_subdirectory(src/pke)
add_subdirectory(src/binfhe)
### build the google test handlers
###if( BUILD_UNITTESTS )
### add_subdirectory(third-party/google-test EXCLUDE_FROM_ALL)
###endif()
### build the google benchmark handlers (just the parts we need)
if ( BUILD_BENCHMARKS )
set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Enable testing of the benchmark library." FORCE)
set(BENCHMARK_ENABLE_INSTALL OFF CACHE BOOL "Enable installation of benchmark. (Projects embedding benchmark may want to turn this OFF.)" FORCE)
set(BENCHMARK_ENABLE_GTEST_TESTS OFF CACHE BOOL "Enable building the unit tests which depend on gtest" FORCE)
add_subdirectory(third-party/google-benchmark EXCLUDE_FROM_ALL)
add_subdirectory(benchmark)
endif()
## clobber cleans AND deletes the third-party stuff
add_custom_target( clobber
COMMAND make clean
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
if( BUILD_UNITTESTS )
add_custom_target( testall
DEPENDS core_tests pke_tests binfhe_tests
COMMAND echo core: && unittest/core_tests -t || true
COMMAND echo pke: && unittest/pke_tests -t || true
COMMAND echo binfhe: && unittest/binfhe_tests -t )
endif()
if (BUILD_EXAMPLES)
add_custom_target( allexamples
DEPENDS allcoreexamples allpkeexamples allbinfheexamples )
endif()
if (BUILD_EXTRAS)
add_custom_target( allextras
DEPENDS allcoreextras allpkeextras )
endif()
add_custom_target( allmodules DEPENDS ${PALISADE_PACKAGE_LIBS} )
# Add the additional "make clean" files
GET_DIRECTORY_PROPERTY(clean_files ADDITIONAL_MAKE_CLEAN_FILES)
LIST(APPEND clean_files ${ADDITIONAL_CLEAN_FILES})
LIST(REMOVE_DUPLICATES clean_files)
LIST(REMOVE_ITEM clean_files "")
SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${clean_files}")
export(EXPORT PalisadeTargets FILE "${PROJECT_BINARY_DIR}/PalisadeTargets.cmake")
export(PACKAGE Palisade)
# Create the PalisadeConfig.cmake and PalisadeConfigVersion files
file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}"
"${INSTALL_INCLUDE_DIR}")
# ... for the build tree
set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}")
configure_file(PalisadeConfig.cmake.in
"${PROJECT_BINARY_DIR}/PalisadeConfig.cmake" @ONLY)
# ... for the install tree
set(CONF_INCLUDE_DIRS "\${PALISADE_CMAKE_DIR}/${REL_INCLUDE_DIR}")
configure_file(PalisadeConfig.cmake.in
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/PalisadeConfig.cmake" @ONLY)
# ... for both
configure_file(PalisadeConfigVersion.cmake.in
"${PROJECT_BINARY_DIR}/PalisadeConfigVersion.cmake" @ONLY)
# Install the PalisadeConfig.cmake and PalisadeConfigVersion.cmake
install(FILES
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/PalisadeConfig.cmake"
"${PROJECT_BINARY_DIR}/PalisadeConfigVersion.cmake"
DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
# Install the export set for use with the install-tree
install(EXPORT PalisadeTargets DESTINATION
"${INSTALL_CMAKE_DIR}" COMPONENT dev)

View File

@ -0,0 +1,79 @@
# Palisade Project Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported
by contacting the project team at [contact@palisade-crypto.org](mailto:contact@palisade-crypto.org). contact@palisade-crypto.org
Alternatively, you may report individually to one of the members of the Steering Council.
Complaints will be reviewed and investigated and will result in a response that is deemed
necessary and appropriate to the circumstances. The project team is obligated to
maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith
may face temporary or permanent repercussions as determined by other members of the
project's leadership.
If you feel that your report has not been followed up satisfactorily, then you may
contact our sponsor organisation NumFOCUS at [info@numfocus.org](mailto:info@numfocus.org) for further redress.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 1.4, available at
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html, with additional adaptations used by the FEniCS project (https://https://bitbucket.org/fenics-project/governance/src/master/README.md).
Adaptations:
* allow reporting to individual Steering Council members.
* added the option to contact NumFOCUS for further redress.
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

View File

@ -0,0 +1,227 @@
# Contributing to PALISADE
We are using git for version management and control. We use gitlab for
issue and milestone tracking.
We classify contributions as *Major* or *Minor*.
A Major contribution would be adding a new scheme, or capability to
the library. Modifications that would require users to change existing
PALISADE API code are also considered Major and would not be scheduled
for inclusion except for a Major release (2.0 is the next scheduled
major release). We usually require such contributions to be done in
their own fork of the repository to minimize disruption to the ongoing
release schedule.
Minor contributions are less broad in scope, and usually are limited
to a few files at a time. These are usually done on a branch in the
development repository, and are usuall incorporated into the next
minor release cycle.
Sometimes a seemingly minor improvement may affect a large number of
files. Formatting changes are an example of this. Changes to a large
number of files can be disruptive if done in the wrong point of a
release cycle.
If you discover a problem or identify a useful enhancement, do feel
free to create a new issue in github. Major enhancements should be
discussed with the PALISADE team ahead of time before undertaking any
work (see below).
# Workflow for Minor Contributions
Our workflow for Minor contributions is that developers work in
feature branches they create and then submit merge requests. All
contributions -- be they bug fixes or enhancements -- must be
documented in a gitlab issue, before the merge request.
We require that the code work correctly in all environments before it
will be accepted for merging. We are working on bringing up a CI
pipeline environment where branches can be tested on multiple
platforms automatically. Unfortunately our Windows and MacOS build
tests are currently done manually. If you do not have all the required
systems to test, please coordinate with the team to schedule testing.
## Pre-requisites
Before contributing an improvement, install Python3 if it is not already installed. Then install the following dependencies:
- `clang-format`
- `pre-commit`
- `cpplint`
On linux systems you will need to
- `pip3 install clang-format`
- `pip3 install pre-commit`
- `pip3 install cpplint`
On macOS install using
- `brew install clang-format`
- `brew install pre-commit`
- `pip install cpplint`
On Windows systems, install clang-format using an executable for Clang v9.0.0 or later. Then using ```git bash``` run
- `pip3 install pre-commit`
- `pip3 install cpplint`
Note, clang-format is not backwards compatible; the current format
has been tested using `clang-format` version 9.0.0.
## Setup
```bash
pre-commit install
```
Now, `pre-commit` will run automatically on `git commit`.
By default, `pre-commit` will only run on changed files. To run on all the files (recommended when adding new hooks), call
```bash
pre-commit run --all-files
```
## Making the code changes and checking in the result
We request that you conform to the following workflow:
1. Start in master, or whichever branch you want to start from using the following command: ```git checkout master```
2. Pull down the latest in this branch from the git repo: ```git pull origin master```
3. Create a new branch with the a unique name: ```git checkout -b <your new branch name>```.
* Note that we recommend naming feature branches by appending your name with an issue number. If your last name is Rohloff and you're fixing a bug documented in issue 233, then one would create a branch named Rohloff_issue233.
* This command will create the branch and move you into it.
4. Make any changes you want to in the branch.
5. Commit your changes to the local repo: ```git commit -am "commit message"```
* Note the commit message should be succinct yet meaningful and indicate the issue you're addressing, and discussion of things you weren't able to address.
* Be sure the `pre-commit` hooks run, to ensure the code meets the style guidelines. As a check, running `./maint/apply-code-format.sh` to apply clang-format should not result in any additional formatting changes in the code.
* For a more granular control, you can first add files using `git add` and then run `git commit -m "commit message"`. In this case, the changes made by pre-commit will not automatically be added to the commit. Review the changes using `git diff`. If all looks well, run `git add`, and then retry `git commit -m "commit message"`.
6. Push your local commit to the server in your branch: ```git push origin <your local branch name>```
7. After you finished inserting your new code you wanted to address, make sure the code builds and runs correctly and that you have not introduced any additional bugs.
8. Make sure all unit tests pass and add additional unit tests as needed for features you've added.
9. Before creating merge requests, developers should rebase their branch from master and test that their code works properly. [This page describes a workflow to rebase a branch from a master branch.](https://gitlab.com/palisade/palisade-development/-/wikis/How-to-rebase-your-branch-from-the-master-branch)
10. Submit a merge request so project owners can review your commits here. You should include the text
```Fixes #issue``` in your merge request.
11. You may get feedback on your merge request, especially if there are problems or issues.
12. When your merge request is accepted, your changes will be merged into master and your branch will be deleted.
* All additions to the released versions of PALISADE are subject to approval by the PALISADE governance team as outlined in the [PALISADE Governance document.](https://gitlab.com/palisade/palisade-development/blob/master/Governance.md)
# Workflow for Major Contributions
If you plan major modifications of PALISADE, please consult with the
PALISADE team first by contacting us at PALISADE-crypto.org to plan
your modifications so that they can be implemented efficiently and in
a way that doesn't conflict with any other planned future development.
PALISADE is a work in progress, and major release revisions can
deprecate large amounts of existing code. This way you can make sure
your additions will be consistent with the planned release schedule of
PALISADE. It will also ensure that you base your changes on the most
recent version of the development library.
In addition to the workflow for Minor contributions the following is the
requested procedure or a Major change.
* Fork the `palisade-development` repository on GitLab
* Clone your new repository or add it as a remote to an existing repository
* Check out the existing `master` branch, then start a new feature branch for
your work
* When making changes, write code that is consistent with the surrounding code
(see the [style guidelines](#style-guidelines) below)
* Add tests for any new features that you are implementing to either the
GoogleTest-based test suite or the Python test suite.
* Add examples that highlight new capabilities, or update existing
examples to make use of new features.
* As you make changes, commit them to your feature branch
* Configure Git with your name and e-mail address before making any commits
* Use descriptive commit messages (summary line of no more than 72 characters,
followed by a blank line and a more detailed summary, if any)
* Make related changes in a single commit, and unrelated changes in separate
commits
* Make sure that your commits do not include any undesired files, e.g., files
produced as part of the build process or other temporary files.
* Use Git's history-rewriting features (i.e., `git rebase -i`; see
https://help.github.com/articles/about-git-rebase/) to organize your commits
and squash "fixup" commits and reversions.
* Do not merge your branch with `master`. If needed, you should occasionally
rebase your branch
onto the most recent `HEAD` commit of `master`.
* Periodically run the test suite (`make testall`) to make sure that your
changes are not causing any test failures.
* Major additions may require changes to the PALISADE CMAKE files. Refer to
the wiki page [Use-of-CMake-in-PALISADE](https://gitlab.com/palisade/palisade-development/-/wikis/Use-of-CMake-in-PALISADE) for details.
* Submit a Pull Request on GitLab. Check the results of the continuous-
integration tests pipelines and resolve any issues that
arise.
* Additional discussion of good Git & GitLab workflow is provided at
http://matplotlib.org/devel/gitwash/development_workflow.html and
https://docs.scipy.org/doc/numpy-1.15.0/dev/gitwash/development_workflow.html
* PALISADE is licensed under a [BSD
license](https://gitlab.com/palisade-development/blob/master/License.txt)
which
allows others to freely modify the code, and if your Pull Request is accepted,
then that code will be release under this license as well. The copyright for
PALISADE is held collectively by the contributors. If you have made a
significant contribution, please add your name to the `AUTHORS.md` file.
* All additions to the released versions of PALISADE are subject to approval by the PALISADE governance team as outlined in the [PALISADE Governance document.](https://gitlab.com/palisade/palisade-development/blob/master/Governance.md)
# Style Guidelines
* Try to follow the style of surrounding code, and use variable names that
follow existing patterns. Pay attention to indentation and spacing.
* Configure your editor to use 4 spaces per indentation level, and **never to
use tabs**.
* Avoid introducing trailing whitespace
* Limit line lengths to 80 characters when possible
* Write comments to explain non-obvious operations within the code, both in header or source files.
* Write Doxygen style comments to define all Classes, Templates, and
methods (both public, private and protected. Please document all
input and output data characterisitcs (required lengths of vectors,
restrictions on combinations of variables) as well as any conditions
that generate exceptions.
## C++
* All classes, member variables, and methods should have Doxygen-style comments
(e.g., comment lines starting with `//!` or comment blocks starting with `/*!`)
* Avoid defining non-trivial functions in header files
* Header files should include an 'include guard'
* Protected and private member variable names are generally prefixed with
`m_`. For most classes, member variables should not be public. Data member should generally use `m_camelCase`.
* Variable names use `camelCase`
* Class names use `CamelCase`
* Methods use `CamelCase`
* Constant names and macros use `UPPER_CASE_WITH_UNDERSCORES` (example: `BIT_LENGTH`)
* Do not indent the contents of namespaces
* Code may make use of most C++11 features. The minimum required
compiler versions are listed in the main README.md file.
* Avoid manual memory management (i.e. `new` and `delete`), preferring to use
standard library containers, as well as `std::unique_ptr` and
`std::shared_ptr` when dynamic allocation is required.
<!--* Portions of Boost which are "header only" may be used. If possible, include
Boost header files only within .cpp files rather than other header files to
avoid unnecessary increases in compilation time. Boost should not be added
to the public interface unless its existence and use is optional. This keeps
the number of dependencies low for users of PALISADE. In these cases,
`PALISADE_API_NO_BOOST` should be used to conditionally remove Boost dependencies.-->
* While PALISADE does not specifically follow these rules, the following style
guides are useful references for possible style choices and the rationales behind them.
* The Google C++ Style Guide: https://google.github.io/styleguide/cppguide.html
* http://geosoft.no/development/cppstyle.html
* We have automated syntax checking on commit using ```clang-format```, so many of the above formatting rules will be automatically made.
## Python
* Style generally follows PEP8 (https://www.python.org/dev/peps/pep-0008/)
* Code in `.py` and `.pyx` files needs to be written to work with Python 3
* The minimum Python version that PALISADE supports is Python 3.4, so code
should only use features added in Python 3.4 or earlier
* Code in the Python examples should be written for Python 3
# Acknowlegement
We would like to Acknowlege the Cantera Project. We have modeled this
document on their examples.

View File

@ -0,0 +1,50 @@
PALISADE Examples
=================
To support users in understanding and integration PALISADE provides a number of examples. There are a few examples inside this repository but also independent repositories.
---
**Table of Contents**
- [PALISADE Integer Examples](#palisade-integer-examples)
- [PALISADE Encrypted Circuit Emulator](#palisade-encrypted-circuit-emulator)
- [PALISADE Python 3 Demos](#palisade-python-3-demos)
- [PALISADE serial examples](#palisade-serial-examples)
- [Local Examples](#local-examples)
---
[PALISADE Integer Examples](https://gitlab.com/palisade/palisade-integer-examples)
---------------------------
This repository has a number of examples related to FHE integer operations.
Check out the [README](https://gitlab.com/palisade/palisade-integer-examples/-/blob/master/README.md) in the repository for more details.
[PALISADE Encrypted Circuit Emulator](https://gitlab.com/palisade/palisade-encrypted-circuit-emulator)
-------------------------------------
This is a demonstration application using PALISADE's binfhe module for
encrypted boolean logic.
Check out the [README](https://gitlab.com/palisade/palisade-encrypted-circuit-emulator/-/blob/master/README.md) in the repository for more details.
[PALISADE Python 3 Demos](https://gitlab.com/palisade/palisade-python-demo)
-------------------------
This repository contains an example python 3 wrapper for PALISADE. It
does not expose all functionality of PALISADE, rather it is an example
of how to build a specific python application program using a python
wrapper, Boost/python bindings and an installed PALISADE library.
Check out the [README](https://gitlab.com/palisade/palisade-python-demo/-/blob/master/README.md) in the repository for more details.
[PALISADE serial examples](https://gitlab.com/palisade/palisade-serial-examples)
--------------------------
Sample programs for Encrypted Processing between cooperating processes.
Check out the [README](https://gitlab.com/palisade/palisade-serial-examples/-/blob/master/README.md) in the repository for more details.
Local Examples
--------------
The examples included with the PALISADE lattice crypto library.
Check out the [README](src/pke/examples/README.md) in the repository for more details.

View File

@ -0,0 +1,283 @@
# Palisade Project Main Governance Document v2.0
Policies and procedures governing the PALISADE community
# PALISADE Governance
This document outlines the policies and procedures that manage the
PALISADE community.
## Revision History
This is a living document and is expected to be updated in order to
meet the changing needs as the Palisade organization evolves over
time.
* Version 0.1 Prerelease Placeholder 9/20/2019
* Version 0.2 Draft for Steering Team Approval 10/28/2019
* Version 1.0 Adopted by Steering Team 1/28/2020
* Version 2.0 Adopted by Steering Team 3/21/21
* addition of Crypto Team and Advisory Board
# NumFOCUS Affiliation
PALISADE is a Sponsored Project of NumFOCUS, a 501(c)(3) nonprofit
charity in the United States. NumFOCUS provides PALISADE with fiscal,
and administrative support to help ensure the health and
sustainability of the project. Visit
([http://numfocus.org](http://numfocus.org)) for more information.
Donations to PALISADE are managed by NumFOCUS. For donors in the
United States, your gift is tax-deductible to the extent provided by
law. As with any donation, you should consult with your tax adviser
about your particular tax situation.
PALISADE has a formal legal and fiscial relationship with DUALITY
Technologies.
# Teams & Roles
Here are defined the primary teams participating in PALISADE
activities. Note, individuals are able to participate in multiple
teams. The Steering team shall approve all changes in membership to
all PALISADE teams, and maintain a Google Doc listing team member's
names, contact info, and date of first inclusion into the team.
* **Steering:** The Steering team is the governing body
over the entire PALISADE organization. Members of the Steering
team have full rights over all PALISADE repositories. Members
of the Steering team are the face of the project, and are
responsible for officially interfacing with external communities,
organizations, non-profits, and companies. The Steering team
may create new teams, as appropriate. Each member of the Steering
team is entitled to one vote on all elected matters.
* **Crypto:** The Crypto team is a group of members of the Homomorphic
Encryption Community who have been invited to participate by the
Steering Committee. The team should meet as needed but at least once
every three months. If there is a situation requiring an immediate
response, such as a newly published attack, the Team may call an
“extraordinary” meeting. The Crypto Team recommends actions and
responses. All recommendations must be agreed to unanimously by
members of the Crypto Team. Recommendations are then passed on to
the Steering Team for an immediate vote for adoption. Areas of
responsibility of the Crypto Team are outlined as follows:
* Decide whether a particular scheme/capability should be added or
removed from an upcoming PALISADE release.
* Identify/recommend various hardening techniques, such as PRNG,
Gaussian sampling, constant-time samplers, etc.
* Discuss/recommend the choice and inclusion of new lattice
parameter settings, e.g., non-power-of-two cyclotomics.
* Develop/recommend any patches/fixes related to newly discovered vulnerabilities or attacks, and draft public
announcements regarding those attacks and PALISADE'S corresponding response. Note, all resulting draft announcements must
then be approved by the Steering Team, which is then responsible for publishing the announcement accordingly.
* **Advisory Board:** The Advisory Board is a group of technologists
and thought leaders expert in the HE field or associated application
areas who have been invited to participate by the Steering
Committee. The Board should meet with the Steering Team in an
advisory session no more frequently than once every six months, with a
minimum frequency of once every year. The role of the advisory board is to
provide input and guidance to the Steering Team regarding emerging
technologies, applications, and other agenda topics to be determined
by the Steering Team for each meeting.
* **Pre-release:** The Pre-release team administers the current
pre-release branch in the palisade-development repository and is
responsible for the review and publication of new pre-releases, as
well as updates, patches and bug fixes to these pre-releases as they
are evaluated for submission to stable-release status. The
Pre-release team determines which features in the master branch of
palisade-development are sufficiently mature to be chosen for
pre-release. They also are responsible for quality control checking
of associated documentation related to the pre-release. The team
will follow the guidelines (below) for release numbering.
Pre-release of Major releases (i.e. incrementing the initial release
number) have significant impact and must be approved by the Steering
team.
* **Stable-release:** The Stable-release team administers the PALISADE
stable release repository and is responsible for the review and
publication of new stable releases, as well as the physical
migration of the candidate pre-release and associated documentation
to the stable release repostiory. It also is responsible for
updating or patching the stable releases as applicable. The
stable-release team will determine at what point in time a current
pre-release is stable enough to be moved to the release repository
according the the following suggested guidelines:
* The candidate pre-release has been tested independently by members
of the community and no severe issues have been reported. Also no
severe issues have been reported by the PALISADE Maintainers team.
* Sufficient time has passed for such independent review to occur. The
duration of this review period is up to the judgement of the
stable-release team and should be based on the number of new
features and/or scope of patches applied since the last pre-release
update.
* These guidlines are meant to be flexible to the needs of the
community while maintaining overall software quality of the
PALISADE release. As such, interested users may request an
expedited (i.e. shorter) testing period provided they can assist
with the required testing and evaluation. Such requests must be
reviewd and approved by both the Stable-release team and the
Steering team.
* **Maintainers:** A Maintainer is an individual responsible for the
management of the palisade-development repository. Maintainers have
the ability to commit/push source code and can handle merge/pull
requests into the main branch of the repository with the following caveats:
* Merge/Pull requests from internal PALISADE Maintatiners require the
review of one other member of the Maintainer team (i.e. a Maintainer
cannot Merge their own branches).
* Merge/Pull requests from External contributors require an extra
level of review and approval from the entire Maintainer team.
* **External contributors:** This group encompasses all others who are
not on the Steering team, Pre-release, Release or Maintainers
teams. This includes first-time contributors, collaborators, and
funders. They have no special rights within the PALISADE
organization itself. External contributors are strongly encouraged
to discuss potential contributions with the Maintainers and/or
Steering committee members before proceeding with any major
development, in order to ensure their intended work will align with
work already in progress, or in planning.
* **Emeritus status:** Steering team members that are inactive
(commits, GitHub comments/issues/reviews, dev meetings and voting on
polls) in the past six months will be asked if they want to become
Emeritus. Any member of a PALISADE team can also request to become
Emeritus if they wish to do so (e.g. taking a sabbatical or long
vacation). Emeritus Steering team members can still vote and resume
active status anytime, the only difference is that Emeritus-Steering
team members will not count against the total Steering team members
when computing the necessary votes a poll needs to pass. The
membership Google Doc list should be updated when change in the
status of a member occurs.
## Sub-Teams
The Steering team may elect to create new sub-teams for managing
the daily business of the organization. While sub-teams may have
non-Steering members, every sub-team must have at least one Steering
team member at all times. If a sub-team fails to have a Steering
team member for more than 2 weeks, that team is considered to be
dissolved. A new sub-team would need to be established by the Steering team in
order to reinstate the activity.
Sub-teams have a charter that is either *dynamic* or *static*.
* A *dynamic* charter means that the sub-team is self-organizing, with
respect to its own internal policies, procedures, and membership. A
sub-team may choose to modify its membership independent of the
steering committee. For example, a Google Summer of Code team could
be a good candidate for a dynamic charter. Alternatively,
language-based maintenance teams also have a dynamic charter.
* A *static* charter means that all membership decisions and
non-trivial policies changes must be approved by the steering
committee. For example, a finance team may require a static charter.
All sub-teams must adhere to the governance, policies, and procedures of
PALISADE at all times.
# Voting
This section presents descriptions and criteria for voting items in
the PALISADE community. The Steering team is the only team with voting
rights. Other teams may pass recommendations up to the Steering team
for a vote. The members of the Steering team may also call a vote on
any topic. The restrictions on calling a vote are as follows:
* There must only be one vote active on a particular item at any time.
* The act of calling for a vote cannot itself violate the code of
conduct. For example, Sam repeatedly called for votes immediately
after a previous vote failed to achieve Sam's result. Sam is
attempting to bully other members of core into agreeing, and is thus
violating the code of conduct.
* Voting yes moves the proposal forward;
voting no is the only way to express opposition to the proposal;
not voting is discouraged, but non-votes do not count as "no".
* There should always be an option to abstain from voting.
Voting items are labeled as either **standard** or **sensitive**.
Standard items are ones where public record and discourse is
preferable. Sensitive voting items are ones where the results of the
vote should remain private to the voters after the vote has occurred.
Sensitive votes should take place on `the Helios voting system
<https://vote.heliosvoting.org/>`_ in order retain anonymity.
The default voting period is 1 week (7 days). This may be modified at
the time when a vote is called, but may never be less than 24 hrs.
Votes can happen on the following topics, with passing
contingent on a 2/3 majority. All Steering team members should vote, but abstentions
are permitted. Sample voting topics are as follows (but are not limited to this list):
* Modifications of these governance procedures (including
permanently modifying these lists of sample voting topics).
* Adding/removing Steering team members Spending project funds
* Adding/removing people with commit rights to GitLab repositories
* Adding/removing moderators of PALISADE online groups and forums
* Adding/removing people to private communication channels
* Adding/removing people with rights to post as PALISADE on social
* media Establishing sub-committees and roles
Votes can happen on the following topics with passing contingent on a majority.
At least 2/3 of the Steering team members should vote, but abstentions
are permitted. Sample voting topics are as follows (but are not limited to this list):
* Approving an expedited release testing schedule
* Approving a Major Pre-release
The Steering team will maintain a Google Doc that records all votes
(but not discussion). Access to the Google Doc will be limited to
members of the Steering team.
# Release numbering
Releases shall be numbered sequentially using the following triple numbering:
Major.minor.patch
Major release number must be incremented when the PALISADE user API
changes, requiring user code rewrite.
Minor release numbers must be incremented when a new capability is
added, or old capability is deprecated, but existing user code would
still operate without a rewrite.
Patch release numbers must be incremented when patches/bug fixes are required.
When a Major pre-release is approved, the Major number is incremented
from the last release and minor and patch are set to zero.
When a Minor pre-release is approved the Minor number is incremented
from the lasts relese and the patch is set to zero.
When a pre-release is patched, the pre-release
Major and Minor numbers are maintained, and the patch is incremented.
When a pre-release is approved for stable-release, the pre-release
Major and Minor numbers are maintained, and the patch is incremented.
When a stable-release is patched, the pre-release Major and Minor
numbers are maintained, and the patch is incremented. The patches
applied to the stable-release are to be applied to the master branch
of the development release as appropriate.
At no time will there be multiple pre-release versions supported. Only
the latest pre-release will be considered active.
Once a pre-release is accepted for stable release, that pre-release
is considered inactive.

View File

@ -0,0 +1,26 @@
BSD 2-Clause License
Copyright (c) 2021, PALISADE
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,8 @@
all:
@echo "PALISADE has converted to CMake"
@echo "Try this:"
@echo mkdir build
@echo cd build
@echo cmake ..
@echo make
@echo make install \(to install in 'installed'\)

View File

@ -0,0 +1,84 @@
# - Config file for the Palisade package
# It defines the following variables
# PALISADE_INCLUDE_DIRS - include directories for Palisade
# PALISADE_LIBRARIES - libraries to link against
get_filename_component(PALISADE_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
# Our library dependencies (contains definitions for IMPORTED targets)
if(NOT Palisade_BINARY_DIR)
include("${PALISADE_CMAKE_DIR}/PalisadeTargets.cmake")
endif()
# These are IMPORTED targets created by PalisadeTargets.cmake
set(PALISADE_INCLUDE "@INSTALL_INCLUDE_DIR@")
set(PALISADE_LIBDIR "@INSTALL_LIB_DIR@")
set(PALISADE_LIBRARIES @PALISADE_PACKAGE_LIBS@ @THIRDPARTYLIBS@ @OpenMP_CXX_FLAGS@)
set(PALISADE_STATIC_LIBRARIES @PALISADE_STATIC_LIBS@ @THIRDPARTYLIBS@ @OpenMP_CXX_FLAGS@)
set(PALISADE_SHARED_LIBRARIES @PALISADE_SHARED_LIBS@ @THIRDPARTYLIBS@ @OpenMP_CXX_FLAGS@)
set(BASE_PALISADE_VERSION @PALISADE_VERSION@)
set(OPENMP_INCLUDES "@OPENMP_INCLUDES@" )
set(OPENMP_LIBRARIES "@OPENMP_LIBRARIES@" )
set(PALISADE_CXX_FLAGS "@CMAKE_CXX_FLAGS@ @OpenMP_CXX_FLAGS@")
set(PALISADE_C_FLAGS "@CMAKE_C_FLAGS@ @OpenMP_C_FLAGS@")
if( "@WITH_NTL@" STREQUAL "Y" )
set(PALISADE_CXX_FLAGS "${PALISADE_CXX_FLAGS} -DWITH_NTL" )
set(PALISADE_C_FLAGS "${PALISADE_C_FLAGS} -DWITH_NTL")
endif()
set (PALISADE_EXE_LINKER_FLAGS "@CMAKE_EXE_LINKER_FLAGS@ @OpenMP_EXE_LINKER_FLAGS@")
# CXX info
set(PALISADE_CXX_STANDARD "@CMAKE_CXX_STANDARD@")
set(PALISADE_CXX_COMPILER_ID "@CMAKE_CXX_COMPILER_ID@")
set(PALISADE_CXX_COMPILER_VERSION "@CMAKE_CXX_COMPILER_VERSION@")
# Build Options
set(PALISADE_STATIC "@BUILD_STATIC@")
set(PALISADE_SHARED "@BUILD_SHARED@")
set(PALISADE_TCM "@WITH_TCM@")
set(PALISADE_WITH_INTEL_HEXL "@WITH_INTEL_HEXL@")
set(PALISADE_OPENMP "@WITH_OPENMP@")
set(PALISADE_NATIVE_SIZE "@NATIVE_SIZE@")
set(PALISADE_CKKS_M_FACTOR "@CKKS_M_FACTOR@")
set(PALISADE_NATIVEOPT "@WITH_NATIVEOPT@")
# Math Backend
if("@WITH_BE2@")
set(PALISADE_BACKEND "BE2")
elseif("@WITH_BE4@")
set(PALISADE_BACKEND "BE4")
elseif("@WITH_NTL@")
set(PALISADE_BACKEND "NTL")
endif()
# Build Details
set(PALISADE_EMSCRIPTEN "@EMSCRIPTEN@")
set(PALISADE_ARCHITECTURE "@ARCHITECTURE@")
set(PALISADE_BACKEND_FLAGS_BASE "@PALISADE_BACKEND_FLAGS@")
# Compile Definitions
if( "@BUILD_SHARED@" )
set(PALISADE_BINFHE_COMPILE_DEFINITIONS "@_pal_binfhe_compile_defs@")
set(PALISADE_CORE_COMPILE_DEFINITIONS "@_pal_core_compile_defs@")
set(PALISADE_PKE_COMPILE_DEFINITIONS "@_pal_pke_compile_defs@")
set(PALISADE_COMPILE_DEFINITIONS
${PALISADE_BINFHE_COMPILE_DEFINITIONS}
${PALISADE_CORE_COMPILE_DEFINITIONS}
${PALISADE_PKE_COMPILE_DEFINITIONS})
endif()
if( "@BUILD_STATIC@" )
set(PALISADE_BINFHE_COMPILE_DEFINITIONS_STATIC "@_pal_binfhe_compile_defs_static@")
set(PALISADE_CORE_COMPILE_DEFINITIONS_STATIC "@_pal_core_compile_defs_static@")
set(PALISADE_PKE_COMPILE_DEFINITIONS_STATIC "@_pal_pke_compile_defs_static@")
set(PALISADE_COMPILE_DEFINITIONS_STATIC
${PALISADE_BINFHE_COMPILE_DEFINITIONS_STATIC}
${PALISADE_CORE_COMPILE_DEFINITIONS_STATIC}
${PALISADE_PKE_COMPILE_DEFINITIONS_STATIC})
endif()

View File

@ -0,0 +1,11 @@
set(PACKAGE_VERSION "@PALISADE_VERSION@")
# Check whether the requested PACKAGE_FIND_VERSION is compatible
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()

View File

@ -0,0 +1 @@
set (CMAKE_GENERATOR "Unix Makefiles" CACHE INTERNAL "" FORCE)

View File

@ -0,0 +1,149 @@
PALISADE Lattice Cryptography Library
=====================================
PALISADE is a general lattice cryptography library that currently includes efficient implementations of the following lattice cryptography capabilities:
* Fully Homomorphic Encryption (FHE)
* Brakerski/Fan-Vercauteren (BFV) scheme for integer arithmetic
* Brakerski-Gentry-Vaikuntanathan (BGV) scheme for integer arithmetic
* Cheon-Kim-Kim-Song (CKKS) scheme for real-number arithmetic
* Ducas-Micciancio (FHEW) and Chillotti-Gama-Georgieva-Izabachene (TFHE) schemes for Boolean circuit evaluation
* Multi-Party Extensions of FHE (to support multi-key FHE)
* Threshold FHE for BGV, BFV, and CKKS schemes
* Proxy Re-Encryption for BGV, BFV, and CKKS schemes
Note as of version 1.11, the following features have been moved to their own repositories in the PALISADE group.
* Digital Signature (https://gitlab.com/palisade/palisade-signature)
* Identity-Based Encryption (https://gitlab.com/palisade/palisade-abe)
* Ciphertext-Policy Attribute-Based Encryption (https://gitlab.com/palisade/palisade-abe)
All the research prototypes for Key-Policy Attributed-Based Encryption and Program Obfuscation have been moved to https://gitlab.com/palisade/palisade-trapdoor)
PALISADE is a cross-platform C++11 library supporting Linux, Windows, and macOS. The supported compilers are g++ v6.1 or later and clang++ v6.0 or later.
The library also includes unit tests and sample application demos.
PALISADE is available under the BSD 2-clause license.
The library is based on modular architecture with the following layers:
* Math operations layer supporting low-level modular arithmetic, number theoretic transforms, and integer sampling. This layer is implemented to be portable to multiple hardware computation substrates.
* Lattice operations layer supporting lattice operations, ring algebra, and lattice trapdoor sampling.
* Crypto layer containing efficient implementations of lattice cryptography schemes.
* Encoding layer supporting multiple plaintext encodings for cryptographic schemes.
A major focus is on the usability of the schemes. For instance, all HE schemes with packing use the same common API, and are implemented using runtime polymorphism.
PALISADE implements efficient Residue Number System (RNS) algorithms to achieve high performance, e.g., PALISADE was used as the library for a winning genome-wide association studies solution at iDASH18.
By default, the library is built without external dependencies. But the user is also provided options to add GMP/NTL, tcmalloc, and/or Intel HEXL third-party libraries if desired.
Further information about PALISADE:
[License Information](LICENSE)
[Library Wiki with documentation](https://gitlab.com/palisade/palisade-development/wikis/home)
[Webinars](Webinars.md)
[YouTube Channel PALISADE](https://www.youtube.com/channel/UC1qByOsQina1rpZ8AGl5TZw)
[Code of Conduct](Code-of-conduct.md)
[Governance](Governance.md)
[Contributing to PALISADE](Contributing.md)
[PALISADE Examples](Examples.md)
Build Instructions
=====================================
We use CMake to build PALISADE. The high-level (platform-independent) procedure for building PALISADE is as follows (for OS-specific instructions, see the section "Detailed information about building PALISADE" at the bottom of this page):
1. Install system prerequisites (if not already installed), including a C++ compiler with OMP support, cmake, make, and autoconf.
2. Clone the PALISADE repo to your local machine.
3. Create a directory where the binaries will be built. The typical choice is a subfolder "build". In this case, the commands are:
```
mkdir build
cd build
cmake ..
```
Note that CMake will check for any system dependencies that are needed for the build process. If the CMake build does not complete successfully, please review the error CMake shows at the end. If the error does not go away (even though you installed the dependency), try running "make clean" to clear the CMake cache.
4. If you want to use any external libraries, such as NTL/GMP or tcmalloc, install these libraries.
5. Build PALISADE by running the following command (this will take few minutes; using the -j make command-line flag is suggested to speed up the build)
```
make
```
If you want to build only library files or some other subset of PALISADE, please review the last paragraph of this page.
After the "make" completes, you should see the PALISADE library files in the lib folder, binaries of demos in bin/demo, binaries of benchmarks in bib/benchmark, and binaries for unit tests in the unittest folder.
6. Install PALISADE to a system directory (if desired or for production purposes)
```
make install
```
You would probably need to run `sudo make install` unless you are specifying some other install location. You can change the install location by running
`cmake -DCMAKE_INSTALL_PREFIX=/your/path ..`. The header files are placed in the "include/palisade" folder of the specified path, and the binaries of the library
are copied directly to the "lib" folder. For example, if no installation path is provided in Ubuntu (and many other Unix-based OSes), the header and library
binary files will be placed in "/usr/local/include/palisade" and "/usr/local/lib", respectively.
Testing and cleaning the build
-------------------
Run unit tests to make sure all capabilities operate as expected
```
make testall
```
Run sample code to test, e.g.,
```
bin/examples/pke/simple-integers
```
To remove the files built by make, you can execute
```
make clean
```
Supported Operating Systems
--------------------------
PALISADE CI continually tests our builds on the following operating systems:
* Ubuntu [18.04] [20.04]
* macOS [Mojave]
* Centos 7
* NVIDIA Xavier [Linux for Tegra 4.2.2]
* MinGW (64-bit) on Windows 10
PALISADE users have reported successful operation on the following systems:
* FreeBSD
* Ubuntu [16.04]
* Arch Linux
* Manjaro Linux
Please let us know the results if you have run PALISADE any additional systems not listed above.
Detailed information about building PALISADE
------------------------------
More detailed steps for some common platforms are provided in the following Wiki articles:
[Instructions for building PALISADE in Linux](https://gitlab.com/palisade/palisade-development/wikis/Instructions-for-building-PALISADE-in-Linux)
[Instructions for building PALISADE in Windows](https://gitlab.com/palisade/palisade-development/wikis/Instructions-for-building-PALISADE-in-Windows)
[Instructions for building PALISADE in macOS](https://gitlab.com/palisade/palisade-development/wikis/Instructions-for-building-PALISADE-in-macOS)
PALISADE provides many CMake/make configuration options, such as installing specific modules of the library, compiling only libraries w/o any unit tests and demos, choosing the Debug mode for compilation, turning on/off NTL/GMP. These options are described in detail in the following Wiki article:
[Use of CMake in PALISADE](https://gitlab.com/palisade/palisade-development/-/wikis/Use-of-CMake-in-PALISADE)
[Instructions for building user projects that use PALISADE](https://gitlab.com/palisade/palisade-development/wikis/Instructions-for-building-user-projects-that-use-PALISADE)

View File

@ -0,0 +1,226 @@
08/25/2022: PALISADE v1.11.8 (stable) is released in the palisade-release repo
* Adds support for RISC-V architecture
* Updates 192- and 256-bit parameter sets for FHEW/TFHE
04/30/2022: PALISADE v1.11.7 (stable) is released in the palisade-release repo
* Updates the parameter sets for FHEW/TFHE
* Optimizes the BGV AUTO modulus switching mode
* Fixes several bugs
01/28/2022: PALISADE v1.11.6 (stable) is released in the palisade-release repo
* Fixes a bug affecting Intel HEXL builds
* Updates Intel HEXL to 1.2.3
* Fixes a serialization compatibility issue between 32-bit and 64-bit systems (needed for WebAssembly)
* Improves runtime of TFHE bootstrapping (by about 1.5x)
* Adds the uninstall capability
* Fixes other bugs
09/17/2021: PALISADE v1.11.5 (stable) is released in the palisade-release repo
* Fixes a bug affecting Intel HEXL builds
* Upgrades HEXL to 1.2.1 (improves performance of AVX-512 acceleration)
* Fixes a bug affecting some scenarios of distributed decryption in BGVrns
08/22/2021: PALISADE v1.11.4 (stable) is released in the palisade-release repo
* Fixes WebAssembly compilation for new versions of Emscripten (2.0.23+)
* Integrates HEXL v1.2.0 improvements (additional acceleration)
* Adds support for Gaussian sampling with standard deviations between 2^32 and 2^59
* Fixes several minor bugs
05/28/2021: PALISADE v1.11.3 (stable) is released in the palisade-release repo
* Includes all changes from development releases v1.11.0, v1.11.1, and v1.11.2
05/26/2021: PALISADE v1.11.2 (development) is released
* Adds initial Intel HEXL library integration
* Adds support for web assembly
* Fixes some bugs for the scenarios with multiple cryptocontexts
05/04/2021: PALISADE v1.11.1 (development) is released
* Fixes some bugs related to serialization
03/31/2021: PALISADE v1.11.0 (development) is released
* The abe module is moved to https://gitlab.com/palisade/palisade-abe
* The signature module is moved to https://gitlab.com/palisade/palisade-signature
* Adds high-precision CKKS (supports the scaling factor of up to 119 bits in size)
* Removes old code (Stehle-Steinfeld scheme and prior Matrix functionality)
* Applies optimizations for NTT, and hybrid key switching in BGVrns and CKKS
* Simplifies the PALISADE installation (gitmodules are now updated automatically)
* Adds a Dockerfile for PALISADE
* Fixes many bugs reported by the PALISADE community
12/08/2020: PALISADE v1.10.6 (stable) is released
* Patches CKKS against the Li-Micciancio attack
* Complex-number arithmetic is no longer supported in CKKS
* Fixes a bug in the 128-bit mathematical backend
* Fixes a rarely occuring exception in the Gaussian sampling procedure
10/01/2020: PALISADE v1.10.5 (stable) is released
* Fixes a lattice parameter selection bug for an edge case (for leveled HE schemes)
* Fixes a compilation error in Apple clang 12 (XCode 12)
09/21/2020: PALISADE v1.10.4 (stable) is released
* Includes all changes from development releases v1.10.0-v1.10.3
* Fixes some bugs in BGVrns
* Improves error handling
08/25/2020: PALISADE v1.10.3 (development) is released
* Fixes a bug in BFVrns for larger plaintext moduli
* Fixes bugs in FHEW/TFHE
* Fixes bugs affecting the 32-bit and 64-bit native integer backends
* Improves error handling
* Includes minor documentation cleanup
07/11/2020: PALISADE v1.10.2 (development) is released
* Fixes a bug affecting some threshold FHE scenarios
* Adds more validation to CMake flags
* Includes minor documentation cleanup
06/26/2020: PALISADE v1.10.1 (development) is released
* Fixes a bug affecting some clang environments
* Fixes a bug related to the BUILD_BENCHMARKS CMake flag
06/18/2020: PALISADE v1.10.0 (development) is released
* Adds a usable, full RNS variant of BGV (as a more efficient alternative to BFV RNS variants for integer arithmetic)
* Adds a fully functional threshold FHE capability to BGV, BFV, and CKKS to support multi-party computations
* Adds an automated rescaling mode to the approximate rescaling RNS variant of CKKS
* Improves the performance of both CKKS RNS variants
* Improves the performance of both BFV RNS variants
* Makes NTL completely optional for all environments (no quad-precision floats are needed anymore)
* Improves the support for clang in Linux
* Simplifies the CMake procedure for building PALISADE
* Fixes many bugs reported by the PALISADE community
04/24/2020: PALISADE v1.9.2 (stable) is released in the palisade-release repo
* Includes all changes from development releases v1.8.0, v1.9.0, and v1.9.1
* Fixes a bug in BFVrnsB
* Fixes a bug with CSPRNG in some multi-threaded environments
03/03/2020: PALISADE v1.9.1 (development) is released
* Fixes the performance issue with Ubuntu
* Improves the runtime of inverse Number Theoretic Transform for all supported systems
02/29/2020: PALISADE v1.9.0 (development) is released
* Adds multiple low-level optimizations, including improved Number Theoretic Transform
* Adds a CMake install package for PALISADE
* Improves the security and performance of the PRE implementations for BFV, BGV, and CKKS homomorphic encryption schemes
* Updates selected parameter sets for FHEW to reduce the probability of decryption error
* Includes multiple bug fixes for the issues reported by the PALISADE community
01/30/2020: PALISADE v1.8.0 (development) is released
* Adds the Gama-Izabachene-Nguyen-Xie (GINX) bootstrapping to the FHEW implementation
* Includes other FHEW optimizations: now the bootstrapping key size is 20x times smaller and runtime about 2.5x faster
* Adds XOR and XNOR gates to FHEW
01/22/2020: PALISADE v1.7.4 (stable) is released in the palisade-release repo
* includes all changes from development releases v1.7.a to v1.7.d
01/15/2020: PALISADE v1.7.d (development) is released
* Replaces the Mersenne Twister PRNG Engine with a cryptographically secure BLAKE2-based PRNG
* Fixes a PRNG bug affecting environments where multithreading is done not using OpenMP
12/26/2019: PALISADE v1.7.c (development) is released
* Fixes a bug affecting applications using the PALISADE serialization capability
* Changes the installation paths for header files and library binary files
12/19/2019: PALISADE v1.7.b (development) is released
* Simplifies the development of applications using PALISADE (only one header file is now needed for most applications)
* Changes the folder hierarchy of the library header files
11/15/2019: PALISADE v1.7.a (development) is released
* Adds an optimized implementation of the CKKS scheme for approximate (real-number) homomorphic encryption. The implementation features automated rescaling/modswitching and hybrid key switching.
* Adds an optimized implementation of the FHEW scheme for Boolean-circuit homomorphic encryption, supporting standard HE parameters. Performs bootstrapping for each binary gate, and hence supports the evaluation of arbitrary Boolean circuits.
* Adds the ring dimension as an option when generating crypto contexts for BFV variants.
* Improves the noise growth of the BEHZ variant of BFV (referred to as the BFVrnsB scheme in PALISADE).
* Fixes several bugs.
9/12/2019: PALISADE v1.6.0 is released
* Significantly simplifies/automates the PALISADE build/installation process. Now we use CMake.
* Serialization/deserialization is now much faster (by 3x to 10x). Both binary and JSON formats are supported.
* By default, PALISADE compiles w/o external dependencies in Linux and Windows, i.e., NTL/GMP is now optional for these OSes.
* The performance in Windows is now as fast as in Linux (4x to 7x times faster than previously).
* Applies several low-level optimizations, and fixes some bugs.
3/20/2019: PALISADE v1.5.0 is released
* Fixes the vulnerability found in https://eprint.iacr.org/2017/785 (PKC'19) for the PRE schemes based on BGV/BFV
* Adds PRE modes for BGV/BFV that are secure under honest re-reencryption attacks (recommended security for practical use)
* Adds support for splitting lattice trapdoor sampling into offline and online phases (used by digital signatures, IBE, and ABE constructions)
* Fixes bugs related to the multi-threaded mode of operation
02/11/2018: PALISADE v1.4.1 is released
Fixes a bug affecting the IBE and CP-ABE implementations (some unit tests for IBE/CP-ABE were entering in an infinite loop in about 10% of the runs).
12/31/2018: PALISADE v1.4.0 is released
* Adds the Gentry-Peikert-Vaikuntanathan (GPV) digital signature scheme
* Adds the GPV identity-based encryption scheme
* Adds the Zhang-Zhang ciphertext-policy attribute-based encryption scheme
* Includes Genise-Micciancio (Eurocrypt'18) lattice trapdoor sampling algorithms and their improvements/generalizations
* Fixes bugs that were brought to our attention
11/26/2018: PALISADE v1.3.1 is released
* Improves performance of BFVrns
* Improves performance of Number Theoretic Transform
* Fixes a bug affecting the demo-cross-correlation demo
* Fixes other bugs that were brought to our attention
10/17/2018: PALISADE v1.3.0 is released
* Added support for the security levels/tables specified by the HomorphicEncryption.org security standard to all variants of the BFV scheme
* Optimized the packed encoding (batching)
* Simplified the signatures of classes and methods at multiple layers
* Fixed bugs that were brought to our attention
6/15/2018: PALISADE v1.2 is released
PALISADE v1.2 provides several important advancements and improvements to the library. Most notably, we provide:
* The Bajard-Eynard-Hasan-Zucca RNS variant of the BFV scheme is added to the library
* The implementation of the Halevi-Polyakov-Shoup RNS variant of the BFV scheme is significantly improved
* Large multiplicative depths (up to 100 and higher) for both RNS variants are now supported.
* Several low-level optimizations, e.g., in Number Theoretic Transform and NTL multiprecision math backend, are implemented.
* Multiple improvements in plaintext encodings.
* Software engineering improvements: extended batteries of unit tests, cleaner design of the matrix class, better CryptoContext wrapper, etc.
* Fixes for bugs which have been brought to our attention.
1/29/2018: PALISADE v1.1.1 is released
PALISADE v1.1.1 includes bug fixes and minor optimizations:
* Fixes minor bugs in NativeInteger and multiprecision backends (BigInteger)
* Deals properly with a low-probability rounding error in BFVrns
* Fixes a compilation error on some CentOS systems
* Improves the performance of NativeInteger
* Fixes a couple of other minor bugs
12/29/2017: PALISADE v1.1 is released
PALISADE v1.1 includes the following new capabilities, library enhancements, and optimizations:
* New efficient homomorphic scheme: BFVrns
* Newly supported homomorphic operations for multi-depth computations
* Type checking, type safety, and improved error handling
* Faster/more capable Gaussian sampling
* NTL integration as a new option for the multiprecision arithmetic backend
* And more...
07/15/2017: PALISADE v1.0 is released

View File

@ -0,0 +1,9 @@
# General Notes on Homomorphic Encryption
All homomorphic encryption schemes implemented in PALISADE are IND-CPA secure, and hence are expected to be used under the honest-but-curios (a.k.a., semi-honest) model. In this model, the adversary cannot corrupt/tamper with ciphertexts (and perform related active attacks) but can only use the API of PALISADE to perform valid operations.
# Notes specific to the CKKS scheme
Li and Micciancio recently showed that the IND-CPA model may not be sufficient for the CKKS scheme in some scenarios because a decryption result can be used to perform a key recovery attack. This attack applies to the setting where decryption results need to be shared between multiple parties, e.g., in the the threshold FHE setting. To mitigate the Li-Micciancio attack, we extended the original CKKS (starting with v1.10.6) to a stronger adversarial model where decryption results may still be shared between multiple parties. By default, PALISADE chooses a configuration where a relatively large number of decryption queries of the same or related ciphertexts can be tolerated. The lower bound for the tolerated number of such decryption queries is N_d = 128 (but in practical computations, N_d is at least 10,000). We consider this default setting sufficient to prevent passive attacks (where a normal homomorphic encryption computation protocol is followed).
In scenarios where an even stronger adversarial model is needed (uncommon scenarios), the user can increase the number of shared decryptions of the same or related ciphertexts to a higher number by increasing the `CKKS_M_FACTOR` CMake parameter (a compile-level flag). The minimum number of decryption results in this case becomes N_d x (`CKKS_M_FACTOR` + 1) / 2. Please note that increasing `CKKS_M_FACTOR` from the default value of 1 will decrease the precision of CKKS ciphertexts by 0.5 x (log2(`CKKS_M_FACTOR` + 1) - 1) bits. Hence increasing `CKKS_M_FACTOR` is only suggested when a stronger adversarial model is needed.

View File

@ -0,0 +1,18 @@
PALISADE Webinars
=================
The PALISADE library has a YouTube channel! Full of rich detailed content on repository, examples, and general homomorphic encryption! Please visit [PALISADE Homomorphic Encryption Library](https://www.youtube.com/channel/UC1qByOsQina1rpZ8AGl5TZw) and subscribe for the latest videos!
Webinar List
------------
- [PALISADE Webinar #1 - Introducing PALISADE](https://youtu.be/FLGeMd3eiQY)
- [PALISADE Webinar #2 A - HE Tutorial Series Part 1: Introduction to Homomorphic Encryption](https://youtu.be/rMDoZdH53ZM)
- [PALISADE Webinar #2 B - HE Tutorial Series Part 2: Boolean Arithmetic with Applications](https://youtu.be/aKcf5vd8lLs)
- [PALISADE Webinar #3 A - HE Tutorial Series Part 3: Integer Arithmetic](https://youtu.be/1a7yxnLj4PE)
- [PALISADE Webinar #3 B - HE Tutorial Series Part 4: Integer Applications](https://youtu.be/7Rpeb1YNSRs)
- [PALISADE Webinar #4 - HE Tutorial Series Part 5: Introduction to Multiparty Homomorphic Encryption](https://youtu.be/9Fa6rFUyQ_w)
- [PALISADE Webinar #5 - HE Serialization for Applications](https://youtu.be/-2zaJ2C4Guo)
- [PALISADE Webinar #6 - HE Tutorial Series Part 6: Introduction to Approximate Homomorphic Encryption](https://youtu.be/_s1B128sqaI)
- [PALISADE Webinar #7 A - Secure Large-Scale Genome-Wide Association Studies using Homomorphic Encryption](https://youtu.be/rTmL1Iaoslo)
- [PALISADE Webinar #7 B - Best Practices for Building Efficient Homomorphic Encryption Solutions](https://youtu.be/oxJGOhqLd-E)

View File

@ -0,0 +1,39 @@
include_directories( ../src/core/include )
include_directories( ../src/core/lib )
include_directories( ../src/pke/include )
include_directories( ../src/binfhe/include )
set( REGEX_FLAG -DHAVE_STD_REGEX )
if ( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )
set( WARNING_FLAG "" )
else()
set( WARNING_FLAG -Wno-unused-but-set-variable )
endif()
if( BUILD_SHARED )
set (BMLIBS PUBLIC PALISADEpke PUBLIC PALISADEbinfhe PUBLIC PALISADEcore ${THIRDPARTYLIBS} PUBLIC benchmark ${OpenMP_CXX_FLAGS})
endif()
if( BUILD_STATIC )
set (BMLIBS ${BMLIBS} PUBLIC PALISADEpke_static PUBLIC PALISADEbinfhe_static PUBLIC PALISADEcore_static ${THIRDPARTYSTATICLIBS} PUBLIC benchmark ${OpenMP_CXX_FLAGS})
endif()
set (BMAPPS "")
file (GLOB BMARK_SRC_FILES CONFIGURE_DEPENDS src/*.cpp)
foreach (app ${BMARK_SRC_FILES})
get_filename_component ( exe ${app} NAME_WE )
add_executable ( ${exe} ${app} )
set_property(TARGET ${exe} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/benchmark)
target_include_directories( ${exe} PUBLIC ../third-party/google-benchmark/include )
set_target_properties( ${exe} PROPERTIES COMPILE_FLAGS
"${REGEX_FLAG} -DHAVE_STEADY_CLOCK -DNDEBUG ${WARNING_FLAG}" )
target_link_libraries ( ${exe} ${BMLIBS} )
set (BMAPPS ${BMAPPS} ${exe})
endforeach()
add_custom_target( allbenchmark )
add_dependencies( allbenchmark ${BMAPPS} )
add_custom_command( OUTPUT benchmarkinfocmd COMMAND echo Builds benchmark lib and these apps: ${BMAPPS} )
add_custom_target( benchmarkinfo DEPENDS benchmarkinfocmd )

View File

@ -0,0 +1,7 @@
# Ignore all filters for now
filter=-build
filter=-legal
filter=-readability
filter=-runtime
filter=-whitespace

View File

@ -0,0 +1,191 @@
/*
* @author TPOC: contact@palisade-crypto.org
*
* @copyright Copyright (c) 2019, New Jersey Institute of Technology (NJIT)
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution. THIS SOFTWARE IS
* PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#define _USE_MATH_DEFINES
#include "benchmark/benchmark.h"
bool runOnlyOnce = true;
#include "palisade.h"
#include <fstream>
#include <iostream>
#include "cryptocontextgen.h"
#include "cryptocontexthelper.h"
#include "encoding/encodings.h"
#include "lattice/elemparamfactory.h"
using namespace std;
using namespace lbcrypto;
void BM_encoding_CoefPacked(benchmark::State &state) {
Plaintext plaintext;
usint m = 1024;
PlaintextModulus ptm = 128;
PlaintextModulus half = ptm / 2;
shared_ptr<ILParams> lp = ElemParamFactory::GenElemParams<ILParams>(m);
EncodingParams ep(new EncodingParamsImpl(ptm));
vector<int64_t> intvec;
for (usint ii = 0; ii < m / 2; ii++) intvec.push_back(rand() % half);
while (state.KeepRunning()) {
plaintext.reset(new CoefPackedEncoding(lp, ep, intvec));
plaintext->Encode();
}
}
BENCHMARK(BM_encoding_CoefPacked);
void BM_encoding_PackedIntPlaintext(benchmark::State &state) {
Plaintext plaintext;
shared_ptr<ILParams> lp;
EncodingParams ep;
std::vector<int64_t> vectorOfInts1 = {1, 2, 3, 4, 5, 6, 7, 8, 0, 0};
usint m = 22;
PlaintextModulus p = 89;
BigInteger modulusP(p);
BigInteger modulusQ("955263939794561");
BigInteger squareRootOfRoot("941018665059848");
BigInteger bigmodulus("80899135611688102162227204937217");
BigInteger bigroot("77936753846653065954043047918387");
auto cycloPoly = GetCyclotomicPolynomial<BigVector>(m, modulusQ);
ChineseRemainderTransformArb<BigVector>::SetCylotomicPolynomial(cycloPoly,
modulusQ);
lp.reset(new ILParams(m, modulusQ, squareRootOfRoot, bigmodulus, bigroot));
ep.reset(new EncodingParamsImpl(p, 8));
while (state.KeepRunning()) {
plaintext.reset(new PackedEncoding(lp, ep, vectorOfInts1));
plaintext->Encode();
}
}
BENCHMARK(BM_encoding_PackedIntPlaintext);
void BM_encoding_PackedIntPlaintext_SetParams(benchmark::State &state) {
Plaintext plaintext;
shared_ptr<ILParams> lp;
EncodingParams ep;
usint m = 22;
PlaintextModulus p = 89;
BigInteger modulusP(p);
std::vector<int64_t> vectorOfInts1 = {1, 2, 3, 4, 5, 6, 7, 8, 0, 0};
if (state.thread_index == 0) {
BigInteger modulusQ("955263939794561");
BigInteger squareRootOfRoot("941018665059848");
BigInteger bigmodulus("80899135611688102162227204937217");
BigInteger bigroot("77936753846653065954043047918387");
auto cycloPoly = GetCyclotomicPolynomial<BigVector>(m, modulusQ);
ChineseRemainderTransformArb<BigVector>::SetCylotomicPolynomial(cycloPoly,
modulusQ);
lp.reset(new ILParams(m, modulusQ, squareRootOfRoot, bigmodulus, bigroot));
ep.reset(new EncodingParamsImpl(p, 8));
}
while (state.KeepRunning()) {
PackedEncoding::SetParams(m, ep);
state.PauseTiming();
PackedEncoding::Destroy();
state.ResumeTiming();
}
}
BENCHMARK(BM_encoding_PackedIntPlaintext_SetParams);
void BM_Encoding_String(benchmark::State &state) { // benchmark
CryptoContext<Poly> cc;
Plaintext plaintext;
usint m = 1024;
PlaintextModulus ptm = 256;
shared_ptr<ILParams> lp = ElemParamFactory::GenElemParams<ILParams>(m);
EncodingParams ep(new EncodingParamsImpl(ptm));
auto randchar = []() -> char {
const char charset[] =
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
const size_t max_index = (sizeof(charset) - 1);
return charset[rand() % max_index];
};
string fullStr(m / 2, 0);
std::generate_n(fullStr.begin(), m / 2, randchar);
while (state.KeepRunning()) {
plaintext.reset(new StringEncoding(lp, ep, fullStr));
plaintext->Encode();
}
}
BENCHMARK(BM_Encoding_String);
void BM_encoding_PackedCKKSPlaintext(benchmark::State &state) {
Plaintext plaintext;
shared_ptr<ILDCRTParams<BigInteger>> lp;
EncodingParams ep;
std::vector<complex<double>> vectorOfComplex = {
{1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0},
{6, 0}, {7, 0}, {8, 0}, {0, 0}, {0, 0}};
usint m = 1024;
usint numPrimes = 1;
uint64_t p = 50;
usint relinWin = 0;
usint batch = 8;
auto cc = GenCryptoContextCKKS<DCRTPoly>(m, numPrimes, p, relinWin, batch,
MODE::OPTIMIZED, BV, APPROXRESCALE);
lp = cc->GetElementParams();
ep = cc->GetEncodingParams();
auto scalingFactor = cc->GetEncodingParams()->GetPlaintextModulus();
while (state.KeepRunning()) {
plaintext.reset(
new CKKSPackedEncoding(lp, ep, vectorOfComplex, 1, 0, scalingFactor));
plaintext->Encode();
}
}
BENCHMARK(BM_encoding_PackedCKKSPlaintext);
// execute the benchmarks
BENCHMARK_MAIN();

View File

@ -0,0 +1,334 @@
/*
* @author TPOC: contact@palisade-crypto.org
*
* @copyright Copyright (c) 2019, New Jersey Institute of Technology (NJIT)
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution. THIS SOFTWARE IS
* PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*
Description:
This code benchmarks functions of the math directory of the PALISADE lattice
encryption library.
*/
#define _USE_MATH_DEFINES
#include "benchmark/benchmark.h"
#include "palisade.h"
#include <iostream>
#include <vector>
using namespace std;
using namespace lbcrypto;
#define DO_BENCHMARK_TEMPLATE(X, Y) \
BENCHMARK_TEMPLATE(X, Y)->Unit(benchmark::kMicrosecond);
// four simple benchmarks to test constructing BigInts
// typically the code to benchmark is in a 'function' that is then
// called within the actual benchmark.
// test BigInt constants
template <typename I>
static void make_BigInt_constants(void) { // function
I one(1);
}
template <typename I>
void BM_BigInt_constants(benchmark::State& state) { // benchmark
while (state.KeepRunning()) {
make_BigInt_constants<I>();
}
}
DO_BENCHMARK_TEMPLATE(BM_BigInt_constants, M2Integer)
DO_BENCHMARK_TEMPLATE(BM_BigInt_constants, M4Integer)
#ifdef WITH_NTL
DO_BENCHMARK_TEMPLATE(BM_BigInt_constants, M6Integer)
#endif
DO_BENCHMARK_TEMPLATE(BM_BigInt_constants, NativeInteger)
template <typename I>
static void make_BigInt_small_variables(void) { // function
I a("10403"), b("103");
}
template <typename I>
void BM_BigInt_small_variables(benchmark::State& state) { // benchmark
while (state.KeepRunning()) {
make_BigInt_small_variables<I>();
}
}
DO_BENCHMARK_TEMPLATE(BM_BigInt_small_variables, M2Integer)
DO_BENCHMARK_TEMPLATE(BM_BigInt_small_variables, M4Integer)
#ifdef WITH_NTL
DO_BENCHMARK_TEMPLATE(BM_BigInt_small_variables, M6Integer)
#endif
DO_BENCHMARK_TEMPLATE(BM_BigInt_small_variables, NativeInteger)
template <typename I>
static void make_BigInt_large_variables(void) { // function
I a("18446744073709551616"), b("18446744073709551617");
}
template <typename I>
void BM_BigInt_large_variables(benchmark::State& state) { // benchmark
while (state.KeepRunning()) {
make_BigInt_large_variables<I>();
}
}
DO_BENCHMARK_TEMPLATE(BM_BigInt_large_variables, M2Integer)
DO_BENCHMARK_TEMPLATE(BM_BigInt_large_variables, M4Integer)
#ifdef WITH_NTL
DO_BENCHMARK_TEMPLATE(BM_BigInt_large_variables, M6Integer)
#endif
static string smalla("10403"), smallb("103");
static string largea("18446744073709551616"), largeb("18446744073709551617");
// add
template <typename I>
static void add_BigInt(const I& a, const I& b) { // function
__attribute__((unused)) I c = a + b;
}
template <typename I>
static void BM_BigInt_Add(benchmark::State& state) { // benchmark
I a(state.range(0) == 0 ? smalla : largea);
I b(state.range(0) == 0 ? smallb : largeb);
while (state.KeepRunning()) {
add_BigInt(a, b);
}
}
BENCHMARK_TEMPLATE(BM_BigInt_Add, M2Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Add, M2Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
BENCHMARK_TEMPLATE(BM_BigInt_Add, M4Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Add, M4Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
#ifdef WITH_NTL
BENCHMARK_TEMPLATE(BM_BigInt_Add, M6Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Add, M6Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
#endif
BENCHMARK_TEMPLATE(BM_BigInt_Add, NativeInteger)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
// +=
template <typename I>
static void addeq_BigInt(I& a, const I& b) { // function
a += b;
}
template <typename I>
static void BM_BigInt_Addeq(benchmark::State& state) { // benchmark
I b(state.range(0) == 0 ? smallb : largeb);
while (state.KeepRunning()) {
I a(state.range(0) == 0 ? smalla : largea);
addeq_BigInt(a, b);
}
}
BENCHMARK_TEMPLATE(BM_BigInt_Addeq, M2Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Addeq, M2Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
BENCHMARK_TEMPLATE(BM_BigInt_Addeq, M4Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Addeq, M4Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
#ifdef WITH_NTL
BENCHMARK_TEMPLATE(BM_BigInt_Addeq, M6Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Addeq, M6Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
#endif
BENCHMARK_TEMPLATE(BM_BigInt_Addeq, NativeInteger)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
// mult
template <typename I>
static void mult_BigInt(const I& a, const I& b) { // function
__attribute__((unused)) I c1 = a * b;
}
template <typename I>
static void BM_BigInt_Mult(benchmark::State& state) { // benchmark
I a(state.range(0) == 0 ? smalla : largea);
I b(state.range(0) == 0 ? smallb : largeb);
while (state.KeepRunning()) {
mult_BigInt(a, b);
}
}
BENCHMARK_TEMPLATE(BM_BigInt_Mult, M2Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Mult, M2Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
BENCHMARK_TEMPLATE(BM_BigInt_Mult, M4Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Mult, M4Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
#ifdef WITH_NTL
BENCHMARK_TEMPLATE(BM_BigInt_Mult, M6Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Mult, M6Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
#endif
BENCHMARK_TEMPLATE(BM_BigInt_Mult, NativeInteger)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
// *=
template <typename I>
static void multeq_BigInt(I& a, const I& b) { // function
a *= b;
}
template <typename I>
static void BM_BigInt_Multeq(benchmark::State& state) { // benchmark
I b(state.range(0) == 0 ? smallb : largeb);
while (state.KeepRunning()) {
I a(state.range(0) == 0 ? smalla : largea);
multeq_BigInt(a, b);
}
}
BENCHMARK_TEMPLATE(BM_BigInt_Multeq, M2Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Multeq, M2Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
BENCHMARK_TEMPLATE(BM_BigInt_Multeq, M4Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Multeq, M4Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
#ifdef WITH_NTL
BENCHMARK_TEMPLATE(BM_BigInt_Multeq, M6Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
BENCHMARK_TEMPLATE(BM_BigInt_Multeq, M6Integer)
->Unit(benchmark::kMicrosecond)
->ArgName("Large")
->Arg(1);
#endif
BENCHMARK_TEMPLATE(BM_BigInt_Multeq, NativeInteger)
->Unit(benchmark::kMicrosecond)
->ArgName("Small")
->Arg(0);
template <typename I>
static void BM_BigInt_ModInverse(benchmark::State& state) { // benchmark
while (state.KeepRunning()) {
I c = I(3017).ModInverse(I(108));
PALISADE_UNUSED(c);
}
}
BENCHMARK_TEMPLATE(BM_BigInt_ModInverse, M2Integer)
->Unit(benchmark::kMicrosecond);
BENCHMARK_TEMPLATE(BM_BigInt_ModInverse, M4Integer)
->Unit(benchmark::kMicrosecond);
#ifdef WITH_NTL
BENCHMARK_TEMPLATE(BM_BigInt_ModInverse, M6Integer)
->Unit(benchmark::kMicrosecond);
#endif
BENCHMARK_TEMPLATE(BM_BigInt_ModInverse, NativeInteger)
->Unit(benchmark::kMicrosecond);
template <typename I>
static void BM_BigInt_ModInverseEq(benchmark::State& state) { // benchmark
while (state.KeepRunning()) {
I(3017).ModInverseEq(I(108));
}
}
BENCHMARK_TEMPLATE(BM_BigInt_ModInverseEq, M2Integer)
->Unit(benchmark::kMicrosecond);
BENCHMARK_TEMPLATE(BM_BigInt_ModInverseEq, M4Integer)
->Unit(benchmark::kMicrosecond);
#ifdef WITH_NTL
BENCHMARK_TEMPLATE(BM_BigInt_ModInverseEq, M6Integer)
->Unit(benchmark::kMicrosecond);
#endif
BENCHMARK_TEMPLATE(BM_BigInt_ModInverseEq, NativeInteger)
->Unit(benchmark::kMicrosecond);
// execute the benchmarks
BENCHMARK_MAIN();

View File

@ -0,0 +1,545 @@
/*
* @author TPOC: contact@palisade-crypto.org
*
* @copyright Copyright (c) 2019, New Jersey Institute of Technology (NJIT)
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution. THIS SOFTWARE IS
* PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*
Description:
This code benchmarks functions of the src/lib/lattoce directory of the
PALISADE lattice encryption library.
*/
#define _USE_MATH_DEFINES
#include "benchmark/benchmark.h"
#include "palisade.h"
#include <iostream>
#include <vector>
#include "vechelper.h"
#include "lattice/dcrtpoly.cpp"
#include "lattice/elemparamfactory.h"
#include "lattice/elemparams.cpp"
#include "lattice/ildcrtparams.cpp"
#include "lattice/ilparams.cpp"
#include "lattice/poly.cpp"
#include "math/discretegaussiangenerator.cpp"
#include "math/discreteuniformgenerator.cpp"
#include "math/nbtheory.cpp"
#include "math/transfrm.cpp"
using namespace std;
using namespace lbcrypto;
namespace lbcrypto {
template <typename E>
static E makeElement(
shared_ptr<lbcrypto::ILParamsImpl<typename E::Integer>> params) {
typename E::Vector vec = makeVector<typename E::Vector>(
params->GetRingDimension(), params->GetModulus());
E elem(params);
elem.SetValues(vec, elem.GetFormat());
return elem;
}
template <typename E>
static E makeElement(
shared_ptr<lbcrypto::ILDCRTParams<typename E::Integer>> p) {
shared_ptr<ILParamsImpl<typename E::Integer>> params(
new ILParamsImpl<typename E::Integer>(p->GetCyclotomicOrder(),
p->GetModulus(), 1));
typename E::Vector vec = makeVector<typename E::Vector>(
params->GetRingDimension(), params->GetModulus());
typename E::PolyLargeType bigE(params);
bigE.SetValues(vec, bigE.GetFormat());
E elem(bigE, p);
return elem;
}
static vector<usint> o({16, 1024, 2048, 4096, 8192, 16384, 32768});
static const usint DCRTBITS = 28;
template <typename P>
static void GenerateParms(map<usint, shared_ptr<P>> &parmArray) {
for (usint v : o) {
shared_ptr<P> value;
try {
value = ElemParamFactory::GenElemParams<P>(v);
} catch (...) {
break;
}
parmArray[v] = value;
}
}
template <typename P>
static void GenerateDCRTParms(map<usint, shared_ptr<P>> &parmArray) {
for (usint v : o) {
size_t idx = ElemParamFactory::GetNearestIndex(v);
M2Integer primeq(ElemParamFactory::DefaultSet[idx].q);
usint bits = primeq.GetMSB();
usint ntowers = bits / DCRTBITS + 1;
parmArray[v] = ElemParamFactory::GenElemParams<P>(v, 28, ntowers);
}
}
template <typename P, typename E>
static void GeneratePolys(map<usint, shared_ptr<P>> &parmArray,
map<usint, vector<E>> &polyArray) {
for (auto &pair : parmArray) {
for (int i = 0; i < 2; i++)
polyArray[pair.first].push_back(makeElement<E>(parmArray[pair.first]));
}
}
} // namespace lbcrypto
map<usint, shared_ptr<ILNativeParams>> Nativeparms;
map<usint, shared_ptr<M2Params>> BE2parms;
map<usint, shared_ptr<M2DCRTParams>> BE2dcrtparms;
map<usint, shared_ptr<M4Params>> BE4parms;
map<usint, shared_ptr<M4DCRTParams>> BE4dcrtparms;
#ifdef WITH_NTL
map<usint, shared_ptr<M6Params>> BE6parms;
map<usint, shared_ptr<M6DCRTParams>> BE6dcrtparms;
#endif
map<usint, vector<NativePoly>> Nativepolys;
map<usint, vector<M2Poly>> BE2polys;
map<usint, vector<M2DCRTPoly>> BE2DCRTpolys;
map<usint, vector<M4Poly>> BE4polys;
map<usint, vector<M4DCRTPoly>> BE4DCRTpolys;
#ifdef WITH_NTL
map<usint, vector<M6Poly>> BE6polys;
map<usint, vector<M6DCRTPoly>> BE6DCRTpolys;
#endif
class Setup {
public:
Setup() {
GenerateParms<ILNativeParams>(Nativeparms);
GenerateParms<M2Params>(BE2parms);
GenerateDCRTParms<M2DCRTParams>(BE2dcrtparms);
GenerateParms<M4Params>(BE4parms);
GenerateDCRTParms<M4DCRTParams>(BE4dcrtparms);
#ifdef WITH_NTL
GenerateParms<M6Params>(BE6parms);
GenerateDCRTParms<M6DCRTParams>(BE6dcrtparms);
#endif
GeneratePolys<ILNativeParams, NativePoly>(Nativeparms, Nativepolys);
GeneratePolys<M2Params, M2Poly>(BE2parms, BE2polys);
GeneratePolys<M4Params, M4Poly>(BE4parms, BE4polys);
#ifdef WITH_NTL
GeneratePolys<M6Params, M6Poly>(BE6parms, BE6polys);
#endif
GeneratePolys<M2DCRTParams, M2DCRTPoly>(BE2dcrtparms, BE2DCRTpolys);
GeneratePolys<M4DCRTParams, M4DCRTPoly>(BE4dcrtparms, BE4DCRTpolys);
#ifdef WITH_NTL
GeneratePolys<M6DCRTParams, M6DCRTPoly>(BE6dcrtparms, BE6DCRTpolys);
#endif
}
template <typename P>
shared_ptr<P> GetParm(usint o);
template <typename E>
const E &GetPoly(usint o, int p);
} TestParameters;
template <>
shared_ptr<ILNativeParams> Setup::GetParm(usint o) {
return Nativeparms[o];
}
template <>
shared_ptr<M2Params> Setup::GetParm(usint o) {
return BE2parms[o];
}
template <>
shared_ptr<M2DCRTParams> Setup::GetParm(usint o) {
return BE2dcrtparms[o];
}
template <>
shared_ptr<M4Params> Setup::GetParm(usint o) {
return BE4parms[o];
}
template <>
shared_ptr<M4DCRTParams> Setup::GetParm(usint o) {
return BE4dcrtparms[o];
}
#ifdef WITH_NTL
template <>
shared_ptr<M6Params> Setup::GetParm(usint o) {
return BE6parms[o];
}
template <>
shared_ptr<M6DCRTParams> Setup::GetParm(usint o) {
return BE6dcrtparms[o];
}
#endif
template <>
const NativePoly &Setup::GetPoly(usint o, int p) {
return Nativepolys[o][p];
}
template <>
const M2Poly &Setup::GetPoly(usint o, int p) {
return BE2polys[o][p];
}
template <>
const M4Poly &Setup::GetPoly(usint o, int p) {
return BE4polys[o][p];
}
#ifdef WITH_NTL
template <>
const M6Poly &Setup::GetPoly(usint o, int p) {
return BE6polys[o][p];
}
#endif
template <>
const M2DCRTPoly &Setup::GetPoly(usint o, int p) {
return BE2DCRTpolys[o][p];
}
template <>
const M4DCRTPoly &Setup::GetPoly(usint o, int p) {
return BE4DCRTpolys[o][p];
}
#ifdef WITH_NTL
template <>
const M6DCRTPoly &Setup::GetPoly(usint o, int p) {
return BE6DCRTpolys[o][p];
}
#endif
#define DO_NATIVEPOLY_BENCHMARK(X) \
BENCHMARK_TEMPLATE(X, NativePoly) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_16") \
->Arg(16); \
BENCHMARK_TEMPLATE(X, NativePoly) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_1024") \
->Arg(1024); \
BENCHMARK_TEMPLATE(X, NativePoly) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_2048") \
->Arg(2048);
#define DO_POLY_BENCHMARK_TEMPLATE(X, Y) \
BENCHMARK_TEMPLATE(X, Y) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_16") \
->Arg(16); \
BENCHMARK_TEMPLATE(X, Y) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_1024") \
->Arg(1024); \
BENCHMARK_TEMPLATE(X, Y) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_2048") \
->Arg(2048); \
/*BENCHMARK_TEMPLATE(X,Y)->Unit(benchmark::kMicrosecond)->ArgName("parm_4096")->Arg(4096);*/ \
BENCHMARK_TEMPLATE(X, Y) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_8192") \
->Arg(8192); \
/*BENCHMARK_TEMPLATE(X,Y)->Unit(benchmark::kMicrosecond)->ArgName("parm_16384")->Arg(16384);*/ \
BENCHMARK_TEMPLATE(X, Y) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_32768") \
->Arg(32768);
// benchmark just a declaration of an empty
template <typename E>
static void make_LATTICE_empty(shared_ptr<typename E::Params> params) {
E v1(params);
}
template <typename E>
void BM_LATTICE_empty(benchmark::State &state) { // benchmark
if (state.thread_index == 0) {
;
}
while (state.KeepRunning()) {
make_LATTICE_empty<E>(
TestParameters.GetParm<typename E::Params>(state.range(0)));
}
}
DO_NATIVEPOLY_BENCHMARK(BM_LATTICE_empty)
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_empty, M2Poly)
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_empty, M4Poly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_empty, M6Poly)
#endif
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_empty, M2DCRTPoly)
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_empty, M4DCRTPoly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_empty, M6DCRTPoly)
#endif
template <typename E>
static void make_LATTICE_vector(
benchmark::State &state,
shared_ptr<typename E::Params> params) { // function
E elem = makeElement<E>(params);
}
template <typename E>
void BM_LATTICE_makevector(benchmark::State &state) { // benchmark
if (state.thread_index == 0) {
;
}
while (state.KeepRunning()) {
make_LATTICE_vector<E>(
state, TestParameters.GetParm<typename E::Params>(state.range(0)));
}
}
DO_NATIVEPOLY_BENCHMARK(BM_LATTICE_makevector)
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_makevector, M2Poly)
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_makevector, M4Poly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_makevector, M6Poly)
#endif
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_makevector, M2DCRTPoly)
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_makevector, M4DCRTPoly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_LATTICE_makevector, M6DCRTPoly)
#endif
// plus
template <typename E>
static void add_LATTICE(const E &a, const E &b) {
E c1;
benchmark::DoNotOptimize(c1 = a + b);
}
template <typename E>
static void BM_add_LATTICE(benchmark::State &state) { // benchmark
E a;
E b;
if (state.thread_index == 0) {
a = TestParameters.GetPoly<E>(state.range(0), 0);
b = TestParameters.GetPoly<E>(state.range(0), 1);
}
while (state.KeepRunning()) {
add_LATTICE<E>(a, b);
}
}
DO_NATIVEPOLY_BENCHMARK(BM_add_LATTICE)
DO_POLY_BENCHMARK_TEMPLATE(BM_add_LATTICE, M2Poly)
DO_POLY_BENCHMARK_TEMPLATE(BM_add_LATTICE, M4Poly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_add_LATTICE, M6Poly)
#endif
DO_POLY_BENCHMARK_TEMPLATE(BM_add_LATTICE, M2DCRTPoly)
DO_POLY_BENCHMARK_TEMPLATE(BM_add_LATTICE, M4DCRTPoly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_add_LATTICE, M6DCRTPoly)
#endif
// plus=
template <typename E>
static void addeq_LATTICE(E &a, const E &b) {
benchmark::DoNotOptimize(a += b);
}
template <typename E>
static void BM_addeq_LATTICE(benchmark::State &state) { // benchmark
E a;
E b;
if (state.thread_index == 0) {
b = TestParameters.GetPoly<E>(state.range(0), 1);
a = TestParameters.GetPoly<E>(state.range(0), 0);
}
while (state.KeepRunning()) {
// a = TestParameters.GetPoly<E>(state.range(0),0);
addeq_LATTICE<E>(a, b);
}
}
DO_NATIVEPOLY_BENCHMARK(BM_addeq_LATTICE)
DO_POLY_BENCHMARK_TEMPLATE(BM_addeq_LATTICE, M2Poly)
DO_POLY_BENCHMARK_TEMPLATE(BM_addeq_LATTICE, M4Poly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_addeq_LATTICE, M6Poly)
#endif
DO_POLY_BENCHMARK_TEMPLATE(BM_addeq_LATTICE, M2DCRTPoly)
DO_POLY_BENCHMARK_TEMPLATE(BM_addeq_LATTICE, M4DCRTPoly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_addeq_LATTICE, M6DCRTPoly)
#endif
template <class E>
static void mult_LATTICE(const E &a, const E &b) { // function
E c1;
benchmark::DoNotOptimize(c1 = a * b);
}
template <class E>
static void BM_mult_LATTICE(benchmark::State &state) {
E a, b;
if (state.thread_index == 0) {
a = TestParameters.GetPoly<E>(state.range(0), 0);
b = TestParameters.GetPoly<E>(state.range(0), 1);
}
while (state.KeepRunning()) {
mult_LATTICE<E>(a, b);
}
}
DO_NATIVEPOLY_BENCHMARK(BM_mult_LATTICE)
DO_POLY_BENCHMARK_TEMPLATE(BM_mult_LATTICE, M2Poly)
DO_POLY_BENCHMARK_TEMPLATE(BM_mult_LATTICE, M4Poly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_mult_LATTICE, M6Poly)
#endif
DO_POLY_BENCHMARK_TEMPLATE(BM_mult_LATTICE, M2DCRTPoly)
DO_POLY_BENCHMARK_TEMPLATE(BM_mult_LATTICE, M4DCRTPoly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_mult_LATTICE, M6DCRTPoly)
#endif
template <class E>
static void multeq_LATTICE(E &a, const E &b) { // function
benchmark::DoNotOptimize(a *= b);
}
template <class E>
static void BM_multeq_LATTICE(benchmark::State &state) { // benchmark
E a, b;
if (state.thread_index == 0) {
b = TestParameters.GetPoly<E>(state.range(0), 1);
a = TestParameters.GetPoly<E>(state.range(0), 0);
}
while (state.KeepRunning()) {
// a = TestParameters.GetPoly<E>(state.range(0),0);
multeq_LATTICE<E>(a, b);
}
}
DO_NATIVEPOLY_BENCHMARK(BM_multeq_LATTICE)
DO_POLY_BENCHMARK_TEMPLATE(BM_multeq_LATTICE, M2Poly)
DO_POLY_BENCHMARK_TEMPLATE(BM_multeq_LATTICE, M4Poly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_multeq_LATTICE, M6Poly)
#endif
DO_POLY_BENCHMARK_TEMPLATE(BM_multeq_LATTICE, M2DCRTPoly)
DO_POLY_BENCHMARK_TEMPLATE(BM_multeq_LATTICE, M4DCRTPoly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_multeq_LATTICE, M6DCRTPoly)
#endif
template <class E>
static void switchformat_LATTICE(benchmark::State &state,
shared_ptr<typename E::Params> params) {
E a = TestParameters.GetPoly<E>(state.range(0), 0);
a.SwitchFormat();
}
template <class E>
static void BM_switchformat_LATTICE(benchmark::State &state) { // benchmark
if (state.thread_index == 0) {
;
}
while (state.KeepRunning()) {
switchformat_LATTICE<E>(
state, TestParameters.GetParm<typename E::Params>(state.range(0)));
}
}
DO_NATIVEPOLY_BENCHMARK(BM_switchformat_LATTICE)
DO_POLY_BENCHMARK_TEMPLATE(BM_switchformat_LATTICE, M2Poly)
DO_POLY_BENCHMARK_TEMPLATE(BM_switchformat_LATTICE, M4Poly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_switchformat_LATTICE, M6Poly)
#endif
DO_POLY_BENCHMARK_TEMPLATE(BM_switchformat_LATTICE, M2DCRTPoly)
DO_POLY_BENCHMARK_TEMPLATE(BM_switchformat_LATTICE, M4DCRTPoly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_switchformat_LATTICE, M6DCRTPoly)
#endif
template <class E>
static void doubleswitchformat_LATTICE(benchmark::State &state,
shared_ptr<typename E::Params> params) {
E a = TestParameters.GetPoly<E>(state.range(0), 0);
a.SwitchFormat();
a.SwitchFormat();
}
template <class E>
static void BM_doubleswitchformat_LATTICE(
benchmark::State &state) { // benchmark
if (state.thread_index == 0) {
;
}
while (state.KeepRunning()) {
doubleswitchformat_LATTICE<E>(
state, TestParameters.GetParm<typename E::Params>(state.range(0)));
}
}
DO_NATIVEPOLY_BENCHMARK(BM_doubleswitchformat_LATTICE)
DO_POLY_BENCHMARK_TEMPLATE(BM_doubleswitchformat_LATTICE, M2Poly)
DO_POLY_BENCHMARK_TEMPLATE(BM_doubleswitchformat_LATTICE, M4Poly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_doubleswitchformat_LATTICE, M6Poly)
#endif
DO_POLY_BENCHMARK_TEMPLATE(BM_doubleswitchformat_LATTICE, M2DCRTPoly)
DO_POLY_BENCHMARK_TEMPLATE(BM_doubleswitchformat_LATTICE, M4DCRTPoly)
#ifdef WITH_NTL
DO_POLY_BENCHMARK_TEMPLATE(BM_doubleswitchformat_LATTICE, M6DCRTPoly)
#endif
// execute the benchmarks
BENCHMARK_MAIN();

View File

@ -0,0 +1,403 @@
/*
* Description:
* This code benchmarks functions of the number theory directory of the
* PALISADE lattice encryption library.
* @author TPOC: contact@palisade-crypto.org
*
* @copyright Copyright (c) 2019, New Jersey Institute of Technology (NJIT)
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution. THIS SOFTWARE IS
* PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#define _USE_MATH_DEFINES
#include "benchmark/benchmark.h"
#include <iostream>
#include "palisade.h"
using namespace std;
using namespace lbcrypto;
//==================================
// GCD benchmarks
// this benchmark returns a reference to a BBI which can be used for output
static BigInteger GCD_equals_small_numbers(void) { // function
BigInteger a("10403"), b("103");
BigInteger c(lbcrypto::GreatestCommonDivisor(a, b));
return (c);
}
// this benchmark sets the output label with a result from the function
static void BM_GCD1(benchmark::State &state) { // benchmark
int out = 0;
while (state.KeepRunning()) {
benchmark::DoNotOptimize(GCD_equals_small_numbers());
}
// Prevent compiler optimizations (note I haven't seen the complier optimize
// code out if we leave this out... )
std::stringstream ss;
ss << out;
state.SetLabel(ss.str().c_str()); // label attached to output
}
BENCHMARK(BM_GCD1); // register benchmark
// this benchmark returns an int. In some cases the return BBI value
// cannot be converted to an int (too big) so you need to return a
// reference to the BBI instead. this time we can use an int.
static int GCD_equals_powers_of_two_numbers(void) {
BigInteger a("1048576"), b("4096");
BigInteger c(lbcrypto::GreatestCommonDivisor(a, b));
return (c.ConvertToInt());
}
static void BM_GCD2(benchmark::State &state) { // benchmark
int out = 0;
while (state.KeepRunning()) {
out = GCD_equals_powers_of_two_numbers();
}
// Prevent compiler optimizations
std::stringstream ss;
ss << out;
state.SetLabel(ss.str().c_str());
}
BENCHMARK(BM_GCD2); // register benchmark
//===================================================
// the following benchmark MillerRabinPrimalityTest for various inputs
//
// returns boolean
static bool MRP_is_prime_small_prime(void) { // function
BigInteger prime("24469");
return (lbcrypto::MillerRabinPrimalityTest(prime));
}
static void BM_MRP1(benchmark::State &state) { // benchmark
int out = 0;
while (state.KeepRunning()) {
out = MRP_is_prime_small_prime();
}
// Prevent compiler optimizations
std::stringstream ss;
ss << out;
state.SetLabel(ss.str().c_str());
}
BENCHMARK(BM_MRP1); // register benchmark
//
static bool MRP_is_prime_big_prime(void) { // function
BigInteger prime("952229140957");
return (lbcrypto::MillerRabinPrimalityTest(prime));
}
static void BM_MRP2(benchmark::State &state) { // benchmark
bool out = 0;
while (state.KeepRunning()) {
out = MRP_is_prime_big_prime();
}
// Prevent compiler optimizations
std::stringstream ss;
ss << out;
state.SetLabel(ss.str().c_str());
}
BENCHMARK(BM_MRP2); // register benchmark
//
static bool MRP_is_not_prime_small_composite_number(void) { // function
BigInteger isNotPrime("10403");
return (lbcrypto::MillerRabinPrimalityTest(isNotPrime));
}
static void BM_MRP3(benchmark::State &state) { // benchmark
bool out = 0;
while (state.KeepRunning()) {
out = MRP_is_not_prime_small_composite_number();
}
// Prevent compiler optimizations
std::stringstream ss;
ss << out;
state.SetLabel(ss.str().c_str());
}
BENCHMARK(BM_MRP3); // register benchmark
//
static bool MRP_is_not_prime_big_composite_number(void) { // function
BigInteger isNotPrime("952229140959");
return (lbcrypto::MillerRabinPrimalityTest(isNotPrime));
}
static void BM_MRP4(benchmark::State &state) { // benchmark
bool out = 0;
while (state.KeepRunning()) {
out = MRP_is_not_prime_big_composite_number();
}
// Prevent compiler optimizations
std::stringstream ss;
ss << out;
state.SetLabel(ss.str().c_str());
}
BENCHMARK(BM_MRP4); // register benchmark
//========================================
// the following does not return anything..
static void factorize_returns_factors(void) {
BigInteger comp("53093040");
std::set<BigInteger> factors;
lbcrypto::PrimeFactorize(comp, factors);
}
static void BM_FACT1(benchmark::State &state) {
while (state.KeepRunning()) {
// note you cannot use benchmark::DoNotOptimize() here because
// factorize_returns_factors() is a void, it must return a value
factorize_returns_factors();
}
}
BENCHMARK(BM_FACT1); // register benchmark
//======================================
// Prime Modulus tests
//
static BigInteger PM_foundPrimeModulus(void) {
const usint m = 2048;
const usint nBits = 30;
return lbcrypto::FirstPrime<BigInteger>(nBits, m);
}
static void BM_PM1(benchmark::State &state) { // benchmark
BigInteger out;
while (state.KeepRunning()) {
out = PM_foundPrimeModulus();
}
// Prevent compiler optimizations
std::stringstream ss;
ss << out.ToString();
state.SetLabel(ss.str().c_str());
}
BENCHMARK(BM_PM1); // register benchmark
#if 0 // this benchmark has not been tested
//note this returns a refrence to BBI
static BigInteger& PM_returns_higher_bit_length(void){
usint m=4096;
usint nBits=49;
BigInteger primeModulus = lbcrypto::FirstPrime<BigInteger>(nBits, m);
return (primeModulus);
}
// saving the reference to BBI for output adds some copy overhead
static void BM_PM2(benchmark::State& state) {
BigInteger out;
while (state.KeepRunning()) {
out = PM_returns_higher_bit_length();
}
// Prevent compiler optimizations
std::stringstream ss;
ss << out.ToString();
state.SetLabel(ss.str().c_str());
}
BENCHMARK(BM_PM2); // register benchmark
#endif
// Note this benchmark returns two BBIs so we return a string and suffer
// some overhead
static string PROU_equals_m_not_equals_mbytwo(void) {
usint m = 4096;
usint nBits = 33;
BigInteger primeModulus = lbcrypto::FirstPrime<BigInteger>(nBits, m);
BigInteger primitiveRootOfUnity =
lbcrypto::RootOfUnity<BigInteger>(m, primeModulus);
BigInteger M(std::to_string(m)), MbyTwo(M.DividedBy(2));
BigInteger wpowerm = primitiveRootOfUnity.ModExp(M, primeModulus);
BigInteger wpowermbytwo = primitiveRootOfUnity.ModExp(MbyTwo, primeModulus);
return (wpowerm.ToString() + " " + wpowermbytwo.ToString());
}
static void BM_PROU1(benchmark::State &state) {
string out;
while (state.KeepRunning()) {
out = PROU_equals_m_not_equals_mbytwo();
}
// Prevent compiler optimizations
std::stringstream ss;
ss << out;
state.SetLabel(ss.str().c_str());
}
BENCHMARK(BM_PROU1); // register benchmark
#if 0 // this takes a long time to run so comment out for quick check
//similarly this outputs 3 values with a string
static string PROU_equals_m_not_equals_mbytwo_mbyfour_single_input(void){
const usint n=2048;
const usint m=2*n;
const usint nBits=43;
const int ITERATIONS = m*2;
BigInteger M(std::to_string(m)),
MbyTwo(M.DividedBy(BigInteger::TWO)),
MbyFour(MbyTwo.DividedBy(BigInteger::TWO));
BigInteger primeModulus = lbcrypto::FirstPrime<BigInteger>(nBits, m);
BigInteger wpowerm("0");
BigInteger wpowermbytwo("0");
BigInteger wpowermbyfour("0");
for(int i=0; i<ITERATIONS; i++) {
BigInteger primitiveRootOfUnity = lbcrypto::RootOfUnity<BigInteger>(m, primeModulus);
wpowerm = primitiveRootOfUnity.ModExp(M, primeModulus);
wpowermbytwo = primitiveRootOfUnity.ModExp(MbyTwo, primeModulus);
wpowermbyfour = primitiveRootOfUnity.ModExp(MbyFour, primeModulus);
}
return(wpowerm.ToString() + " " +
wpowermbytwo.ToString() + " " +
wpowermbyfour.ToString());
}
static void BM_PROU2(benchmark::State& state) {
string out;
while (state.KeepRunning()) {
out = PROU_equals_m_not_equals_mbytwo_mbyfour_single_input();
}
// Prevent compiler optimizations
std::stringstream ss;
ss << out;
state.SetLabel(ss.str().c_str());
}
BENCHMARK(BM_PROU2);
#endif
// similarly this outputs 3 values with a string
static string PROU_equals_m_not_equals_mbytwo_mbyfour_multiple_inputs(void) {
usint nqBitsArray[] = {
1,
1,
2,
4,
8,
20,
1024,
30,
2048,
31,
2048,
33,
2048,
40,
2048,
41
// const usint BIT_LENGTH = 200 and const usint FRAGMENTATION_FACTOR = 27
// ,2048, 51
,
4096,
32,
4096,
43
// ,4096, 53
,
8192,
33,
8192,
44
// ,8192, 55
,
16384,
34,
16384,
46
// ,16384, 57
,
32768,
35,
32768,
47
// ,32768, 59
};
int length = sizeof(nqBitsArray) / sizeof(nqBitsArray[0]);
usint n, qBits, m;
BigInteger wpowerm("0");
BigInteger wpowermbytwo("0");
BigInteger wpowermbyfour("0");
for (int i = 2; i < length; i += 2) {
n = nqBitsArray[i];
qBits = nqBitsArray[i + 1];
m = 2 * n;
BigInteger M(std::to_string(m)), MbyTwo(M.DividedBy(2)),
MbyFour(MbyTwo.DividedBy(2));
BigInteger primeModulus = lbcrypto::FirstPrime<BigInteger>(qBits, m);
BigInteger primitiveRootOfUnity(
lbcrypto::RootOfUnity<BigInteger>(m, primeModulus));
wpowerm = primitiveRootOfUnity.ModExp(M, primeModulus);
wpowermbytwo = primitiveRootOfUnity.ModExp(MbyTwo, primeModulus);
wpowermbyfour = primitiveRootOfUnity.ModExp(MbyFour, primeModulus);
}
return (wpowerm.ToString() + " " + wpowermbytwo.ToString() + " " +
wpowermbyfour.ToString());
}
static void BM_PROU3(benchmark::State &state) { // benchmark
string out;
while (state.KeepRunning()) {
out = PROU_equals_m_not_equals_mbytwo_mbyfour_multiple_inputs();
}
// Prevent compiler optimizations
std::stringstream ss;
ss << out;
state.SetLabel(ss.str().c_str());
}
BENCHMARK(BM_PROU3); // register benchmark
// execute the benchmarks
BENCHMARK_MAIN();

View File

@ -0,0 +1,148 @@
# Benchmarking
Palisade uses the [Google microbenchmark support library](https://github.com/google/benchmark#running-benchmarks) to measure performance. Performance testing code can be found in `/benchmark/src`. After building, binaries are written to `/your_build_folder/bin/benchmark`. To build only tests and their dependencies, use the following command in the build folder:
```
make allbenchmark
```
To run the benchmark `benchmark-to-run` from the build folder for linux or macOS, run:
```
./bin/benchmark/benchmark-to-run
```
For Windows run:
```
bin/benchmark/benchmark-to-run.exe
```
By default each benchmark is run once and that single result is reported. However benchmarks are often noisy and a single result may not be representative of the overall behavior. For this reason it's possible to repeatedly rerun the benchmark.
The number of runs of each benchmark is specified globally by the `--benchmark_repetitions` command-line flag or on a per benchmark basis by calling Repetitions on the registered benchmark object. When a benchmark is run more than once, the mean, median and standard deviation of the runs are reported.
Additionally the `--benchmark_report_aggregates_only={true|false}`, `--benchmark_display_aggregates_only={true|false}` flags can be used to change how repeated tests are reported. By default the result of each repeated run is reported. When the report aggregates only option is true, only the aggregates (i.e. mean, median and standard deviation, maybe complexity measurements if they were requested) of the runs are reported, to both reporters - standard output (console), and the file. However, when only the display aggregates only option is true, only the aggregates are displayed in the standard output, while the file output still contains everything.
OMP can also affect the benchmarking time. In order to reduce noise, it is advisable to set the number of threads not higher than the number of physical cores (as hyperthreading introduces a lot of variability).
```
export OMP_NUM_THREADS=number_of_cores
```
In order to remove the noise related to multithreading, set the number of threads to 1
```
export OMP_NUM_THREADS=1
```
## lib-benchmark
[lib-benchmark](lib-benchmark.cpp) is the main PALISADE library benchmark that contains performance tests for standard operations in the following schemes: BFVrns, CKKS, BGVrns. It also contains several performance tests for NTT and INTT transformations.
An example output after running `lib-benchmark` is as follows:
```
-------------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------------
NTTTransform1024 10.1 us 10.1 us 69178
INTTTransform1024 10.6 us 10.6 us 66271
NTTTransform4096 47.6 us 47.6 us 14695
INTTTransform4096 49.3 us 49.3 us 14199
NTTTransformInPlace1024 9.51 us 9.51 us 73678
INTTTransformInPlace1024 10.4 us 10.4 us 67144
NTTTransformInPlace4096 44.9 us 44.9 us 15595
INTTTransformInPlace4096 48.3 us 48.3 us 14501
BFVrns_KeyGen 2349 us 2349 us 298
BFVrns_MultKeyGen 3807 us 3807 us 183
BFVrns_EvalAtIndexKeyGen 3909 us 3909 us 179
BFVrns_Encryption 2258 us 2258 us 310
BFVrns_Decryption 539 us 539 us 1300
BFVrns_Add 33.9 us 33.9 us 20603
BFVrns_AddInPlace 24.0 us 24.0 us 29269
BFVrns_MultNoRelin 7399 us 7398 us 95
BFVrns_MultRelin 8593 us 8592 us 82
BFVrns_EvalAtIndex 1035 us 1034 us 674
CKKS_KeyGen 2320 us 2320 us 302
CKKS_MultKeyGen 5931 us 5931 us 117
CKKS_EvalAtIndexKeyGen 5846 us 5845 us 118
CKKS_Encryption 2002 us 2002 us 349
CKKS_Decryption 922 us 922 us 759
CKKS_Add 35.2 us 35.2 us 19807
CKKS_AddInPlace 23.8 us 23.8 us 29181
CKKS_MultNoRelin 214 us 214 us 3254
CKKS_MultRelin 3160 us 3160 us 222
CKKS_Relin 3021 us 3021 us 232
CKKS_RelinInPlace 2958 us 2958 us 236
CKKS_Rescale 546 us 546 us 1287
CKKS_RescaleInPlace 534 us 534 us 1308
CKKS_EvalAtIndex 2758 us 2758 us 252
BGVrns_KeyGen 2329 us 2329 us 300
BGVrns_MultKeyGen 5926 us 5925 us 118
BGVrns_EvalAtIndexKeyGen 5987 us 5987 us 117
BGVrns_Encryption 2252 us 2252 us 311
BGVrns_Decryption 398 us 398 us 1754
BGVrns_Add 44.6 us 44.6 us 15682
BGVrns_AddInPlace 35.9 us 35.9 us 19671
BGVrns_MultNoRelin 208 us 208 us 3356
BGVrns_MultRelin 3205 us 3205 us 218
BGVrns_Relin 3091 us 3091 us 227
BGVrns_RelinInPlace 3029 us 3029 us 231
BGVrns_ModSwitch 549 us 549 us 1275
BGVrns_ModSwitchInPlace 539 us 539 us 1298
BGVrns_EvalAtIndex 2806 us 2805 us 249
```
## poly-benchmark
[poly-1k](poly-benchmark-1k.cpp), [poly-4k](poly-benchmark-4k.cpp), [poly-16k](poly-benchmark-16k.cpp), [poly-64k](poly-test-64k.cpp)
contains performance tests for primitive polynomial operations with ring sizes 1k, 4k, 16k, 64k, respectively.
The following operations are used to evaluate the performance: addition, Hadamard (component-wise) multiplication, NTT and INTT. These operations (especially NTT and iNTT) are the main bottleneck operations for all lattice cryptographic capabilities.
All operations are performed for NativePoly and DCRTPoly with settings for 1, 2, 4 and 8 towers (`tower` is the number of residues in the RNS representation of each large integer).
An example output after running `poly-benchmark-xk` is as follows:
```
-------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------
Native_add 0.936 us 0.936 us 748048
DCRT_add/towers:1 1.16 us 1.16 us 602138
DCRT_add/towers:2 2.25 us 2.25 us 311691
DCRT_add/towers:4 4.30 us 4.30 us 162618
DCRT_add/towers:8 8.77 us 8.77 us 79828
Native_mul 2.94 us 2.94 us 237968
DCRT_mul/towers:1 3.16 us 3.16 us 221648
DCRT_mul/towers:2 6.22 us 6.22 us 112086
DCRT_mul/towers:4 12.3 us 12.3 us 57139
DCRT_mul/towers:8 24.7 us 24.7 us 28305
Native_ntt 9.61 us 9.61 us 72903
DCRT_ntt/towers:1 9.80 us 9.80 us 71486
DCRT_ntt/towers:2 19.5 us 19.5 us 35900
DCRT_ntt/towers:4 38.8 us 38.8 us 18029
DCRT_ntt/towers:8 77.8 us 77.8 us 9001
Native_intt 10.5 us 10.5 us 66770
DCRT_intt/towers:1 10.7 us 10.7 us 65778
DCRT_intt/towers:2 21.3 us 21.3 us 32912
DCRT_intt/towers:4 42.3 us 42.3 us 16532
DCRT_intt/towers:8 84.9 us 84.9 us 8242
```
## other
There are several other benchmarking tests:
* [basic_test](basic_test.cpp) - trivial benchmarking
* [binfhe-ap](binfhe-ap.cpp) - boolean functions performance tests for **FHEW** scheme with AP bootstrapping technique. Please see "Bootstrapping in FHEW-like Cryptosystems" for details on both bootstrapping techniques
* [binfhe-ginx](binfhe-ginx.cpp) - boolean functions performance tests for **FHEW** scheme with GINX bootstrapping technique. Please see "Bootstrapping in FHEW-like Cryptosystems" for details on both bootstrapping techniques
* [compare-bfvrns-vs-bfvrnsB](compare-bfvrns-vs-bfvrnsB.cpp) - performance comparison between **BFVrns** and **BFVrnsB** schemes for similar parameter sets
* [compare-bfvrns-vs-bgvrns](compare-bfvrns-vs-bgvrns.cpp) - performance comparison between **BFVrns** and **BGVrns** schemes for similar parameter sets
* [Encoding](Encoding.cpp) - performance tests for different encoding techniques
* [IntegerMath](IntegerMath.cpp) - performance tests for the big integer operations
* [Lattice](Lattice.cpp) - performance tests for the Lattice operations.
* [NbTheory](NbTheory.cpp) - performance tests of number theory functions
* [Serialization](serialize-ckks.cpp) - performance tests of CKKS serialization
* [VectorMath](VectorMath.cpp) - performance tests for the big vector operations

View File

@ -0,0 +1,197 @@
/*
* @author TPOC: contact@palisade-crypto.org
*
* @copyright Copyright (c) 2019, New Jersey Institute of Technology (NJIT)
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution. THIS SOFTWARE IS
* PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*
This code benchmarks functions of the math directory of the PALISADE lattice
encryption library.
*/
#define _USE_MATH_DEFINES
#include "benchmark/benchmark.h"
#include "palisade.h"
#include <iostream>
#include "vechelper.h"
#include "lattice/dcrtpoly.cpp"
#include "lattice/elemparamfactory.h"
#include "lattice/elemparams.cpp"
#include "lattice/ildcrtparams.cpp"
#include "lattice/ilparams.cpp"
#include "lattice/poly.cpp"
#include "math/discretegaussiangenerator.cpp"
#include "math/discreteuniformgenerator.cpp"
#include "math/nbtheory.cpp"
#include "math/transfrm.cpp"
using namespace std;
using namespace lbcrypto;
#define DO_NATIVEVECTOR_BENCHMARK(X) \
BENCHMARK_TEMPLATE(X, NativeVector) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_16") \
->Arg(16); \
BENCHMARK_TEMPLATE(X, NativeVector) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_1024") \
->Arg(1024); \
BENCHMARK_TEMPLATE(X, NativeVector) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_2048") \
->Arg(2048);
#define DO_VECTOR_BENCHMARK_TEMPLATE(X, Y) \
BENCHMARK_TEMPLATE(X, Y) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_16") \
->Arg(16); \
BENCHMARK_TEMPLATE(X, Y) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_1024") \
->Arg(1024); \
BENCHMARK_TEMPLATE(X, Y) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_2048") \
->Arg(2048); \
/*BENCHMARK_TEMPLATE(X,Y)->Unit(benchmark::kMicrosecond)->ArgName("parm_4096")->Arg(4096);*/ \
BENCHMARK_TEMPLATE(X, Y) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_8192") \
->Arg(8192); \
/*BENCHMARK_TEMPLATE(X,Y)->Unit(benchmark::kMicrosecond)->ArgName("parm_16384")->Arg(16384);*/ \
BENCHMARK_TEMPLATE(X, Y) \
->Unit(benchmark::kMicrosecond) \
->ArgName("parm_32768") \
->Arg(32768);
// add
template <typename V>
static void add_BigVec(const V &a, const V &b) {
V c = a + b;
}
template <typename V>
static void BM_BigVec_Add(benchmark::State &state) { // benchmark
auto p = state.range(0);
size_t idx = ElemParamFactory::GetNearestIndex(p);
typename V::Integer q(ElemParamFactory::DefaultSet[idx].q);
V a = makeVector<V>(p, q);
V b = makeVector<V>(p, q);
while (state.KeepRunning()) {
add_BigVec<V>(a, b);
}
}
DO_NATIVEVECTOR_BENCHMARK(BM_BigVec_Add)
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Add, M2Vector)
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Add, M4Vector)
#ifdef WITH_NTL
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Add, M6Vector)
#endif
// +=
template <typename V>
static void addeq_BigVec(V &a, const V &b) {
a += b;
}
template <typename V>
static void BM_BigVec_Addeq(benchmark::State &state) { // benchmark
auto p = state.range(0);
size_t idx = ElemParamFactory::GetNearestIndex(p);
typename V::Integer q(ElemParamFactory::DefaultSet[idx].q);
V b = makeVector<V>(p, q);
V a = makeVector<V>(p, q);
while (state.KeepRunning()) {
// V a = makeVector<V>(p, q);
addeq_BigVec<V>(a, b);
}
}
DO_NATIVEVECTOR_BENCHMARK(BM_BigVec_Addeq)
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Addeq, M2Vector)
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Addeq, M4Vector)
#ifdef WITH_NTL
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Addeq, M6Vector)
#endif
// mult
template <typename V>
static void mult_BigVec(const V &a, const V &b) { // function
V c = a * b;
}
template <typename V>
static void BM_BigVec_Mult(benchmark::State &state) { // benchmark
auto p = state.range(0);
size_t idx = ElemParamFactory::GetNearestIndex(p);
typename V::Integer q(ElemParamFactory::DefaultSet[idx].q);
V a = makeVector<V>(p, q);
V b = makeVector<V>(p, q);
while (state.KeepRunning()) {
mult_BigVec<V>(a, b);
}
}
DO_NATIVEVECTOR_BENCHMARK(BM_BigVec_Mult)
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Mult, M2Vector)
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Mult, M4Vector)
#ifdef WITH_NTL
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Mult, M6Vector)
#endif
// mult
template <typename V>
static void multeq_BigVec(V &a, const V &b) {
a *= b;
}
template <typename V>
static void BM_BigVec_Multeq(benchmark::State &state) { // benchmark
auto p = state.range(0);
size_t idx = ElemParamFactory::GetNearestIndex(p);
typename V::Integer q(ElemParamFactory::DefaultSet[idx].q);
V b = makeVector<V>(p, q);
V a = makeVector<V>(p, q);
while (state.KeepRunning()) {
// V a = makeVector<V>(p, q);
multeq_BigVec<V>(a, b);
}
}
DO_NATIVEVECTOR_BENCHMARK(BM_BigVec_Multeq)
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Multeq, M2Vector)
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Multeq, M4Vector)
#ifdef WITH_NTL
DO_VECTOR_BENCHMARK_TEMPLATE(BM_BigVec_Multeq, M6Vector)
#endif
// execute the benchmarks
BENCHMARK_MAIN();

Some files were not shown because too many files have changed in this diff Show More