A Haskell kernel for IPython.

Overview

jupyter IHaskell Build Status Binder

IHaskell

You can now try IHaskell directly in your browser at CoCalc or mybinder.org.

Alternatively, watch a talk and demo showing off IHaskell features.

IHaskell is a kernel for the Jupyter project, which allows you to use Haskell inside Jupyter frontends (including the console and notebook). It currently supports GHC 8.0 through 9.0. For GHC 7.10 support please use the GHC7 tag.

For a tour of some IHaskell features, check out the demo Notebook. More example notebooks are available on the wiki. The wiki also has more extensive documentation of IHaskell features.

IPython Console IPython Notebook

Interactive In-Browser Notebook

Installation

Linux

Some prerequisites; adapt to your distribution.

sudo apt-get install -y python3-pip git libtinfo-dev libzmq3-dev libcairo2-dev libpango1.0-dev libmagic-dev libblas-dev liblapack-dev

Install stack, clone this repository, install Python requirements, install ihaskell, and install the Jupyter kernelspec with ihaskell.

These instructions assume you don't already have Stack or a Jupyter installation, please skip the relevant steps if this is not the case.

curl -sSL https://get.haskellstack.org/ | sh
git clone https://github.com/gibiansky/IHaskell
cd IHaskell
pip3 install -r requirements.txt
# stack install gtk2hs-buildtools # Disabled for now because gtk2hs-buildtools doesn't work with lts-13 yet
stack install --fast
ihaskell install --stack

Run Jupyter.

stack exec jupyter -- notebook

Mac

You need to have Homebrew installed. If you do not have it yet run /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" in your terminal.

You also need the Xcode command line tools. You can install them by running xcode-select --install in the terminal and following the prompts.

These instructions assume you don't already have Stack or a Jupyter installation, please skip the relevant steps if this is not the case.

brew install python3 zeromq libmagic cairo pkg-config haskell-stack pango
git clone https://github.com/gibiansky/IHaskell
cd IHaskell
pip3 install -r requirements.txt
# stack install gtk2hs-buildtools # Disabled for now because gtk2hs-buildtools doesn't work with lts-13 yet
stack install --fast
ihaskell install --stack

If you have Homebrew installed to a custom location, you'd need to specify --extra-include-dirs ${HOMEBREW_PREFIX}/include --extra-lib-dir ${HOMEBREW_PREFIX}/lib to the stack command.

Run Jupyter.

stack exec jupyter -- notebook

Tested on macOS Sierra (10.12.6)

Windows

IHaskell does not support Windows, however it can be used on Windows 10 via Windows Subsystem for Linux (WSL). If WSL is not installed, follow the Installation Guide for Windows 10. The following assumes that Ubuntu is picked as the Linux distribution.

In the Ubuntu app, follow the steps above for Linux.

Jupyter Notebook is now ready to use. In the Ubuntu app, launch a Notebook Server, without opening the notebook in a browser:

jupyter notebook --no-browser

Returning to Windows 10, open a browser and copy and paste the URL output in the step above (the token will differ).

Or copy and paste one of these URLs:
     http://localhost:8888/?token=9ca8a725ddb1fdded176d9e0e675ba557ebb5fbef6c65fdf

Tested on Windows 10 (build 18362.175) with Ubuntu 18.04 on WSL

Alternatively, install Virtualbox, install Ubuntu or another Linux distribution, and proceed with the install instructions.

Docker

To quickly run a Jupyter notebook with the IHaskell kernel, try the Dockerfile in the top directory.

docker build -t ihaskell:latest .
docker run --rm -p 8888:8888 ihaskell:latest

Or use the continuously updated Docker image on Docker Hub.

docker run --rm -p 8888:8888 gibiansky/ihaskell

In order to mount your own local files into the Docker container use following command:

docker run --rm -p 8888:8888 -v "$PWD":/home/jovyan/src gibiansky/ihaskell

Be aware that the directory you're mounting must contain a stack.yaml file. A simple version would be:

resolver: lts-16.23
packages: []

It's recommended to use the same LTS version as the IHaskell image is using itself (as can be seen in its stack.yaml). This guarantees that stack doesn't have to first perform a lengthy installation of GHC before running your notebook.

You can also use the following script to run IHaskell in Docker: https://gist.github.com/brandonchinn178/928d6137bfd17961b9584a8f96c18827

Nix

If you have the nix package manager installed, you can create an IHaskell notebook environment with one command. For example:

$ /bin/jupyter notebook">
$ nix-build -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-20.03.tar.gz release.nix --argstr compiler ghc865 --arg packages "haskellPackages: [ haskellPackages.lens ]"
<result path>
$ <result path>/bin/jupyter notebook

It might take a while the first time, but subsequent builds will be much faster. You can use the https://ihaskell.cachix.org cache for prebuilt artifacts.

The IHaskell display modules are not loaded by default and have to be specified as additional packages:

$ nix-build -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-20.03.tar.gz release.nix --argstr compiler ghc865 --arg packages "haskellPackages: [ haskellPackages.ihaskell-blaze haskellPackages.ihaskell-charts ]"

For more examples of using IHaskell with Nix, see https://github.com/vaibhavsagar/notebooks.

Troubleshooting

Where are my packages? (IHaskell + Stack)

Stack manages separate environments for every package. By default your notebooks will only have access to a few packages that happen to be required for IHaskell. To make packages available add them to the stack.yaml in the IHaskell directory and run stack install --fast.

Packages should be added to the packages: section and can take the following form (reproduced here from the stack documentation). If you've already installed a package by stack install you can simply list its name even if it's local.

- package-name
- location: .
- location: dir1/dir2
- location: https://example.com/foo/bar/baz-0.0.2.tar.gz
- location: http://github.com/yesodweb/wai/archive/2f8a8e1b771829f4a8a77c0111352ce45a14c30f.zip
- location:
    git: [email protected]:commercialhaskell/stack.git
    commit: 6a86ee32e5b869a877151f74064572225e1a0398
- location:
    hg: https://example.com/hg/repo
    commit: da39a3ee5e6b4b0d3255bfef95601890afd80709

The kernel keeps dying (IHaskell + Stack)

The default instructions globally install IHaskell with support for only one version of GHC. If you've e.g. installed an lts-10 IHaskell and are using it with an lts-9 project the mismatch between GHC 8.2 and GHC 8.0 will cause this error. Stack also has the notion of a 'global project' located at ~/.stack/global-project/ and the stack.yaml for that project should be on the same LTS as the version of IHaskell installed to avoid this issue.

Comments
  • IPython 4.0 not supported

    IPython 4.0 not supported

    Starting the kernel with IPython 4.0 gives the following error:

    ihaskell: main/Main.hs:(66,1)-(73,35): Non-exhaustive patterns in function ihaskell

    When run from IPython (4.0) notebook, the kernel is reported as dead but seems to execute cells perfectly useably.

    opened by jbcoe 43
  • IHaskell notebook and console don't redirect input to GHCi

    IHaskell notebook and console don't redirect input to GHCi

    When I run IHaskell notebook I can see tips and suggestions on functions signatures or evaluate :info command, but I can't evaluate cells. It just swallows them silently. When running IHaskell console it's even worse, it freezes in cell In [1]: and trying to kill it with Ctrl+C brings again an input prompt of the console. I am using Ubuntu 12.04. How can I figure out what's going wrong?

    opened by menchyshyn 37
  • ihaskell binary from `stack install` not independent of .stack root, not destroot'd

    ihaskell binary from `stack install` not independent of .stack root, not destroot'd

    I'm trying to create a MacPorts build of IHaskell here: https://github.com/macports/macports-ports/pull/4706

    The ihaskell binary produced by stack install does not appear to be independent of the .stack directory, as I believe it should be.

    When I launch jupyter notebook and initiate a Haskell kernel, stack jumps in and starts downloading ghc, and the kernel fails.

    Is it possible to produce a binary independent of the .stack directory?

    The build is produced with:

    stack install --system-ghc …
    

    and the file /opt/local/share/jupyter/kernels/haskell/kernel.json says:

    {"display_name":"Haskell","argv":["/opt/local/bin/ihaskell","kernel","{connection_file}","--ghclib","/opt/local/lib/ghc-8.6.5","+RTS","-M3g","-N2","-RTS","--stack"],"language":"haskell"}
    

    The broader reason for this is that all MacPorts installs are done through a destroot, and destrooting a common .stack for many independent stack projects won't work.

    The strategy that works for other stack projects is to build the binary with a temporary .stack, then throw it away after the working binary is created.

    This strategy isn't working with IHaskell for the reasons above.

    opened by essandess 34
  • Recent Stack LTS versions don't seem to work

    Recent Stack LTS versions don't seem to work

    I installed ihaskell completely from scratch using stack LTS 5.2 on two different machines running debian x86_64:

    stack install --no-system-ghc ihaskell && stack exec --no-system-ghc ihaskell -- install --stack && stack exec --no-system-ghc jupyter -- notebook --debug --no-browser --ip=<IP address>
    

    I encountered the same error in both cases:

    ihaskell: /home/peddie/.stack/snapshots/x86_64-linux/lts-5.2/7.10.3/lib/x86_64-linux-ghc-7.10.3/cryptonite-0.10-9z0j8QI27Av2VIWw0mEkTO/libHScryptonite-0.10-9z0j8QI27Av2VIWw0mEkTO.a: unhandled ELF relocation(RelA) type 42
    
    ihaskell: ihaskell: unable to load package `cryptonite-0.10'
    [I 22:50:20.392 NotebookApp] KernelRestarter: restarting kernel (1/5)
    

    stack exec --no-system-ghc ghc-pkg -- list has no trouble locating cryptonite. stack exec --no-system-ghc ghci has no trouble loading and running functions from Crypto.Random.EntropyPool (to choose a random example).

    My kernel.json file:

    peddie@endeavour:~$ cat /home/peddie/.local/share/jupyter/kernels/haskell/kernel.json
    {"display_name":"Haskell","argv":["/home/peddie/.stack/snapshots/x86_64-linux/lts-5.2/7.10.3/bin/ihaskell","kernel","{connection_file}","--ghclib","/home/peddie/.stack/programs/x86_64-linux/ghc-7.10.3/lib/ghc-7.10.3/","--stack"],"language":"haskell"}
    

    This file was created with /opt/ghc/7.10.3/lib/ghc-7.10.3/ in the --ghclib field of kernel.json, but the error did not go away when I manually replaced it with the path to stack's libs.

    EDIT: I forgot a critical piece of information: this issue does not occur when building with stackage LTS 5.1, which also uses cryptonite-0.10.

    opened by peddie 33
  • IHasell not finding some packages

    IHasell not finding some packages

    I recently switched from using Haskell Plarform to using Homebrew for managing my Haskell installation. This change was without issues for GHCi but IHaskell is now unable to find many packages. For example if I

    import Data.List.Split 
    

    I get

    Failed to load interface for ‘Data.List.Split’

    even though the same import statement works fine in GHCi.

    Is there something I can do to fix this? What would be causing IHaskell to be looking in the wrong location for installed packages?


    FWIW, this occurred following an upgrade from OS X 10.10 to 10.11.

    opened by orome 32
  • cabal cannot find libzmq

    cabal cannot find libzmq

    when running cabal install ihaskell I get the following error regardless of which zeromq installation procedure I use (homebrew and github):

    Resolving dependencies...
    Configuring zeromq4-haskell-0.6.1...
    cabal: The pkg-config package libzmq version >=4.0 && <5.0 is required but it
    could not be found.
    Failed to install zeromq4-haskell-0.6.1
    cabal: Error: some packages failed to install:
    ihaskell-0.4.2.0 depends on zeromq4-haskell-0.6.1 which failed to install.
    zeromq4-haskell-0.6.1 failed during the configure step. The exception was:
    ExitFailure 1
    

    The path to my libzmq folder is in ~/.cabal/bin/libzmq.

    opened by jigrinc 31
  • Support libraries don't seem to be working on newest version

    Support libraries don't seem to be working on newest version

    I may just be doing this wrong, but when a code cell evaluates to something that should be displayed nicely (like a JuicyPixels Image), it just says

    Unshowable:Image Pixel8
    No instance for (Show (Image Pixel8)) arising from a use of ‘print’
    In a stmt of an interactive GHCi command: print it
    

    I already did cabal install ihaskell-juicypixels.

    opened by wyager 28
  • Install not working on os x due to happy

    Install not working on os x due to happy

    I installed haskell platform through homebrew I ran:

    pip3 install jupiter
    git clone http://www.github.com/gibiansky/IHaskell
    cd IHaskell
    ./macos-install.sh
    

    Jupiter works but IHaskell errors

    Downloading the latest package list from hackage.haskell.org
    Skipping download: Local and remote files match.
    Resolving dependencies...
    Downloading alex-3.1.7...
    Downloading happy-1.19.5...
    Configuring alex-3.1.7...
    Configuring happy-1.19.5...
    Building happy-1.19.5...
    Building alex-3.1.7...
    Failed to install happy-1.19.5
    Build log ( /Users/<User>/.cabal/logs/happy-1.19.5.log ):
    [1 of 1] Compiling Main             ( /var/folders/_m/1h8dd_fd3dx3qvtq87_c4q480000gn/T/cabal-tmp-85242/happy-1.19.5/dist/setup/setup.hs, /var/folders/_m/1h8dd_fd3dx3qvtq87_c4q480000gn/T/cabal-tmp-85242/happy-1.19.5/dist/setup/Main.o )
    Linking /var/folders/_m/1h8dd_fd3dx3qvtq87_c4q480000gn/T/cabal-tmp-85242/happy-1.19.5/dist/setup/setup ...
    Configuring happy-1.19.5...
    Building happy-1.19.5...
    Preprocessing executable 'happy' for happy-1.19.5...
    <command line>: cannot satisfy -package-id mtl-2.2.1-b6b36d751642fde56f037818eb788105
        (use -v for more information)
    Failed to install alex-3.1.7
    Build log ( /Users/<User>/.cabal/logs/alex-3.1.7.log ):
    [1 of 1] Compiling Main             ( /var/folders/_m/1h8dd_fd3dx3qvtq87_c4q480000gn/T/cabal-tmp-85241/alex-3.1.7/dist/setup/setup.hs, /var/folders/_m/1h8dd_fd3dx3qvtq87_c4q480000gn/T/cabal-tmp-85241/alex-3.1.7/dist/setup/Main.o )
    Linking /var/folders/_m/1h8dd_fd3dx3qvtq87_c4q480000gn/T/cabal-tmp-85241/alex-3.1.7/dist/setup/setup ...
    Configuring alex-3.1.7...
    Building alex-3.1.7...
    Preprocessing executable 'alex' for alex-3.1.7...
    <command line>: cannot satisfy -package-id QuickCheck-2.8.1-8f3828a4d4d9dac78c5d3db525b2f0fe
        (use -v for more information)
    cabal: Error: some packages failed to install:
    alex-3.1.7 failed during the building phase. The exception was:
    ExitFailure 1
    happy-1.19.5 failed during the building phase. The exception was:
    ExitFailure 1
    
    opened by michaelmesser 25
  • Rewrite Docker image

    Rewrite Docker image

    Reimplements Dockerfile with the following changes:

    • Uses the haskell Docker image as a base image, so we don't have to worry about installing Stack
    • Uses multistage builds, to avoid bulking the final image with compile-time artifacts.
      • Currently, the gibiansky/ihaskell:202108170429266e69c2 image is 6.26 GB on my computer, after a docker pull
      • This PR builds a docker image that's 1.93 GB. Note: the haskell:8.10.4 base image we're using is 1.52 GB, so this PR builds a docker image that only adds 400 MB to the base image!
      • This should greatly improve download times
    • Writes ~/.stack/global-project/stack.yaml to have the same resolver as the in-repo stack.yaml file (resolves https://github.com/gibiansky/IHaskell/issues/1251#issuecomment-899985184)
    • Adds a --env-file flag, to fix using stack from the haskell base image (the stack exec env command called here was reinstalling GHC; didn't seem to be an easy way to tell it to use --system-ghc)

    TODO:

    • [ ] Fix syntax highlighting
      • Syntax highlighting is no longer working. I'm looking at the old version of the Dockerfile, and I'm not sure how it does syntax highlighting, since it's not COPYing the jupyterlab-ihaskell directory. @vaibhavsagar @gibiansky @gregwebs do you know how the current Docker image gets syntax highlighting? (Possibly related: https://github.com/gibiansky/IHaskell/issues/1199)
    opened by brandon-leapyear 23
  • src/IHaskell/Eval/Evaluate.hs:404:16:

    src/IHaskell/Eval/Evaluate.hs:404:16:

    (ihaskell-venv) [root@qa-notebook zeromq-4.0.5]# PKG_CONFIG_PATH=/e2e/lib/zeromq4/lib/pkgconfig:/e2e/lib/zeromq4/lib/pkgconfig:/usr/share/licenses/pkgconfig:/usr/share/pkgconfig:/usr/share/doc/pkgconfig cabal install ihaskell --extra-lib-dirs=/e2e/lib/zeromq4/lib --extra-include-dirs=/e2e/lib/zeromq4/include

    ...

    Loading package MissingH-1.3.0.1 ... linking ... done. [16 of 18] Compiling IHaskell.Eval.Evaluate ( src/IHaskell/Eval/Evaluate.hs, dist/build/IHaskell/Eval/Evaluate.o )

    src/IHaskell/Eval/Evaluate.hs:404:16: Couldn't match type FilePath' with[Char]' Expected type: GHC.IO.FilePath Actual type: FilePath In the first argument of writeFile', namely(fpFromString $ directory ++ filename)' In a stmt of a 'do' block: writeFile (fpFromString $ directory ++ filename) contents In the second argument of ($)', namelydo { createDirectoryIfMissing True directory; writeFile (fpFromString $ directory ++ filename) contents }'

    src/IHaskell/Eval/Evaluate.hs:566:40: Couldn't match type FilePath' with[Char]' Expected type: GHC.IO.FilePath Actual type: FilePath In the return type of a call of fpFromString' In the second argument of($)', namely `fpFromString filename' In a stmt of a 'do' block: contents <- readFile $ fpFromString filename Failed to install ihaskell-0.6.0.0 cabal: Error: some packages failed to install: ihaskell-0.6.0.0 failed during the building phase. The exception was: ExitFailure 1

    opened by marmalodak 22
  • Package IHaskell [$25 awarded]

    Package IHaskell [$25 awarded]

    This is a while out, but it might be nice to package IHaskell nicely for end-users that aren't as experienced with Haskell.

    Other ideas:

    • Make a Docker build (https://github.com/gibiansky/IHaskell/issues/136) so that it is easy to install on any Linux distribution
    • Package as Mac app (that can hang around in the task bar and have it's own window instead of using a browser, by having our own webview or something.)
    • Package for windows like Sage does (see here)
    • Package for package managers?
      • Homebrew?
      • Debian's apt-get?

    Not sure which of these are worthwhile, but might be a good effort to get IHaskell and Haskell out to a wider audience.

    The $25 bounty on this issue has been claimed at Bountysource.

    bounty 
    opened by gibiansky 22
  • Add -dynamic back in; removal broke IHaskell

    Add -dynamic back in; removal broke IHaskell

    This commit removed -dynamic as a default flag https://github.com/IHaskell/IHaskell/commit/2891bc8498ce12ae2677d72c7252e2623158e378

    The results of this change break IHaskell in two ways. First, it now links every package available statically on startup. This is fine for small projects. In a large project though, with 200 packages, I gave up after 15 minutes. Second, many of us use IHaskell with packages that rely on shared libraries. This stopped working entirely.

    There's a related long discussion here https://github.com/IHaskell/IHaskell/pull/1252/files#diff-30f4411ae6041ebe629c055ae5c4407e47989f719a5733416bfa23454270ba65R130

    The suggested solution is that users should add dynamic in this case. But there is simply no way for users to figure this out.

    I had to run strace and notice among its 100Mb of output that ihaskell is stuck loading one object file after another and look at gdb to confirm that it's stuck in the linker pinning the CPU to 100%. No one is going to do this and then realize that -dynamic is needed in IHaskell.

    But it's even worse for a small project. You will inexplicably get errors about shared libraries. And they'll be lazy! So most of the code works, until you trip over some code that uses the shared library and then you get an incredibly cryptic error about symbols missing. Users have absolutely no way of tracking this back to IHaskell, never mind realizing that they need to add -dynamic.

    This was done to make building docker images simpler. https://github.com/IHaskell/IHaskell/pull/1252

    All of this is a horrible cost to pay for some convenience when building docker images. It breaks the common case for a slightly more convenient corner case. The downside of this pull request is it breaks building the Docker images, would you mind fixing that @brandon-leapyear? You seemed to have a version that copies over the right files.

    I suggest we add -dynamic back in. @junjihashimoto suggested the same in the discussion above.

    opened by abarbu 4
  • Submit all packages to Stackage

    Submit all packages to Stackage

    I wonder is there any specific reason all those ihaskell-* packages are not submitted to Stackage?

    In my workflow, I build and install a version of IHaskell locally, and also have multiple projects which need IHaskell. Each project has different dependencies, but they all have to be careful to use exactly the same versions for ihaskell-* packages (by including a rather long section in stack.yaml). It's difficult to maintain, and when I want IHaskell on a new machine, I also have to be careful to build and install the exact same version all my projects use. If all these packages' versions are locked in a Stackage snapshot, it will be far easier to simply use the same Stackage LTS version for all my projects.

    opened by SmartHypercube 0
  • "ihaskell: command not found" terminal response in Ubuntu

    When starting "ihaskell install --stack", the terminal gives an error "ihaskell: command not found". Please tell me how it can be fixed?

    opened by WalterVenin 2
  • ‘relayWidgetMessages’ not in scope error after starting kernel

    ‘relayWidgetMessages’ not in scope error after starting kernel

    I got the following error when I started a kernel

    [I 00:16:53.865 NotebookApp] Creating new notebook in
    [I 00:16:54.596 NotebookApp] Kernel started: 8818e04f-cf57-49f7-848b-23868661e6d8, name: haskell
    [W 00:16:54.688 NotebookApp] 404 GET /static/components/codemirror/mode/ihaskell/ihaskell.js (127.0.0.1) 4.710000ms referer=http://localhost:8888/notebooks/Untitled.ipynb?kernel_name=haskell
    [I 00:16:54.801 NotebookApp] Adapting from protocol version 5.0 (kernel 8818e04f-cf57-49f7-848b-23868661e6d8) to 5.3 (client).
    ihaskell: Not in scope: ‘IHaskell.Eval.Widgets.relayWidgetMessages’
    No module named ‘IHaskell.Eval.Widgets’ is imported.
    
    [I 00:16:57.587 NotebookApp] KernelRestarter: restarting kernel (1/5), new random ports
    WARNING:root:kernel 8818e04f-cf57-49f7-848b-23868661e6d8 restarted
    [I 00:17:04.631 NotebookApp] Saving file at /Untitled.ipynb
    

    but after it automatically restarted, the error disappeared and the kernel ran without problems any more. so basically I still can use ihaskell, just the error is weird and a bit annoying. anyway it would be very nice if you could have a look.

    versions:

    • ihaskell: master branch
    • ghcup: v0.1.18.0
    • stack: 2.9.1
    • python: 3.11.0
    • system: wsl ubuntu jammy and I installed ihaskell following the readme
    opened by FelisNivalis 0
  • flake output display package parameters

    flake output display package parameters

    https://github.com/IHaskell/IHaskell/blob/7d0b9b070aa821db1a4d38826e146fd2c41d1c0b/flake.nix#L95-L111

    I would like the Nix Flake to provide a parameterized derivation for a Jupyter environment, where the parameter is a list of the display packages that should be installed.

    It seems like there is not yet a first-class way to do that in Nix, but the discussion is ongoing here. https://github.com/NixOS/nix/issues/4744

    opened by jamesdbrock 0
Releases(0.6)
Owner
Andrew Gibiansky
Andrew Gibiansky
Repo for FUZE project. I will also publish some Linux kernel LPE exploits for various real world kernel vulnerabilities here. the samples are uploaded for education purposes for red and blue teams.

Linux_kernel_exploits Some Linux kernel exploits for various real world kernel vulnerabilities here. More exploits are yet to come. This repo contains

Wei Wu 472 Dec 21, 2022
Code for Mesh Convolution Using a Learned Kernel Basis

Mesh Convolution This repository contains the implementation (in PyTorch) of the paper FULLY CONVOLUTIONAL MESH AUTOENCODER USING EFFICIENT SPATIALLY

Yi_Zhou 35 Jan 3, 2023
(CVPR 2021) PAConv: Position Adaptive Convolution with Dynamic Kernel Assembling on Point Clouds

PAConv: Position Adaptive Convolution with Dynamic Kernel Assembling on Point Clouds by Mutian Xu*, Runyu Ding*, Hengshuang Zhao, and Xiaojuan Qi. Int

CVMI Lab 228 Dec 25, 2022
Official PyTorch code for CVPR 2020 paper "Deep Active Learning for Biased Datasets via Fisher Kernel Self-Supervision"

Deep Active Learning for Biased Datasets via Fisher Kernel Self-Supervision https://arxiv.org/abs/2003.00393 Abstract Active learning (AL) aims to min

Denis 29 Nov 21, 2022
Exploring Image Deblurring via Blur Kernel Space (CVPR'21)

Exploring Image Deblurring via Encoded Blur Kernel Space About the project We introduce a method to encode the blur operators of an arbitrary dataset

VinAI Research 118 Dec 19, 2022
tinykernel - A minimal Python kernel so you can run Python in your Python

tinykernel - A minimal Python kernel so you can run Python in your Python

fast.ai 37 Dec 2, 2022
Official PyTorch code for Mutual Affine Network for Spatially Variant Kernel Estimation in Blind Image Super-Resolution (MANet, ICCV2021)

Mutual Affine Network for Spatially Variant Kernel Estimation in Blind Image Super-Resolution (MANet, ICCV2021) This repository is the official PyTorc

Jingyun Liang 139 Dec 29, 2022
[ICCV 2021] Official Tensorflow Implementation for "Single Image Defocus Deblurring Using Kernel-Sharing Parallel Atrous Convolutions"

KPAC: Kernel-Sharing Parallel Atrous Convolutional block This repository contains the official Tensorflow implementation of the following paper: Singl

Hyeongseok Son 50 Dec 29, 2022
The code for the NSDI'21 paper "BMC: Accelerating Memcached using Safe In-kernel Caching and Pre-stack Processing".

BMC The code for the NSDI'21 paper "BMC: Accelerating Memcached using Safe In-kernel Caching and Pre-stack Processing". BibTex entry available here. B

Orange 383 Dec 16, 2022
Fuzzing the Kernel Using Unicornafl and AFL++

Unicorefuzz Fuzzing the Kernel using UnicornAFL and AFL++. For details, skim through the WOOT paper or watch this talk at CCCamp19. Is it any good? ye

Security in Telecommunications 283 Dec 26, 2022
A Kernel fuzzer focusing on race bugs

Razzer: Finding kernel race bugs through fuzzing Environment setup $ source scripts/envsetup.sh scripts/envsetup.sh sets up necessary environment var

Systems and Software Security Lab at Seoul National University (SNU) 328 Dec 26, 2022
Fuzzer for Linux Kernel Drivers

difuze: Fuzzer for Linux Kernel Drivers This repo contains all the sources (including setup scripts), you need to get difuze up and running. Tested on

seclab 344 Dec 27, 2022
Skyformer: Remodel Self-Attention with Gaussian Kernel and Nystr\"om Method (NeurIPS 2021)

Skyformer This repository is the official implementation of Skyformer: Remodel Self-Attention with Gaussian Kernel and Nystr"om Method (NeurIPS 2021).

Qi Zeng 46 Sep 20, 2022
Vertical Federated Principal Component Analysis and Its Kernel Extension on Feature-wise Distributed Data based on Pytorch Framework

VFedPCA+VFedAKPCA This is the official source code for the Paper: Vertical Federated Principal Component Analysis and Its Kernel Extension on Feature-

John 9 Sep 18, 2022
Blind Image Super-resolution with Elaborate Degradation Modeling on Noise and Kernel

Blind Image Super-resolution with Elaborate Degradation Modeling on Noise and Kernel This repository is the official PyTorch implementation of BSRDM w

Zongsheng Yue 69 Jan 5, 2023
Paper: Cross-View Kernel Similarity Metric Learning Using Pairwise Constraints for Person Re-identification

Cross-View Kernel Similarity Metric Learning Using Pairwise Constraints for Person Re-identification T M Feroz Ali, Subhasis Chaudhuri, ICVGIP-20-21

T M Feroz Ali 3 Jun 17, 2022
Kernel Point Convolutions

Created by Hugues THOMAS Introduction Update 27/04/2020: New PyTorch implementation available. With SemanticKitti, and Windows supported. This reposit

Hugues THOMAS 584 Jan 7, 2023
Self-Supervised Learning with Kernel Dependence Maximization

Self-Supervised Learning with Kernel Dependence Maximization This is the code for SSL-HSIC, a self-supervised learning loss proposed in the paper Self

DeepMind 29 Dec 29, 2022
Fastshap: A fast, approximate shap kernel

fastshap: A fast, approximate shap kernel fastshap was designed to be: Fast Calculating shap values can take an extremely long time. fastshap utilizes

Samuel Wilson 22 Sep 24, 2022