From 5b05f74945802c8c7ab9676d7f07867f30f9e418 Mon Sep 17 00:00:00 2001 From: Johan Peltenburg Date: Thu, 21 Jan 2021 11:26:32 +0100 Subject: [PATCH 1/2] Migrate Arrow to 3.0.0 --- .github/workflows/assets.yml | 2 +- .github/workflows/examples.yml | 2 +- .github/workflows/test.yml | 2 +- codegen/cpp/fletchgen/CMakeLists.txt | 2 +- .../test/fletchgen/srec/test_srec.cc | 35 +++++++----- codegen/python/setup.py | 4 +- common/cpp/CMakeLists.txt | 2 +- common/cpp/src/fletcher/arrow-utils.cc | 54 ++++++++++++------- runtime/cpp/CMakeLists.txt | 2 +- 9 files changed, 67 insertions(+), 38 deletions(-) diff --git a/.github/workflows/assets.yml b/.github/workflows/assets.yml index db82d3341..9d30656f0 100644 --- a/.github/workflows/assets.yml +++ b/.github/workflows/assets.yml @@ -8,7 +8,7 @@ on: env: CMAKE_VERSION: '3.19.2' - ARROW_VERSION: '1.0.1' + ARROW_VERSION: '3.0.0' jobs: archive: diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 58216297d..27463e2a5 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -13,7 +13,7 @@ jobs: container: quay.io/pypa/manylinux2014_x86_64:latest env: CMAKE_VERSION: '3.17.3' - ARROW_VERSION: '1.0.1' + ARROW_VERSION: '3.0.0' CPYTHON_VERSION: 'cp35-cp35m' steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bd1658bdc..85d8f9532 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,7 +7,7 @@ on: pull_request: env: - ARROW_VERSION: '1.0.1' + ARROW_VERSION: '3.0.0' jobs: cpp: diff --git a/codegen/cpp/fletchgen/CMakeLists.txt b/codegen/cpp/fletchgen/CMakeLists.txt index 1184f0457..d0704234e 100644 --- a/codegen/cpp/fletchgen/CMakeLists.txt +++ b/codegen/cpp/fletchgen/CMakeLists.txt @@ -7,7 +7,7 @@ project(fletchgen LANGUAGES CXX ) -find_package(Arrow 1.0 CONFIG REQUIRED) +find_package(Arrow 3.0.0 CONFIG REQUIRED) include(FindThreads) include(FetchContent) diff --git a/codegen/cpp/fletchgen/test/fletchgen/srec/test_srec.cc b/codegen/cpp/fletchgen/test/fletchgen/srec/test_srec.cc index e0fff411f..7e50cf524 100644 --- a/codegen/cpp/fletchgen/test/fletchgen/srec/test_srec.cc +++ b/codegen/cpp/fletchgen/test/fletchgen/srec/test_srec.cc @@ -38,16 +38,22 @@ namespace fletchgen::srec { */ TEST(SREC, ToString) { - uint8_t data0[16] = {0x28, 0x5F, 0x24, 0x5F, 0x22, 0x12, 0x22, 0x6A, 0x00, 0x04, 0x24, 0x29, 0x00, 0x08, 0x23, 0x7C}; - uint8_t data1[16] = {0x00, 0x02, 0x00, 0x08, 0x00, 0x08, 0x26, 0x29, 0x00, 0x18, 0x53, 0x81, 0x23, 0x41, 0x00, 0x18}; - uint8_t data2[16] = {0x41, 0xE9, 0x00, 0x08, 0x4E, 0x42, 0x23, 0x43, 0x00, 0x18, 0x23, 0x42, 0x00, 0x08, 0x24, 0xA9}; + uint8_t data0[16] = {0x28, 0x5F, 0x24, 0x5F, 0x22, 0x12, 0x22, 0x6A, + 0x00, 0x04, 0x24, 0x29, 0x00, 0x08, 0x23, 0x7C}; + uint8_t data1[16] = {0x00, 0x02, 0x00, 0x08, 0x00, 0x08, 0x26, 0x29, + 0x00, 0x18, 0x53, 0x81, 0x23, 0x41, 0x00, 0x18}; + uint8_t data2[16] = {0x41, 0xE9, 0x00, 0x08, 0x4E, 0x42, 0x23, 0x43, + 0x00, 0x18, 0x23, 0x42, 0x00, 0x08, 0x24, 0xA9}; uint8_t data3[4] = {0x00, 0x14, 0x4E, 0xD4}; // Check header record. Default header is similar to example. ASSERT_EQ(Record::Header().ToString(), "S00600004844521B"); // Check other records - ASSERT_EQ(Record::Data<16>(0x00, data0, 16).ToString(), "S1130000285F245F2212226A000424290008237C2A"); - ASSERT_EQ(Record::Data<16>(0x10, data1, 16).ToString(), "S11300100002000800082629001853812341001813"); - ASSERT_EQ(Record::Data<16>(0x20, data2, 16).ToString(), "S113002041E900084E42234300182342000824A952"); + ASSERT_EQ(Record::Data<16>(0x00, data0, 16).ToString(), + "S1130000285F245F2212226A000424290008237C2A"); + ASSERT_EQ(Record::Data<16>(0x10, data1, 16).ToString(), + "S11300100002000800082629001853812341001813"); + ASSERT_EQ(Record::Data<16>(0x20, data2, 16).ToString(), + "S113002041E900084E42234300182342000824A952"); ASSERT_EQ(Record::Data<16>(0x30, data3, 4).ToString(), "S107003000144ED492"); } @@ -64,9 +70,12 @@ TEST(SREC, FromString) { TEST(SREC, File) { // Test a round trip via a file. - uint8_t data[52] = {0x28, 0x5F, 0x24, 0x5F, 0x22, 0x12, 0x22, 0x6A, 0x00, 0x04, 0x24, 0x29, 0x00, 0x08, 0x23, 0x7C, - 0x00, 0x02, 0x00, 0x08, 0x00, 0x08, 0x26, 0x29, 0x00, 0x18, 0x53, 0x81, 0x23, 0x41, 0x00, 0x18, - 0x41, 0xE9, 0x00, 0x08, 0x4E, 0x42, 0x23, 0x43, 0x00, 0x18, 0x23, 0x42, 0x00, 0x08, 0x24, 0xA9, + uint8_t data[52] = {0x28, 0x5F, 0x24, 0x5F, 0x22, 0x12, 0x22, 0x6A, + 0x00, 0x04, 0x24, 0x29, 0x00, 0x08, 0x23, 0x7C, + 0x00, 0x02, 0x00, 0x08, 0x00, 0x08, 0x26, 0x29, + 0x00, 0x18, 0x53, 0x81, 0x23, 0x41, 0x00, 0x18, + 0x41, 0xE9, 0x00, 0x08, 0x4E, 0x42, 0x23, 0x43, + 0x00, 0x18, 0x23, 0x42, 0x00, 0x08, 0x24, 0xA9, 0x00, 0x14, 0x4E, 0xD4}; // Check header record. Default header is similar to example. auto sro = File(0, data, 52); @@ -75,7 +84,7 @@ TEST(SREC, File) { ofs.close(); auto ifs = std::ifstream("srec_file_test.srec"); auto sri = File(&ifs); - uint8_t* result; + uint8_t *result; size_t size; sri.ToBuffer(&result, &size); ASSERT_EQ(memcmp(data, result, 52), 0); @@ -86,12 +95,14 @@ TEST(SREC, RecordBatchRoundTrip) { // Get a recordbatch with some integers auto rb = fletcher::GetStringRB(); // Open an Arrow FileOutputStream - arrow::Result> result = arrow::io::FileOutputStream::Open("test.rbf"); + arrow::Result> + result = arrow::io::FileOutputStream::Open("test.rbf"); EXPECT_TRUE(result.ok()); std::shared_ptr aos = result.ValueOrDie(); // Create a RecordBatchFile writer - arrow::Result> afw = arrow::ipc::NewFileWriter(aos.get(), rb->schema()); + arrow::Result> + afw = arrow::ipc::MakeFileWriter(aos.get(), rb->schema()); EXPECT_TRUE(afw.ok()); // Write the RecordBatch to the FileOutputStream diff --git a/codegen/python/setup.py b/codegen/python/setup.py index 67d967e27..dc6987ab1 100644 --- a/codegen/python/setup.py +++ b/codegen/python/setup.py @@ -127,12 +127,12 @@ def initialize_options(self): install_requires=[ 'numpy >= 1.14', 'pandas', - 'pyarrow == 1.0.1', + 'pyarrow == 3.0.0', ], setup_requires=[ 'cython', 'numpy', - 'pyarrow == 1.0.1', + 'pyarrow == 3.0.0', 'plumbum' ], classifiers=[ diff --git a/common/cpp/CMakeLists.txt b/common/cpp/CMakeLists.txt index 5e335a7c6..07b16961d 100644 --- a/common/cpp/CMakeLists.txt +++ b/common/cpp/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR) project(fletcher_common VERSION 0.0.0 LANGUAGES CXX) -find_package(Arrow 1.0 CONFIG REQUIRED) +find_package(Arrow 3.0.0 CONFIG REQUIRED) include(FetchContent) diff --git a/common/cpp/src/fletcher/arrow-utils.cc b/common/cpp/src/fletcher/arrow-utils.cc index bee07c283..0ce26007f 100644 --- a/common/cpp/src/fletcher/arrow-utils.cc +++ b/common/cpp/src/fletcher/arrow-utils.cc @@ -117,8 +117,9 @@ std::shared_ptr WithMetaBusSpec(const arrow::Schema &schema, int bm) { std::stringstream ss; ss << aw << "," << aw << "," << dw << "," << sw << "," << lw << "," << bs << "," << bm; - auto meta = std::make_shared(std::vector({meta::BUS_SPEC}), - std::vector({ss.str()})); + auto meta = + std::make_shared(std::vector({meta::BUS_SPEC}), + std::vector({ss.str()})); return schema.WithMetadata(meta); } @@ -143,22 +144,28 @@ std::shared_ptr WithMetaProfile(const arrow::Field &field) { return field.WithMetadata(meta); } -bool ReadSchemaFromFile(const std::string &file_name, std::shared_ptr *out) { +bool ReadSchemaFromFile(const std::string &file_name, + std::shared_ptr *out) { std::shared_ptr schema; - arrow::Result> result = arrow::io::ReadableFile::Open(file_name); + arrow::Result> + result = arrow::io::ReadableFile::Open(file_name); if (!result.ok()) { - FLETCHER_LOG(ERROR, "Could not open file for reading: " + file_name + " ARROW:[" + result.status().ToString() + "]"); + FLETCHER_LOG(ERROR, + "Could not open file for reading: " + file_name + " ARROW:[" + + result.status().ToString() + "]"); return false; } std::shared_ptr fis = result.ValueOrDie(); // Dictionaries are not supported yet, hence nullptr. arrow::Result> schema_result; - schema_result = arrow::ipc::ReadSchema(fis.get(), nullptr); + schema_result = arrow::ipc::ReadSchema(fis.get(), nullptr); if (schema_result.ok()) { *out = schema_result.ValueOrDie(); } else { - FLETCHER_LOG(ERROR, "Could not read schema from file file: " + file_name + " ARROW:[" + schema_result.status().ToString() + "]"); + FLETCHER_LOG(ERROR, + "Could not read schema from file file: " + file_name + " ARROW:[" + + schema_result.status().ToString() + "]"); return false; } auto status = fis->Close(); @@ -169,22 +176,23 @@ bool ReadSchemaFromFile(const std::string &file_name, std::shared_ptr resizable_buffer; arrow::Result> resbuffer_result; - resbuffer_result = arrow::AllocateResizableBuffer(0); + resbuffer_result = arrow::AllocateResizableBuffer(0); if (resbuffer_result.ok()) { - resizable_buffer = resbuffer_result.ValueOrDie(); + resizable_buffer = resbuffer_result.ValueOrDie(); } else { throw std::runtime_error("Could not allocate resizable Arrow buffer."); } auto buffer = std::dynamic_pointer_cast(resizable_buffer); // Dictionaries are not supported yet, hence nullptr. arrow::Result> ser_result; - ser_result = arrow::ipc::SerializeSchema(schema, nullptr, arrow::default_memory_pool()); + ser_result = arrow::ipc::SerializeSchema(schema, arrow::default_memory_pool()); if (ser_result.ok()) { buffer = ser_result.ValueOrDie(); } else { throw std::runtime_error("Could not serialize schema into buffer."); } - arrow::Result> filestream_result = arrow::io::FileOutputStream::Open(file_name); + arrow::Result> + filestream_result = arrow::io::FileOutputStream::Open(file_name); if (filestream_result.ok()) { std::shared_ptr fos = filestream_result.ValueOrDie(); if (!fos->Write(buffer->data(), buffer->size()).ok()) { @@ -197,10 +205,12 @@ void WriteSchemaToFile(const std::string &file_name, const arrow::Schema &schema void WriteRecordBatchesToFile(const std::string &filename, const std::vector> &recordbatches) { - std::shared_ptr file = arrow::io::FileOutputStream::Open(filename).ValueOrDie(); + std::shared_ptr + file = arrow::io::FileOutputStream::Open(filename).ValueOrDie(); arrow::Status status; for (const auto &rb : recordbatches) { - std::shared_ptr writer = arrow::ipc::NewFileWriter(file.get(), rb->schema()).ValueOrDie(); + std::shared_ptr + writer = arrow::ipc::MakeFileWriter(file.get(), rb->schema()).ValueOrDie(); status = writer->WriteRecordBatch(*rb); if (!status.ok()) { throw std::runtime_error("Error writing recordbatches to file " + filename); @@ -210,12 +220,16 @@ void WriteRecordBatchesToFile(const std::string &filename, status = file->Close(); } -bool ReadRecordBatchesFromFile(const std::string &file_name, std::vector> *out) { +bool ReadRecordBatchesFromFile(const std::string &file_name, + std::vector> *out) { std::shared_ptr reader; - arrow::Result> result = arrow::io::ReadableFile::Open(file_name); + arrow::Result> + result = arrow::io::ReadableFile::Open(file_name); if (!result.ok()) { - FLETCHER_LOG(ERROR, "Could not open file for reading: " + file_name + " ARROW:[" + result.status().ToString() + "]"); + FLETCHER_LOG(ERROR, + "Could not open file for reading: " + file_name + " ARROW:[" + + result.status().ToString() + "]"); return false; } std::shared_ptr file = result.ValueOrDie(); @@ -225,7 +239,9 @@ bool ReadRecordBatchesFromFile(const std::string &file_name, std::vectorpush_back(recordbatch); diff --git a/runtime/cpp/CMakeLists.txt b/runtime/cpp/CMakeLists.txt index 41977c9c3..67429c4f0 100644 --- a/runtime/cpp/CMakeLists.txt +++ b/runtime/cpp/CMakeLists.txt @@ -7,7 +7,7 @@ project(fletcher LANGUAGES CXX ) -find_package(Arrow 1.0.1 CONFIG REQUIRED) +find_package(Arrow 3.0.0 CONFIG REQUIRED) include(FetchContent) From 1f2284b632193cc0fe9b3f11150c22149352dcd0 Mon Sep 17 00:00:00 2001 From: Matthijs Brobbel Date: Tue, 2 Feb 2021 14:55:04 +0100 Subject: [PATCH 2/2] Bump Arrow to 3.0.0 --- .github/workflows/assets.yml | 1 + .github/workflows/documentation.yml | 2 +- .github/workflows/examples.yml | 4 +-- .github/workflows/test.yml | 15 ++++++---- README.md | 12 ++++---- codegen/cpp/fletchgen/CMakeLists.txt | 2 +- codegen/cpp/fletchgen/README.md | 30 +++++++++++-------- .../stringwrite/software/cpp/CMakeLists.txt | 2 +- examples/sum/README.md | 2 +- examples/sum/software/cpp/CMakeLists.txt | 2 +- runtime/cpp/CMakeLists.txt | 4 +-- runtime/cpp/README.md | 9 ++++-- runtime/python/setup.py | 4 +-- 13 files changed, 52 insertions(+), 37 deletions(-) diff --git a/.github/workflows/assets.yml b/.github/workflows/assets.yml index 9d30656f0..eef1e8fcf 100644 --- a/.github/workflows/assets.yml +++ b/.github/workflows/assets.yml @@ -172,6 +172,7 @@ jobs: - 'cp36-cp36m' - 'cp37-cp37m' - 'cp38-cp38' + - 'cp39-cp39' steps: - uses: actions/checkout@v2 with: diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index b80416e44..4e438f882 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -18,7 +18,7 @@ jobs: name: Book runs-on: ubuntu-latest env: - MDBOOK_VERSION: '0.4.1' + MDBOOK_VERSION: '0.4.6' steps: - uses: actions/checkout@v2 - name: Install mdbook diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index 27463e2a5..e9135683a 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -14,7 +14,7 @@ jobs: env: CMAKE_VERSION: '3.17.3' ARROW_VERSION: '3.0.0' - CPYTHON_VERSION: 'cp35-cp35m' + CPYTHON_VERSION: 'cp36-cp36m' steps: - uses: actions/checkout@v2 - name: Install Apache Arrow @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-latest needs: prepare env: - PYTHON_VERSION: '3.5.x' + PYTHON_VERSION: '3.6.x' strategy: fail-fast: false matrix: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 85d8f9532..77fd58703 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -60,16 +60,21 @@ jobs: sudo apt-get install -y ./apache-arrow-archive-keyring-latest-$(lsb_release --codename --short).deb sudo apt-get update sudo apt-get install -y libarrow-dev=$ARROW_VERSION-1 libarrow-python-dev=$ARROW_VERSION-1 + - uses: actions/setup-python@v2 + with: + python-version: '3.x' - name: Install pyarrow - run: pip3 install pyarrow==$ARROW_VERSION setuptools wheel + run: | + python -m pip install --upgrade pip setuptools wheel + python -m pip install pyarrow==$ARROW_VERSION - name: Build and install working-directory: ${{ matrix.source }} run: | - python3 setup.py build - python3 setup.py bdist_wheel - pip3 install build/dist/*.whl + python setup.py build + python setup.py bdist_wheel + python -m pip install build/dist/*.whl - name: Import - run: python3 -c "import ${{ matrix.package }}" + run: python -c "import ${{ matrix.package }}" vhdl: name: VHDL diff --git a/README.md b/README.md index 5fe44299b..a16d9c324 100644 --- a/README.md +++ b/README.md @@ -50,8 +50,7 @@ generates the following: - Structs - Validity bitmaps -- Once the Arrow reference implementation and format specific reaches ensured - stability (i.e. version 1.0), we would like to support: +- In the future we would like to support: - Sparse and dense unions - Dictionaries - Chunked tabular structures (`Arrow::Table`) @@ -128,15 +127,18 @@ External projects using Fletcher: - [Posit PairHMM](https://github.com/lvandam/pairhmm_posit_hdl_arrow) ## Publications + If you used or studied Fletcher, please cite: + - J. Peltenburg, J. van Straten, L. Wijtemans, L. van Leeuwen, Z. Al-Ars, and H.P. Hofstee, Fletcher: A Framework to Efficiently Integrate FPGA Accelerators - with Apache Arrow*, in 29th International Conference on Field Programmable + with Apache Arrow\*, in 29th International Conference on Field Programmable Logic and Applications (FPL) (2019) pp. 270–277. Additional publications: + - J. Peltenburg, J. van Straten, M. Brobbel, H.P. Hofstee, and Z. Al-Ars, Supporting Columnar In-memory Formats on FPGA: The Hardware Design of Fletcher - for Apache Arrow*, in Applied Reconfigurable Computing, edited by - C. Hochberger, B. Nelson, A. Koch, R. Woods, and P. Diniz (Springer + for Apache Arrow\*, in Applied Reconfigurable Computing, edited by + C. Hochberger, B. Nelson, A. Koch, R. Woods, and P. Diniz (Springer International Publishing, Cham, 2019) pp. 32–47 diff --git a/codegen/cpp/fletchgen/CMakeLists.txt b/codegen/cpp/fletchgen/CMakeLists.txt index d0704234e..eef790e0a 100644 --- a/codegen/cpp/fletchgen/CMakeLists.txt +++ b/codegen/cpp/fletchgen/CMakeLists.txt @@ -197,7 +197,7 @@ set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") set(CPACK_RPM_FILE_NAME "RPM-DEFAULT") set(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION}") set(CPACK_RPM_PACKAGE_LICENSE "ASL 2.0") -set(CPACK_RPM_PACKAGE_REQUIRES "arrow-libs >= 1.0.1, arrow-libs < 2.0.0") +set(CPACK_RPM_PACKAGE_REQUIRES "arrow-libs >= 3.0.0, arrow-libs < 4.0.0") set(CPACK_ARCHIVE_BINARY_FILE_NAME "${CMAKE_PROJECT_NAME}-${fletchgen_VERSION}-${CMAKE_SYSTEM_NAME}") diff --git a/codegen/cpp/fletchgen/README.md b/codegen/cpp/fletchgen/README.md index fc8b597f7..44adba7de 100644 --- a/codegen/cpp/fletchgen/README.md +++ b/codegen/cpp/fletchgen/README.md @@ -37,7 +37,7 @@ It currently supports only two top-level platforms. # Prerequisites - [C++17 compliant compiler](https://clang.llvm.org/) -- [Apache Arrow 1.0+](https://github.com/apache/arrow) +- [Apache Arrow 3.0+](https://github.com/apache/arrow) - [CMake 3.14+](https://cmake.org/) # Build & install @@ -95,6 +95,7 @@ your kernel implementation. | fletcher_tag_width | 1 / 2 / 3 / ... | 1 | Width of the `tag` field of commands and unlock streams of RecordBatchReaders/Writers. Can be used to identify commands. | # Custom MMIO registers + You can add custom MMIO registers to your kernel using `--reg`. More information [can be found here](../../../docs/mmio.md). @@ -114,32 +115,35 @@ bit. - record: name: platform fields: - - record: - name: complete - fields: - - field: - name: req - width: 1 - - field: - name: ack - width: 1 - reverse: true + - record: + name: complete + fields: + - field: + name: req + width: 1 + - field: + name: ack + width: 1 + reverse: true ``` This will result in the following signals appearing at the top-level: + ```vhdl ext_platform_complete_req : out std_logic; ext_platform_complete_ack : in std_logic ``` -* The signals are assumed to be driven by the kernel. To drive them from the top +- The signals are assumed to be driven by the kernel. To drive them from the top level, use: + ```yaml reverse: true ``` -* Fields with a width of 1 can be forced to be `std_logic_vector` instead of +- Fields with a width of 1 can be forced to be `std_logic_vector` instead of `std_logic` by using: + ```yaml vector: true ``` diff --git a/examples/stringwrite/software/cpp/CMakeLists.txt b/examples/stringwrite/software/cpp/CMakeLists.txt index 60c141f2a..ae8e28bea 100644 --- a/examples/stringwrite/software/cpp/CMakeLists.txt +++ b/examples/stringwrite/software/cpp/CMakeLists.txt @@ -10,7 +10,7 @@ include(CompileUnits) project(stringwrite VERSION 0.0.0 LANGUAGES CXX) -find_package(Arrow 1.0 CONFIG REQUIRED) +find_package(Arrow 3.0 CONFIG REQUIRED) find_package(fletcher CONFIG) if (NOT fletcher) diff --git a/examples/sum/README.md b/examples/sum/README.md index 1a94d65e8..f00d4e3b7 100644 --- a/examples/sum/README.md +++ b/examples/sum/README.md @@ -11,7 +11,7 @@ open-source tools. The examples in this part of the tutorial are written in Python, so you'll need - Install [Python 3.6+](https://www.python.org/). -- Install [PyArrow 1.0+](https://arrow.apache.org/docs/python/). +- Install [PyArrow 3.0+](https://arrow.apache.org/docs/python/). Furthermore you'll need to build and install Fletchgen - the Fletcher design generator tool. diff --git a/examples/sum/software/cpp/CMakeLists.txt b/examples/sum/software/cpp/CMakeLists.txt index 070fb5aa1..9de5c2354 100644 --- a/examples/sum/software/cpp/CMakeLists.txt +++ b/examples/sum/software/cpp/CMakeLists.txt @@ -11,7 +11,7 @@ include(CompileUnits) project(sum VERSION 0.0.0 LANGUAGES CXX) -find_package(Arrow 1.0 CONFIG REQUIRED) +find_package(Arrow 3.0 CONFIG REQUIRED) find_package(fletcher CONFIG) if (NOT fletcher) diff --git a/runtime/cpp/CMakeLists.txt b/runtime/cpp/CMakeLists.txt index 67429c4f0..37221faa5 100644 --- a/runtime/cpp/CMakeLists.txt +++ b/runtime/cpp/CMakeLists.txt @@ -102,14 +102,14 @@ set(CPACK_PACKAGE_VERSION_PATCH "${fletcher_VERSION_PATCH}") set(CPACK_PACKAGE_RELOCATABLE ON) set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT") -set(CPACK_DEBIAN_PACKAGE_DEPENDS "libarrow-dev (>= 1.0.1), libarrow-dev (<< 2.0.0)") +set(CPACK_DEBIAN_PACKAGE_DEPENDS "libarrow-dev (>= 3.0.0), libarrow-dev (<< 4.0.0)") set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") set(CPACK_RPM_FILE_NAME "RPM-DEFAULT") set(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION}") set(CPACK_RPM_PACKAGE_LICENSE "ASL 2.0") # fletcher-devel -set(CPACK_RPM_PACKAGE_REQUIRES "arrow-devel >= 1.0.1, arrow-devel < 2.0.0") +set(CPACK_RPM_PACKAGE_REQUIRES "arrow-devel >= 3.0.0, arrow-devel < 4.0.0") set(CPACK_ARCHIVE_LIBRARY_FILE_NAME "${CMAKE_PROJECT_NAME}-${fletcher_VERSION}-${CMAKE_SYSTEM_NAME}") diff --git a/runtime/cpp/README.md b/runtime/cpp/README.md index 34799c5c7..4a16d64b6 100644 --- a/runtime/cpp/README.md +++ b/runtime/cpp/README.md @@ -6,8 +6,9 @@ applications. # Build & install ## Requirements -- [Apache Arrow 1.0+ C++ run-time and development headers.](https://arrow.apache.org/install) -- A C++17 compliant compiler + +- [Apache Arrow 3.0+ C++ run-time and development headers.](https://arrow.apache.org/install) +- A C++17 compliant compiler - CMake 3.14 ## Build @@ -22,11 +23,13 @@ sudo make install ## Example usage Include: + ```c++ #include ``` Example snippet: + ```c++ using fletcher::Platform; using fletcher::Context; @@ -54,4 +57,4 @@ kernel.GetReturn(&result); // Obtain the result. # Documentation -[C++ API Documentation](https://abs-tudelft.github.io/fletcher/api/fletcher-cpp/) \ No newline at end of file +[C++ API Documentation](https://abs-tudelft.github.io/fletcher/api/fletcher-cpp/) diff --git a/runtime/python/setup.py b/runtime/python/setup.py index 997ec41c6..defc8a0c7 100755 --- a/runtime/python/setup.py +++ b/runtime/python/setup.py @@ -132,12 +132,12 @@ def initialize_options(self): install_requires=[ 'numpy >= 1.14', 'pandas', - 'pyarrow == 1.0.1', + 'pyarrow == 3.0.0', ], setup_requires=[ 'cython', 'numpy', - 'pyarrow == 1.0.1', + 'pyarrow == 3.0.0', 'plumbum', 'pytest-runner' ],