Xavier Besseron

27 papers B 2C 4Journal 7Unranked 12
YearRankTypeTitle / Venue / Authors
2025 conf
IPDPS (Workshops)
Mykhailo Novikov, Xavier Besseron
2024 conf
HPC Asia Workshops
Xavier Besseron, Prasad Adhav, Bernhard Peters
2022 C conf
SIMULTECH
Bernhard Peters, Xavier Besseron, Alice Peyraut, Miriam Mehl, Benjamin Ueckermann
2022 J jnl
CoRR
Abdoul Wahid Mainassara Checkaraou, Xavier Besseron, Alban Rousset, Fenglei Qi, Bernhard Peters
2022 conf
PEARC
Xavier Besseron, Henrik Rusche, Bernhard Peters
2021 conf
PEARC
Sébastien Varrette, Emmanuel Kieffer, Frédéric Pinel, Ezhilmathi Krishnasamy, Sarah Peter, Hyacinthe Cartiaux, Xavier Besseron
2020 conf
IPDPS Workshops
Abdoul Wahid Mainassara Chekaraou, Xavier Besseron, Alban Rousset, Emmanuel Kieffer, Bernhard Peters
2019 J jnl
J. Comput. Phys.
Gabriele Pozzetti, Hrvoje Jasak, Xavier Besseron, Alban Rousset, Bernhard Peters
2019 ch.
Ultrascale Computing Systems
Pascal Bouvry, Sébastien Varrette, Tuan Anh Trinh, Muhammad Umer Wasim, Abdallah Ali Z. A. Ibrahim, Xavier Besseron
2018 J jnl
CoRR
Gabriele Pozzetti, Xavier Besseron, Alban Rousset, Bernhard Peters
2018 J jnl
CoRR
Gabriele Pozzetti, Hrvoje Jasak, Xavier Besseron, Alban Rousset, Bernhard Peters
2018 C conf
SBAC-PAD
Abdoul Wahid Mainassara Checkaraou, Alban Rousset, Xavier Besseron, Sébastien Varrette, Bernhard Peters
2018 J jnl
Bioinform.
Émilie Neveu, Petr Popov, Alexandre Hoffmann, Angelo Migliosi, Xavier Besseron, Grégoire Danoy, Pascal Bouvry, Sergei Grudinin
2018 J jnl
CoRR
Bernhard Peters, Maryam Baniasadi, Mehdi Baniasadi, Xavier Besseron, Alvaro Estupinan Donoso, Mohammad Mohseni, Gabriele Pozzetti
2014 conf
ICPP Workshops
Sébastien Varrette, Valentin Plugaru, Mateusz Guzek, Xavier Besseron, Pascal Bouvry
2014 conf
ISSPIT
Mateusz Guzek, Xavier Besseron, Sébastien Varrette, Grégoire Danoy, Pascal Bouvry
2013 C conf
SBAC-PAD
Sébastien Varrette, Mateusz Guzek, Valentin Plugaru, Xavier Besseron, Pascal Bouvry
2012 conf
IPDPS Workshops
Raghunath Rajachandrasekar, Xavier Besseron, Dhabaleswar K. Panda
2011 B conf
ICPP
Xiangyong Ouyang, Raghunath Rajachandrasekar, Xavier Besseron, Hao Wang, Jian Huang, Dhabaleswar K. Panda
2011 conf
Euro-Par Workshops (2)
Raghunath Rajachandrasekar, Xiangyong Ouyang, Xavier Besseron, Vilobh Meshram, Dhabaleswar K. Panda
2011 C conf
CLUSTER
Vilobh Meshram, Xavier Besseron, Xiangyong Ouyang, Raghunath Rajachandrasekar, Ravi Prakash, Dhabaleswar K. Panda
2011 B conf
CCGRID
Xiangyong Ouyang, Raghunath Rajachandrasekar, Xavier Besseron, Dhabaleswar K. Panda
2011 conf
Euro-Par Workshops (2)
Xavier Besseron, Thierry Gautier
2010
Xavier Besseron
2008 conf
MCO
Xavier Besseron, Thierry Gautier
2008 J jnl
Tech. Sci. Informatiques
Xavier Besseron, Laurent Pigeon, Thierry Gautier, Samir Jafar
2007 conf
PASCO
Thierry Gautier, Xavier Besseron, Laurent Pigeon
redb/extractors/decompiler/bninja/similarity/minhashcustom.py
← Index redb/extractors/decompiler/bninja/similarity/minhashcustom.py python
import numpy as np
import mmh3

class MinHashCustom:
    """
    DTO for an actual MinHash
    <minhash>: a binary sequence of packed int8/32 values
    <minhash_int>: the equivalent representation of <minhash> but as list of int8/32
    """

    _HASH_MAX = 0xFFFFFFFF
    _MINHASH_BITS = 32

    def getSignatureEntrySize(self):
        return 1 if self.MINHASH_BITS <= 8 else 4

    def __init__(self, function_addr=None, minhash_bytes=None, minhash_signature=None, minhash_bits=32):
        self.minhash = b""
        self.minhash_int = []
        if minhash_bits:
            self._MINHASH_BITS = minhash_bits
        if minhash_bytes and minhash_signature:
            raise ValueError("Can use only one keyword argument")
        if minhash_bytes:
            if self._MINHASH_BITS <= 8:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint8)
            else:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint32)
            self.setMinHash(minhash_signature)
        elif minhash_signature:
            self.setMinHash(minhash_signature)

        self.shingler_composition = {}
        self.function_addr = function_addr

    def hasMinHash(self):
        return len(self.minhash) > 0

    def getMinHash(self):
        return self.minhash

    def getMinHashInt(self):
        return self.minhash_int

    def setMinHash(self, minhash_signature):
        self.minhash_int = [i % 2 ** self._MINHASH_BITS for i in minhash_signature]
        if self._MINHASH_BITS <= 8:
            self.minhash = np.array(self.minhash_int, dtype=np.uint8).tobytes()
        else:
            self.minhash = np.array(self.minhash_int, dtype=np.uint32).tobytes()

    def getComposition(self):
        return self.shingler_composition

    def scoreAgainst(self, other):
        return self.calculateMinHashScore(self.minhash, other.minhash, minhash_bits=self._MINHASH_BITS)

    @staticmethod
    def getHashMax():
        return MinHashCustom._HASH_MAX

    @staticmethod
    def hashData(data, seed) -> int:
        if isinstance(data, (str, bytes, bytearray)):
            return mmh3.hash(data, seed) & MinHashCustom._HASH_MAX
        elif isinstance(data, (list, tuple)):
            to_hash = "|".join(str(elem) for elem in data)
            return mmh3.hash(to_hash, seed) & MinHashCustom._HASH_MAX
        else:
            raise NotImplementedError(
                f"Type not supported for hashData: {type(data).__name__}"
            )

    @staticmethod
    def calculateMinHashScore(first, second, minhash_bits=32):
        if minhash_bits <= 8:
            first_np = np.frombuffer(first, dtype=np.uint8)
            second_np = np.frombuffer(second, dtype=np.uint8)
        else:
            first_np = np.frombuffer(first, dtype=np.uint32)
            second_np = np.frombuffer(second, dtype=np.uint32)
        return 100.0 * sum(first_np == second_np) / len(first_np)

    @staticmethod
    def calculateMinHashIntScore(first, second):
        score = 0
        num_hashes = len(first)
        if num_hashes:
            for index, part in enumerate(first):
                score += 1 if part == second[index] else 0
            return 100.0 * score / num_hashes
        return 0.0

    @property
    def MINHASH_BITS(self):
        return self._MINHASH_BITS