profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/rahulyesantharao/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Rahul Yesantharao rahulyesantharao MIT Cambridge, MA https://rahulyesantharao.com/ EECS @ MIT 💡

rahulyesantharao/b-epsilon-tree 6

A simple implementation of the write-optimized Bε Tree 🌳 - for MIT 6.854 (Advanced Algorithms).

rahulyesantharao/FindR 4

The FindR 🔎 Chrome ⚡️ Extension ⌨️

rahulyesantharao/ryunzip 3

An implementation of a DEFLATE-compliant decompressor (RFCs 1951, 1952)

rahulyesantharao/polymap 2

Android app for location-based image search

rahulyesantharao/drake-new-code 1

Python code written for the new Drake distro

rahulyesantharao/FPGA 1

6.111 Final Project: Freeform Production of Gorgeous Audio

rahulyesantharao/personal-website-m2 1

Personal Website, mark 2

gzhang1218/recyclo 0

Recyclo is a website/game combo that educates people on proper methods of recycling. The website provides information, while the game tests your knowledge of recycling.

PublicEvent

PR opened tuplex/tuplex

[Research] Logical Plan Serialization
+14017 -1457

0 comment

106 changed files

pr created time in 11 hours

push eventrahulyesantharao/tuplex

Ben Givertz

commit sha e1b008c1bc770251065d33fadb0400e310eb7c4c

[FEATURE] File input and output operators for ORC (#24) Add preliminary support for ORC file format with both input and output support. Details: - refactor FileInputOperator - add ORC input support - add ORC output support - add #ifndef to comment checks leading to slowdown when deserializing rows in Release mode. authored by: Benjamin Givertz (benjamin_givertz@brown.edu)

view details

Leonhard Spiegelberg

commit sha 8233190120e42067859ca5e86896cf238ebccffe

[DOC] Updating doc to include protobuf as dependency (#28) Details: - updated required packages for MacOS - Fix for CMake when under MacOS snappy lib is installed with brew - Fix for Google Colab authored by: Leonhard Spiegelberg (lspiegel@cs.brown.edu)

view details

Leonhard Spiegelberg

commit sha 68b8e4af097e4dcd8cfd5edebdc07371e08ff1fd

[FIX] Disable AWS Tests per default and make ORC optional (#32) Details: - Add flag to disable aws tests, disabled per default - Add ORC option which is disabled by default until ORC tests are figured out authored-by: Leonhard Spiegelberg <lspiegel@cs.brown.edu>

view details

Leonhard Spiegelberg

commit sha 03733a57ccb5a3770eecaf1c3adcfb520ed82138

[FIX] Support for Google Colab (#31) Fix compile settings to produce more compatible wheel. Details: - fix top-level README.md, should still address some more issues from https://github.com/tuplex/tuplex/issues/30 - disable march=native per default - change interactive shell to only be imported when correct toolkit is present authored-by: Leonhard Spiegelberg <lspiegel@cs.brown.edu>

view details

push time in 12 hours

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha 7e8bf5214a16dea9ef6253a9e0d01b907358be46

builds!

view details

push time in 18 hours

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha 96b2ef14b7534b4446b764535ad6bffd0823575b

fix

view details

push time in 2 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha 3ed3b4ea8d4f33f48e9b1091e551a43788bfe5f0

wip: fix builld errors

view details

push time in 2 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha cb0754fa4ebbf5f94e3bcc741c4daf7e8f57adbb

wip: fix build errors

view details

push time in 2 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha d07d73a9173aa59a8d430b536d28d54f61a14738

add serialize to logical ops

view details

push time in 2 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha a5cb6d9621c75cfe243e6bc743030c8dfa948231

wip: serialization for logical plan

view details

push time in 3 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha 0fd19f7dcc7391d71e5bd3f8ac2c1eb533c27be8

begin logical dag conversion to shared_ptr

view details

push time in 3 days

MemberEvent

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha 158b53042cb3070f9c7945e5b368ee7158107acc

add experiments

view details

Rahul Yesantharao

commit sha 5d69fca397b09888830e9aa775b33303cd9ac886

update

view details

Rahul Yesantharao

commit sha c307839f2ea1b0ee8a4cd71038f367041653f5ec

add narrow datatypes

view details

rahuly

commit sha a2c858ccd99dd81daef670f4d82dad656c446628

Merge branch 'hyperspecialization' of github.com:rahulyesantharao/tuplex into hyperspecialization

view details

push time in 4 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha 37d72ca2298da199e619e0530cf5abed09161a7c

change replacevisitor structure

view details

push time in 4 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha b34cc604d0844bbfd0547b42c89f393bb022f1e2

finish ast changes?

view details

Rahul Yesantharao

commit sha a6a5e28f0c8f388e0fc4f47ab07faf7faf35bbda

Revert "wip: serialize logical op graph - needs correction" This reverts commit 2e706563ba89979e6b6a9393f678682b09f70f58.

view details

Rahul Yesantharao

commit sha d351a00284d386c40d1350f1914866b53910605a

make ast changes compile!

view details

push time in 5 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha 266d7b157a4bc62529897c6a8ea9160da410678f

more wip ast

view details

push time in 7 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha c0fb2f5342c5b50ae180cd4d7160f2e17f0f2692

wip: convert many replace visitors

view details

push time in 7 days

push eventrahulyesantharao/tuplex

Zain Ruan

commit sha 44481c4cfce3ca249f8c6a1d8e1998822a20558d

Build protobuf-cpp in the ubuntu2004 script (#21)

view details

Zain Ruan

commit sha 8c26f546d6f3c3c09c245a9f96764de9213b8301

Initialize submodules in install_reqs.sh (#20)

view details

Malte Schwarzkopf

commit sha d048feaa304307b01db7cffb13380537dc6e91fd

[BUILD] Reduce compiler warnings (#22) Reduce compiler warnings and replace temporary file creation. Details: - Replace std::tmpnam use with mkstemp because, tmpnam(3) is deprecated and triggers compiler warnings. - Add option to suppress #warning output - The #warning directives create a lot of output spam that makes it hard to see "real" warnings. - Adds a new option (SHOW_EXPLICIT_WARNINGS) to enable them (default off), otherwise suppresses them via -Wno-cpp. authored by: Malte Schwarzkopf <malte@cs.brown.edu>

view details

Malte Schwarzkopf

commit sha be085b38ae0ba11cb0487e2da41994511979030e

[BUILD] Force use of GCC 10 on Ubuntu 20.04 (#23) Shipped GCC 9.3 leads to build errors, therefore force use of GCC 10 on Ubuntu 20.04. authored by: Malte Schwarzkopf (malte@cs.brown.edu)

view details

Yunzhi Shao

commit sha b0a7d358e25157e0b479943cdd7bbf7480c7d879

[FEATURE] Add preliminary support for iterators and built-in iterator functions (#25) Add support for builtin iterator functions `iter, zip, enumerate, next, reversed`. Fix bug when calling `len` on an empty list `[]`. Add support for multiple identifiers in loop, e.g. `for a, b in (t1, t2), (t3, t4)` Details: - Add iterator type and related functions for typing - Add symbol for iterator-related functions (iter, zip, enumerate, next, reversed) - Add iterator-specific annotation - Add iterator-related helping functions in LLVMEnvironment - Fix getListType for list of tuples - Refactor code refactoring for error handling for unsupported types - Refactor code for error handling for unsupported types - Add iterator core class - Add functions for creating iterator-related calls in FunctionRegistry - Fix the case when expression (also called testlist) in for loop contains multiple elements, i.e. "for a, b in (t1, t2), (t3, t4)" should work now - Update BlockGeneratorVisitor 1. Update visit NCall, declareVariables, assignToSingleVariable to make iterator related calls work 2. Fix codegen for list of tuples 3. Add support for for loops with iterator as expression - Use fallback mode for mixed AST node types in for loop exprlist for now - Add tests about iterators - Fix len() call on EMPTYLIST - Fix bug in UnrollLoopsVisitor. Add tests authored by: Yunzhi Shao (yunzhi_shao@brown.edu)

view details

Rahul Yesantharao

commit sha 197a37e1ab4feb97f97109bcda10449d27f32f2d

add experiments

view details

Rahul Yesantharao

commit sha 59ecfff9f5a8781737a01745796467ea22561cea

update

view details

Rahul Yesantharao

commit sha ee6fd84a03eb3a33d39f67787424ce24ffa605b8

add narrow datatypes

view details

Rahul Yesantharao

commit sha c4c9eaa27b7e7e7b9bf8d0831abb3cd7b2f247c2

wip ast serialization

view details

Rahul Yesantharao

commit sha 2e706563ba89979e6b6a9393f678682b09f70f58

wip: serialize logical op graph - needs correction

view details

Rahul Yesantharao

commit sha b5a71b764e849d4debb7b5c64612c1d544ced5e1

wip serialize AST

view details

push time in 7 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha 663ea629f0d845a1caccdc0644166fd4262837bf

wip serialize AST

view details

push time in 7 days

PR opened cmuparlay/parlaylib

Bug Fix: minmaxm() constructor

The constructor creates a pair of the highest and lowest values of type T, but it should be TT.

+1 -1

0 comment

1 changed file

pr created time in 9 days

push eventrahulyesantharao/parlaylib

Rahul Yesantharao

commit sha 1f6da3b0d16534d40162e593a00454619c8f49f2

change minmax constructor

view details

push time in 9 days

fork rahulyesantharao/parlaylib

ParlayLib - A Toolkit for Programming Parallel Algorithms on Shared-Memory Multicore Machines

fork in 9 days

push eventrahulyesantharao/tuplex

Rahul Yesantharao

commit sha 7dd1c8e95e6e0fedbeb91269e15e51729d1d97fe

some pr comments

view details

push time in 10 days

Pull request review commenttuplex/tuplex

Lambda Runtime Benchmarks

+Look at diff between this folder and `cpp_runtime` to make sure nothing major got changed - should be pretty similar files.

oh this was just a note i left to myself that the c++ code in these two folders should be pretty similar. Should I remove it?

rahulyesantharao

comment created time in 10 days

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commenttuplex/tuplex

Lambda Runtime Benchmarks

+# Create CMake project+cmake_minimum_required(VERSION 3.9)+set(CMAKE_CXX_STANDARD 14)+set(CMAKE_CXX_STANDARD_REQUIRED ON)++#project(test-python LANGUAGES CXX)+set(LAMBDA_NAME ctypes-tuplex)++# create so+add_library(${LAMBDA_NAME} SHARED "main.cpp" "lambda_main.cc" "sighandler.cc")+target_link_libraries(${LAMBDA_NAME} PRIVATE ${AWSSDK_LINK_LIBRARIES})++# Link Python libraries + interpreter+##set(PYTHON_RESOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../python_resources)

fixed

rahulyesantharao

comment created time in 10 days

Pull request review commenttuplex/tuplex

Lambda Runtime Benchmarks

+# Create CMake project+cmake_minimum_required(VERSION 3.9)

fixed

rahulyesantharao

comment created time in 10 days

PullRequestReviewEvent

Pull request review commenttuplex/tuplex

Lambda Runtime Benchmarks

+// reference: https://aws.amazon.com/blogs/compute/introducing-the-c-lambda-runtime/+// https://gist.github.com/huihut/b4597d097123a8c8388c71b3f0ff21e5+#include <aws/core/Aws.h>+#include <aws/core/utils/logging/LogLevel.h>+#include <aws/core/utils/logging/ConsoleLogSystem.h>+#include <aws/core/utils/logging/LogMacros.h>+#include <aws/core/utils/json/JsonSerializer.h>+#include <aws/core/utils/HashingUtils.h>+#include <aws/core/platform/Environment.h>+#include <aws/core/client/ClientConfiguration.h>+#include <aws/core/auth/AWSCredentialsProvider.h>++#include <aws/lambda-runtime/runtime.h>++#include "main.h"+#include "sighandler.h"++#include <iostream>+#include <sstream>+#include <cstdlib>++#include <Python.h>+#include <JITCompiler.h>+#include <Utils.h>+#include <Timer.h>+#include <VirtualFileSystem.h>+#include <RuntimeInterface.h>++#include <google/protobuf/util/json_util.h>++using namespace aws::lambda_runtime;++// EXPERIMENT CODE ------------------------+static uint64_t timestamp() {+    return std::chrono::duration_cast<std::chrono::nanoseconds>(+            std::chrono::system_clock::now().time_since_epoch())+            .count();+}++std::string res;+struct Timestamps {+    uint64_t MAIN_TS;+    uint64_t READY_TS;+    uint64_t PYTHON_READY_TS;+    uint64_t FUNCTION_TS;+    bool reused;++    void setString(double func_res) {+        std::stringstream ss;+        ss << "{"+           << "\"func_res\":" << func_res+           << ", \"reused\":" << reused+           << ", \"body\": {"+             << "\"MAIN_TS\":" << MAIN_TS+             << ", \"READY_TS\":" << READY_TS+             << ", \"PYTHON_READY_TS\":" << PYTHON_READY_TS+             << ", \"FUNCTION_TS\":" << FUNCTION_TS+           << "}}";+        reused = true; // next time, it will be true++        res = ss.str();+    }++    Timestamps() : MAIN_TS(0), READY_TS(0), PYTHON_READY_TS(0), FUNCTION_TS(0), reused(false) {}+};++Timestamps timings;++static std::string decodeFunction(const std::string &func_str, int &r) {+    // do some stupid stuff to get around not having protobuf+    auto b64Module = PyImport_ImportModule("base64");+    if(!b64Module) {+        PyErr_Print();+        r = -1;+        return "Couldn't open module base64";+    }+    auto b64decode = PyObject_GetAttrString(b64Module, "b64decode");+    if (!b64decode) {+        PyErr_Print();+        r = -1;+        return "Couldn't get function base64.b64decode";+    }+    auto py_pickled_func_bytes = PyObject_CallFunctionObjArgs(b64decode, PyUnicode_FromString(func_str.c_str()), nullptr);+    if(!py_pickled_func_bytes) {+        PyErr_Print();+        r = -1;+        return "base64.b64decode failed!";+    }+//    std::cout << "pickled func addr: "<< (void*)py_pickled_func_bytes << std::endl;+    char *mem = PyBytes_AsString(py_pickled_func_bytes);+    if(!mem) {+        PyErr_Print();+        r = -1;+        return "decoded function wasn't bytes?";+    }+    size_t mem_size = PyBytes_Size(py_pickled_func_bytes);+    std::string res;+    res.reserve(mem_size);+    res.assign(mem, mem_size);+    return res;+}++const char* handler_worker(const char *payload, int &r) {+    using namespace Aws::Utils::Json;+    timings.READY_TS = timestamp();+    r = 0; // no error++    // extract + set python home+    auto task_root = std::getenv("LAMBDA_TASK_ROOT");+    // convert to wchar+    std::vector<wchar_t> vec;+    auto len = strlen(task_root);+    vec.resize(len + 1);+    mbstowcs(&vec[0], task_root, len);+    Py_SetPythonHome(&vec[0]);++    // initialize interpreter+    // Py_Initialize();+    if (!Py_IsInitialized()) {+        PyErr_Print();+        r = -1;+        return "Couldn't initialize interpreter!";+    }+    timings.PYTHON_READY_TS = timestamp();++    // grab the payload+    JsonValue json(payload);+    auto v = json.View();+    auto func_str = v.GetString("function");+    auto pickled_func_str = decodeFunction(func_str, r);+    if (r == -1) {+        res = pickled_func_str;+        return res.c_str();+    }++    /*auto py_func_str = PyUnicode_FromString(func_str.c_str());++    // pass to lambda_handler+    auto sys_path = PySys_GetObject("path");+    PyList_Append(sys_path, PyUnicode_FromString(task_root));+    auto lambda_module = PyImport_ImportModule("lambda_function");+    if (!lambda_module) {+        PyErr_Print();+        return invocation_response::success("Couldn't open module lambda_function", "text/plain");+    }+    auto lambda_handler = PyObject_GetAttrString(lambda_module, "lambda_handler");+    if (!lambda_handler) {+        PyErr_Print();+        return invocation_response::success("Couldn't get function lambda_handler", "text/plain");+    }++    // call the handler+    auto py_func_res = PyObject_CallFunctionObjArgs(lambda_handler, py_func_str);++    // save function results+    auto func_res = PyLong_AsLong(py_func_res);+    timings.FUNCTION_TS = timestamp();++    // shut down the interpreter+    //Py_Finalize();+     */++    // use tuplex instead of native Python functions+    auto py_module = python::getMainModule();+    auto py_func = python::deserializePickledFunction(py_module, pickled_func_str.c_str(),+                                                      pickled_func_str.length());+    tuplex::ExceptionCode ec;+    auto py_func_res = python::callFunction(py_func, PyTuple_New(0), ec);+    auto func_res = PyFloat_AsDouble(py_func_res);+    timings.FUNCTION_TS = timestamp();++    timings.setString(func_res);+    return res.c_str();+}++static invocation_response my_handler(invocation_request const &req) {+    try {+        int r;+        handler_worker(req.payload.c_str(), r);++        if(r == -1) {+            return invocation_response::success(res, "plain/text");+        } else {+            return invocation_response::success(res, "application/json");+        }+    } catch(const std::exception& e) {+        return invocation_response::success(std::string("exception! ") + e.what(), "plain/text");+    } catch(...) {+        return invocation_response::success(std::string("unhandled exception!"), "plain/text");+    }+}+// --- BASICALLY THE SAME AS awslambda/ -------------------------------------------+int main() {+    timings.MAIN_TS = timestamp();

I don't think so, yeah we should probably do that

rahulyesantharao

comment created time in 10 days

PullRequestReviewEvent