Kamil Iskra

61 papers A 5B 4C 13Misc 1Journal 19Unranked 11
YearRankTypeTitle / Venue / Authors
2023 J jnl
CoRR
Chengming Zhang, Baixi Sun, Xiaodong Yu, Zhen Xie, Weijian Zheng, Kamil Iskra, Pete Beckman, Dingwen Tao
2022 C conf
ISC
Nicolas Denoyelle, Swann Perarnau, Kamil Iskra, Balazs Gerofi
2022 J jnl
CoRR
Baixi Sun, Xiaodong Yu, Chengming Zhang, Jiannan Tian, Sian Jin, Kamil Iskra, Tao Zhou, Tekin Bicer, Pete Beckman, Dingwen Tao
2019 ch.
Operating Systems for Supercomputers and High Performance Computing
Swann Perarnau, Brian C. Van Essen, Roberto Gioiosa, Kamil Iskra, Maya B. Gokhale, Kazutomo Yoshii, Peter H. Beckman
2019 conf
MCHPC@SC
Swann Perarnau, Brice Videau, Nicolas Denoyelle, Florence Monna, Kamil Iskra, Peter H. Beckman
2019 ch.
Operating Systems for Supercomputers and High Performance Computing
Kamil Iskra, Kazutomo Yoshii, Peter H. Beckman
2017 A conf
IPDPS
Swann Perarnau, Judicael A. Zounmevo, Matthieu Dreher, Brian C. Van Essen, Roberto Gioiosa, Kamil Iskra, Maya B. Gokhale, Kazutomo Yoshii, Peter H. Beckman
2017 J jnl
Int. J. High Perform. Comput. Appl.
Andrew A. Chien, Pavan Balaji, Nan Dun, Aiman Fang, Hajime Fujita, Kamil Iskra, Zachary A. Rubenstein, Ziming Zheng, Jeff R. Hammond, Ignacio Laguna, D. Richards, Anshu Dubey, Brian van Straalen, Mark Hoemmen, Michael A. Heroux, Keita Teranishi, Andrew R. Siegel
2017 conf
ISAV@SC
Matthieu Dreher, Swann Perarnau, Tom Peterka, Kamil Iskra, Peter H. Beckman
2017 ed.
ROSS@HPDC
Torsten Hoefler, Kamil Iskra
2016 C conf
CLUSTER
Swann Perarnau, Judicael A. Zounmevo, Balazs Gerofi, Kamil Iskra, Peter H. Beckman
2016 ed.
ROSS@HPDC
Kamil Iskra, Torsten Hoefler
2015 B conf
IC2E
Judicael A. Zounmevo, Swann Perarnau, Kamil Iskra, Kazutomo Yoshii, Roberto Gioiosa, Brian Van Essen, Maya B. Gokhale, Edgar A. León
2015 C conf
DAIS
Swann Perarnau, Rajeev Thakur, Kamil Iskra, Ken Raffenetti, Franck Cappello, Rinku Gupta, Peter H. Beckman, Marc Snir, Henry Hoffmann, Martin Schulz, Barry Rountree
2015 C conf
CLUSTER
Hajime Fujita, Kamil Iskra, Pavan Balaji, Andrew A. Chien
2015 C conf
CLUSTER
Nan Dun, Hajime Fujita, Aiman Fang, Yan Liu, Andrew A. Chien, Pavan Balaji, Kamil Iskra, Wesley Bland, Andrew R. Siegel
2015 J jnl
Int. J. High Perform. Comput. Appl.
Kamil Iskra, Torsten Hoefler
2015 ed.
ROSS@HPDC
Torsten Hoefler, Kamil Iskra
2015 Misc conf
ICCS
Andrew A. Chien, Pavan Balaji, Peter H. Beckman, Nan Dun, Aiman Fang, Hajime Fujita, Kamil Iskra, Zachary A. Rubenstein, Ziming Zheng, Rob Schreiber, Jeff R. Hammond, James Dinan, Ignacio Laguna, D. Richards, Anshu Dubey, Brian van Straalen, Mark Hoemmen, Michael A. Heroux, Keita Teranishi, Andrew R. Siegel
2015 B conf
ICPADS
Hajime Fujita, Kamil Iskra, Pavan Balaji, Andrew A. Chien
2014 J jnl
Clust. Comput.
Thomas Ilsche, Joseph Schuchart, Jason Cope, Dries Kimpe, Terry R. Jones, Andreas Knüpfer, Kamil Iskra, Robert B. Ross, Wolfgang E. Nagel, Stephen Poole
2014 ed.
ROSS@ICS
Kamil Iskra, Torsten Hoefler
2013 A conf
IPDPS
Carmen Sigovan, Chris Muelder, Kwan-Liu Ma, Jason Cope, Kamil Iskra, Robert B. Ross
2013 J jnl
Int. J. High Perform. Comput. Appl.
Torsten Hoefler, Kamil Iskra
2013 ed.
ROSS@ICS
Torsten Hoefler, Kamil Iskra
2012 A conf
HPDC
Thomas Ilsche, Joseph Schuchart, Jason Cope, Dries Kimpe, Terry R. Jones, Andreas Knüpfer, Kamil Iskra, Robert B. Ross, Wolfgang E. Nagel, Stephen Poole
2012 C conf
CLUSTER
Kazutomo Yoshii, Kamil Iskra, Rinku Gupta, Peter H. Beckman, Venkatram Vishwanath, Chenjie Yu, Susan Coghlan
2012 J jnl
Int. J. High Perform. Comput. Appl.
Torsten Hoefler, Kamil Iskra
2012 ed.
ROSS@ICS
Torsten Hoefler, Kamil Iskra
2011 C conf
CLUSTER
Benjamin Welton, Dries Kimpe, Jason Cope, Christina M. Patrick, Kamil Iskra, Robert B. Ross
2011 J jnl
Int. J. High Perform. Comput. Appl.
Kazutomo Yoshii, Kamil Iskra, Harish Naik, Peter H. Beckman, P. Chris Broekema
2011 C conf
EuroMPI
Jason Cope, Kamil Iskra, Dries Kimpe, Robert B. Ross
2010 A conf
SC
Venkatram Vishwanath, Mark Hereld, Kamil Iskra, Dries Kimpe, Vitali A. Morozov, Michael E. Papka, Robert B. Ross, Kazutomo Yoshii
2010 conf
PARA (2)
Jason Cope, Kamil Iskra, Dries Kimpe, Robert B. Ross
2010 J jnl
Clust. Comput.
Ioan Raicu, Ian T. Foster, Mike Wilde, Zhao Zhang, Kamil Iskra, Peter H. Beckman, Yong Zhao, Alexander S. Szalay, Alok N. Choudhary, Philip Little, Christopher Moretti, Amitabh Chaudhary, Douglas Thain
2010 C conf
CLUSTER
Kazuki Ohta, Dries Kimpe, Jason Cope, Kamil Iskra, Robert B. Ross, Yutaka Ishikawa
2009 C conf
CLUSTER
Philip H. Carns, Robert Latham, Robert B. Ross, Kamil Iskra, Samuel Lang, Katherine Riley
2009 conf
ICPP Workshops
Kazutomo Yoshii, Kamil Iskra, Harish Naik, Peter H. Beckman, P. Chris Broekema
2009 J jnl
CoRR
Zhao Zhang, Allan Espinosa, Kamil Iskra, Ioan Raicu, Ian T. Foster, Michael Wilde
2009 J jnl
Computer
Michael Wilde, Ian T. Foster, Kamil Iskra, Peter H. Beckman, Zhao Zhang, Allan Espinosa, Mihael Hategan, Ben Clifford, Ioan Raicu
2009 C conf
CLUSTER
Nawab Ali, Philip H. Carns, Kamil Iskra, Dries Kimpe, Samuel Lang, Robert Latham, Robert B. Ross, Lee Ward, P. Sadayappan
2008 J jnl
Clust. Comput.
Peter H. Beckman, Kamil Iskra, Kazutomo Yoshii, Susan Coghlan, Aroon Nataraj
2008 conf
MTAGS@SC
Zhao Zhang, Allan Espinosa, Kamil Iskra, Ioan Raicu, Ian T. Foster, Michael Wilde
2008 A conf
SC
Ioan Raicu, Zhao Zhang, Michael Wilde, Ian T. Foster, Peter H. Beckman, Kamil Iskra, Ben Clifford
2008 J jnl
CoRR
Ioan Raicu, Zhao Zhang, Michael Wilde, Ian T. Foster, Peter H. Beckman, Kamil Iskra, Ben Clifford
2008 B conf
PPoPP
Kamil Iskra, John W. Romein, Kazutomo Yoshii, Peter H. Beckman
2006 J jnl
ACM SIGOPS Oper. Syst. Rev.
Peter H. Beckman, Kamil Iskra, Kazutomo Yoshii, Susan Coghlan
2006 C conf
CLUSTER
Peter H. Beckman, Kamil Iskra, Kazutomo Yoshii, Susan Coghlan
2005 J jnl
Simul.
Kamil Iskra, G. Dick van Albada, Peter M. A. Sloot
2004 B conf
PADS
Kamil Iskra, G. Dick van Albada, Peter M. A. Sloot
2003 C conf
DS-RT
Kamil Iskra, G. Dick van Albada, Peter M. A. Sloot
2002 J jnl
Concurr. Comput. Pract. Exp.
Kamil Iskra, Robert G. Belleman, G. Dick van Albada, J. Santoso, Peter M. A. Sloot, Henri E. Bal, Hans J. W. Spoelder, Marian Bubak
2001 conf
HPCN Europe
Marian Bubak, Dariusz Zbik, G. Dick van Albada, Kamil Iskra, Peter M. A. Sloot
2001 J jnl
Sci. Program.
Marian Bubak, Dariusz Zbik, G. Dick van Albada, Kamil Iskra, Peter M. A. Sloot
2000 conf
GRID
Kamil Iskra, Zeger W. Hendrikse, G. Dick van Albada, Benno J. Overeinder, Peter M. A. Sloot, Jörn Gehring
2000 conf
PVM/MPI
Kamil Iskra, Zeger W. Hendrikse, G. Dick van Albada, Benno J. Overeinder, Peter M. A. Sloot
2000 J jnl
ACM SIGOPS Oper. Syst. Rev.
Henri E. Bal, Raoul Bhoedjang, Rutger F. H. Hofman, Ceriel J. H. Jacobs, Thilo Kielmann, Jason Maassen, Rob van Nieuwpoort, John Romain, Luc Renambot, Tim Rühl, Ronald Veldema, Kees Verstoep, Aline Baggio, Gerco Ballintijn, Ihor Kuz, Guillaume Pierre, Maarten van Steen, Andrew S. Tanenbaum, Gerben Doornbos, Desmond Germans, Hans J. W. Spoelder, Evert Jan Baerends, Stan J. A. van Gisbergen, Hamid Afsermanseh, G. Dick van Albada, Adam Belloum, David Dubbeldam, Zeger W. Hendrikse, Louis O. Hertzberger, Alfons G. Hoekstra, Kamil Iskra, Drona Kandhai, Dennis C. Koelma, Frank van der Linden, Benno J. Overeinder, Peter M. A. Sloot, Piero Spinnato, Dick H. J. Epema, Arjan J. C. van Gemund, Pieter P. Jonker, Andrei Radulescu, Kees van Reeuwijk, Henk J. Sips, Peter M. W. Knijnenburg, Michael S. Lew, Floris Sluiter, Lex Wolters, Hans Blom, Cees de Laat
2000 J jnl
ACM SIGOPS Oper. Syst. Rev.
Kamil Iskra, Frank van der Linden, Zeger W. Hendrikse, Benno J. Overeinder, G. Dick van Albada, Peter M. A. Sloot
1999 conf
PVM/MPI
Marian Bubak, Wlodzimierz Funika, Kamil Iskra, Radoslaw Maruszewski, Roland Wismüller
1999 conf
HPCN Europe
Marian Bubak, Wlodzimierz Funika, Kamil Iskra, Radoslaw Maruszewski
1998 conf
PVM/MPI
Marian Bubak, Wlodzimierz Funika, Kamil Iskra, Radoslaw Maruszewski
redb/extractors/decompiler/bninja/analysis/cfg.py
← Index redb/extractors/decompiler/bninja/analysis/cfg.py python
from binaryninja.enums import LowLevelILOperation as LLIL_OP

# Support both package and standalone imports
try:
    from . import cfg_features
except ImportError:
    from redb.extractors.decompiler.bninja.analysis import cfg_features


# ---------------------------------------------------------------------------
# Task 2.2: Build LLIL operation maps at import time using real enum values
# ---------------------------------------------------------------------------

# Prime product map: LLIL operation integer value -> small prime
cfg_features.LLIL_OP_PRIMES = {
    # SET_REG, SET_REG_SPLIT
    LLIL_OP.LLIL_SET_REG.value: 2,
    LLIL_OP.LLIL_SET_REG_SPLIT.value: 2,
    # SET_FLAG
    LLIL_OP.LLIL_SET_FLAG.value: 3,
    # LOAD
    LLIL_OP.LLIL_LOAD.value: 5,
    # STORE
    LLIL_OP.LLIL_STORE.value: 7,
    # PUSH, POP
    LLIL_OP.LLIL_PUSH.value: 11,
    LLIL_OP.LLIL_POP.value: 13,
    # CALL, TAILCALL, SYSCALL
    LLIL_OP.LLIL_CALL.value: 17,
    LLIL_OP.LLIL_TAILCALL.value: 17,
    LLIL_OP.LLIL_SYSCALL.value: 19,
    # RET, NORET
    LLIL_OP.LLIL_RET.value: 23,
    LLIL_OP.LLIL_NORET.value: 23,
    # IF, GOTO
    LLIL_OP.LLIL_IF.value: 29,
    LLIL_OP.LLIL_GOTO.value: 31,
    # ADD, SUB
    LLIL_OP.LLIL_ADD.value: 37,
    LLIL_OP.LLIL_SUB.value: 41,
    # AND, OR, XOR
    LLIL_OP.LLIL_AND.value: 43,
    LLIL_OP.LLIL_OR.value: 47,
    LLIL_OP.LLIL_XOR.value: 53,
    # LSL, LSR, ASR, ROL, ROR
    LLIL_OP.LLIL_LSL.value: 59,
    LLIL_OP.LLIL_LSR.value: 61,
    LLIL_OP.LLIL_ASR.value: 67,
    LLIL_OP.LLIL_ROL.value: 71,
    LLIL_OP.LLIL_ROR.value: 73,
    # MUL, DIVU, DIVS, MODU, MODS
    LLIL_OP.LLIL_MUL.value: 79,
    LLIL_OP.LLIL_DIVU.value: 83,
    LLIL_OP.LLIL_DIVS.value: 83,
    LLIL_OP.LLIL_MODU.value: 89,
    LLIL_OP.LLIL_MODS.value: 89,
    # NEG, NOT
    LLIL_OP.LLIL_NEG.value: 97,
    LLIL_OP.LLIL_NOT.value: 101,
    # CMP_E, CMP_NE, CMP_SLT, CMP_ULT, CMP_SLE, CMP_ULE
    # CMP_SGT, CMP_UGT, CMP_SGE, CMP_UGE
    LLIL_OP.LLIL_CMP_E.value: 103,
    LLIL_OP.LLIL_CMP_NE.value: 103,
    LLIL_OP.LLIL_CMP_SLT.value: 107,
    LLIL_OP.LLIL_CMP_ULT.value: 107,
    LLIL_OP.LLIL_CMP_SLE.value: 109,
    LLIL_OP.LLIL_CMP_ULE.value: 109,
    LLIL_OP.LLIL_CMP_SGT.value: 113,
    LLIL_OP.LLIL_CMP_UGT.value: 113,
    LLIL_OP.LLIL_CMP_SGE.value: 127,
    LLIL_OP.LLIL_CMP_UGE.value: 127,
    # NOP
    LLIL_OP.LLIL_NOP.value: 1,
    # SX, ZX, LOW_PART, BOOL_TO_INT
    LLIL_OP.LLIL_SX.value: 131,
    LLIL_OP.LLIL_ZX.value: 137,
    LLIL_OP.LLIL_LOW_PART.value: 139,
    LLIL_OP.LLIL_BOOL_TO_INT.value: 149,
    # JUMP, JUMP_TO
    LLIL_OP.LLIL_JUMP.value: 151,
    LLIL_OP.LLIL_JUMP_TO.value: 151,
}

# Category map: LLIL operation integer value -> category index
_ARITHMETIC = {
    LLIL_OP.LLIL_ADD, LLIL_OP.LLIL_ADC, LLIL_OP.LLIL_SUB, LLIL_OP.LLIL_SBB,
    LLIL_OP.LLIL_MUL, LLIL_OP.LLIL_MULU_DP, LLIL_OP.LLIL_MULS_DP,
    LLIL_OP.LLIL_DIVU, LLIL_OP.LLIL_DIVU_DP, LLIL_OP.LLIL_DIVS,
    LLIL_OP.LLIL_DIVS_DP, LLIL_OP.LLIL_MODU, LLIL_OP.LLIL_MODS,
    LLIL_OP.LLIL_NEG,
}
_LOGIC = {
    LLIL_OP.LLIL_AND, LLIL_OP.LLIL_OR, LLIL_OP.LLIL_XOR, LLIL_OP.LLIL_NOT,
    LLIL_OP.LLIL_LSL, LLIL_OP.LLIL_LSR, LLIL_OP.LLIL_ASR,
    LLIL_OP.LLIL_ROL, LLIL_OP.LLIL_RLC, LLIL_OP.LLIL_ROR, LLIL_OP.LLIL_RRC,
}
_TRANSFER = {
    LLIL_OP.LLIL_SET_REG, LLIL_OP.LLIL_SET_REG_SPLIT, LLIL_OP.LLIL_SET_FLAG,
    LLIL_OP.LLIL_GOTO, LLIL_OP.LLIL_IF, LLIL_OP.LLIL_JUMP, LLIL_OP.LLIL_JUMP_TO,
    LLIL_OP.LLIL_RET, LLIL_OP.LLIL_NORET, LLIL_OP.LLIL_PUSH, LLIL_OP.LLIL_POP,
}
_CALL = {
    LLIL_OP.LLIL_CALL, LLIL_OP.LLIL_TAILCALL, LLIL_OP.LLIL_SYSCALL,
}
_COMPARISON = {
    LLIL_OP.LLIL_CMP_E, LLIL_OP.LLIL_CMP_NE,
    LLIL_OP.LLIL_CMP_SLT, LLIL_OP.LLIL_CMP_ULT,
    LLIL_OP.LLIL_CMP_SLE, LLIL_OP.LLIL_CMP_ULE,
    LLIL_OP.LLIL_CMP_SGE, LLIL_OP.LLIL_CMP_UGE,
    LLIL_OP.LLIL_CMP_SGT, LLIL_OP.LLIL_CMP_UGT,
    LLIL_OP.LLIL_TEST_BIT, LLIL_OP.LLIL_FLAG_COND,
}
_MEMORY = {
    LLIL_OP.LLIL_LOAD, LLIL_OP.LLIL_STORE,
}

cfg_features.LLIL_OP_CATEGORIES = {}
for _op in _ARITHMETIC:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_ARITHMETIC
for _op in _LOGIC:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_LOGIC
for _op in _TRANSFER:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_TRANSFER
for _op in _CALL:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_CALL
for _op in _COMPARISON:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_COMPARISON
for _op in _MEMORY:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_MEMORY

# Set of CALL operation values for counting
_CALL_OPS = {op.value for op in _CALL}


# ---------------------------------------------------------------------------
# Task 2.1 + 2.3: Rewritten CFGAnalysis
# ---------------------------------------------------------------------------

class CFGAnalysis:
    def __init__(self, function, llil_function=None):
        self.function = function
        self.llil_function = llil_function

    def extract_function_cfg(self):
        """Extract function-level CFG features as a flat dictionary."""

        if self.function is None:
            return None

        blocks = list(self.function.basic_blocks)
        if not blocks:
            return None

        n = len(blocks)

        # 1. Build index-based adjacency from Binary Ninja blocks
        addr_to_idx = {b.start: i for i, b in enumerate(blocks)}
        successors = [[] for _ in range(n)]
        predecessors = [[] for _ in range(n)]
        for i, block in enumerate(blocks):
            for edge in block.outgoing_edges:
                if edge.target is None:
                    continue
                target_idx = addr_to_idx.get(edge.target.start)
                if target_idx is not None:
                    successors[i].append(target_idx)
                    predecessors[target_idx].append(i)

        # 2. BFS order (reusable across multiple features)
        bfs = cfg_features.bfs_order(successors, n)

        # 3. Collect per-block LLIL operations (for prime product + ACFG features)
        block_llil_ops = self._collect_block_llil_ops(blocks, addr_to_idx, n)
        all_llil_ops = [op for block_ops in block_llil_ops for op in block_ops]

        # 4. Structural counts
        edge_count = sum(len(s) for s in successors)
        total_llil = sum(len(ops) for ops in block_llil_ops)
        call_count = sum(
            1 for ops in block_llil_ops for op in ops
            if op in _CALL_OPS
        )

        # 5. Compute all features
        bb_features = cfg_features.build_block_features(block_llil_ops, successors, n)

        return {
            "cfg_topology_hash": cfg_features.compute_topology_hash(successors, bfs, n),
            "block_count": n,
            "edge_count": edge_count,
            "llil_total_operations": total_llil,
            "call_count": call_count,
            "cyclomatic_complexity": edge_count - n + 2,
            "loop_count": cfg_features.count_back_edges(successors, n),
            "max_depth": cfg_features.bfs_max_depth(successors, n),
            "max_fan_out": max((len(s) for s in successors), default=0),
            "md_index_topdown": cfg_features.compute_md_index_topdown(successors, predecessors, bfs),
            "md_index_bottomup": cfg_features.compute_md_index_bottomup(successors, predecessors, n),
            "prime_product_llil": cfg_features.compute_prime_product(all_llil_ops),
            "cfg_feature_tlsh": cfg_features.compute_cfg_feature_tlsh(bb_features, bfs),
            "wl_minhash": cfg_features.compute_wl_minhash(successors, predecessors, bb_features, n),
            "bb_features": bb_features,
            "cfg_adjacency": cfg_features.pack_adjacency(successors),
        }

    def _collect_block_llil_ops(self, blocks, addr_to_idx, n):
        """
        Collect LLIL operation integers per native basic block.
        Walks the full expression tree of each instruction so that
        nested operations (e.g. ADD inside SET_REG) are captured.
        Returns list of n lists, one per block.
        """
        block_ops = [[] for _ in range(n)]

        if self.llil_function is None:
            return block_ops

        try:
            for llil_block in self.llil_function.basic_blocks:
                # Map LLIL block to native block via source_block
                if llil_block.source_block is not None:
                    native_idx = addr_to_idx.get(llil_block.source_block.start)
                    if native_idx is not None:
                        for instr in llil_block:
                            self._walk_llil_ops(instr, block_ops[native_idx])
        except Exception:
            pass  # Return empty ops — LLIL-dependent fields will be 0/null

        return block_ops

    @staticmethod
    def _walk_llil_ops(expr, ops_list):
        """Collect operation values from an LLIL expression tree iteratively."""
        stack = [expr]
        while stack:
            node = stack.pop()
            if hasattr(node, 'operation'):
                ops_list.append(node.operation.value)
            if hasattr(node, 'operands'):
                for operand in node.operands:
                    if hasattr(operand, 'operation'):
                        stack.append(operand)