Elements of Design for Containers and Solutions in the LinBox Library View Full Text


Ontology type: schema:Chapter      Open Access: True


Chapter Info

DATE

2014

AUTHORS

Brice Boyer , Jean-Guillaume Dumas , Pascal Giorgi , Clément Pernet , B. David Saunders

ABSTRACT

We describe in this paper new design techniques used in the C++ exact linear algebra library LinBox, intended to make the library safer and easier to use, while keeping it generic and efficient. First, we review the new simplified structure for containers, based on our founding scope allocation model. We explain design choices and their impact on coding: unification of our matrix classes, clearer model for matrices and submatrices, etc. Then we present a variation of the strategy design pattern that is comprised of a controller–plugin system: the controller (solution) chooses among plug-ins (algorithms) that always call back the controllers for subtasks. We give examples using the solution mul. Finally we present a benchmark architecture that serves two purposes: Providing the user with easier ways to produce graphs; Creating a framework for automatically tuning the library and supporting regression testing. More... »

PAGES

654-662

References to SciGraph publications

  • 2005-06. Generic Programming and High-Performance Libraries in INTERNATIONAL JOURNAL OF PARALLEL PROGRAMMING
  • 2010. LinBox Founding Scope Allocation, Parallel Building Blocks, and Separate Compilation in MATHEMATICAL SOFTWARE – ICMS 2010
  • Identifiers

    URI

    http://scigraph.springernature.com/pub.10.1007/978-3-662-44199-2_98

    DOI

    http://dx.doi.org/10.1007/978-3-662-44199-2_98

    DIMENSIONS

    https://app.dimensions.ai/details/publication/pub.1038870295


    Indexing Status Check whether this publication has been indexed by Scopus and Web Of Science using the SN Indexing Status Tool
    Incoming Citations Browse incoming citations for this publication using opencitations.net

    JSON-LD is the canonical representation for SciGraph data.

    TIP: You can open this SciGraph record using an external JSON-LD service: JSON-LD Playground Google SDTT

    [
      {
        "@context": "https://springernature.github.io/scigraph/jsonld/sgcontext.json", 
        "about": [
          {
            "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/0806", 
            "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
            "name": "Information Systems", 
            "type": "DefinedTerm"
          }, 
          {
            "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/08", 
            "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
            "name": "Information and Computing Sciences", 
            "type": "DefinedTerm"
          }
        ], 
        "author": [
          {
            "affiliation": {
              "alternateName": "North Carolina State University", 
              "id": "https://www.grid.ac/institutes/grid.40803.3f", 
              "name": [
                "Department of Mathematics, North Carolina State University, USA"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Boyer", 
            "givenName": "Brice", 
            "id": "sg:person.014470544462.50", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.014470544462.50"
            ], 
            "type": "Person"
          }, 
          {
            "affiliation": {
              "alternateName": "Joseph Fourier University", 
              "id": "https://www.grid.ac/institutes/grid.9621.c", 
              "name": [
                "Laboratoire J. Kuntzmann, Universit\u00e9 de Grenoble, France"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Dumas", 
            "givenName": "Jean-Guillaume", 
            "id": "sg:person.014554477001.07", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.014554477001.07"
            ], 
            "type": "Person"
          }, 
          {
            "affiliation": {
              "alternateName": "French National Centre for Scientific Research", 
              "id": "https://www.grid.ac/institutes/grid.4444.0", 
              "name": [
                "LIRMM, CNRS, Universit\u00e9 Montpellier 2, France"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Giorgi", 
            "givenName": "Pascal", 
            "id": "sg:person.014711124105.94", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.014711124105.94"
            ], 
            "type": "Person"
          }, 
          {
            "affiliation": {
              "name": [
                "Laboratoire LIG, Universit\u00e9 de Grenoble et INRIA, France"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Pernet", 
            "givenName": "Cl\u00e9ment", 
            "id": "sg:person.014553725531.88", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.014553725531.88"
            ], 
            "type": "Person"
          }, 
          {
            "affiliation": {
              "alternateName": "University of Delaware", 
              "id": "https://www.grid.ac/institutes/grid.33489.35", 
              "name": [
                "Computer and Information Science Department, University of Delaware, USA"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Saunders", 
            "givenName": "B. David", 
            "id": "sg:person.01312056264.31", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.01312056264.31"
            ], 
            "type": "Person"
          }
        ], 
        "citation": [
          {
            "id": "sg:pub.10.1007/s10766-005-3580-8", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1002305640", 
              "https://doi.org/10.1007/s10766-005-3580-8"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "sg:pub.10.1007/s10766-005-3580-8", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1002305640", 
              "https://doi.org/10.1007/s10766-005-3580-8"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "sg:pub.10.1007/978-3-642-15582-6_16", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1004245109", 
              "https://doi.org/10.1007/978-3-642-15582-6_16"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "sg:pub.10.1007/978-3-642-15582-6_16", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1004245109", 
              "https://doi.org/10.1007/978-3-642-15582-6_16"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1117/12.919323", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1006533865"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1016/j.jsc.2013.09.002", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1020354830"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/1576702.1576713", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1027495424"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/1837210.1837224", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1032381359"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/1391989.1391992", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1043352868"
            ], 
            "type": "CreativeWork"
          }
        ], 
        "datePublished": "2014", 
        "datePublishedReg": "2014-01-01", 
        "description": "We describe in this paper new design techniques used in the C++ exact linear algebra library LinBox, intended to make the library safer and easier to use, while keeping it generic and efficient. First, we review the new simplified structure for containers, based on our founding scope allocation model. We explain design choices and their impact on coding: unification of our matrix classes, clearer model for matrices and submatrices, etc. Then we present a variation of the strategy design pattern that is comprised of a controller\u2013plugin system: the controller (solution) chooses among plug-ins (algorithms) that always call back the controllers for subtasks. We give examples using the solution mul. Finally we present a benchmark architecture that serves two purposes: Providing the user with easier ways to produce graphs; Creating a framework for automatically tuning the library and supporting regression testing.", 
        "editor": [
          {
            "familyName": "Hong", 
            "givenName": "Hoon", 
            "type": "Person"
          }, 
          {
            "familyName": "Yap", 
            "givenName": "Chee", 
            "type": "Person"
          }
        ], 
        "genre": "chapter", 
        "id": "sg:pub.10.1007/978-3-662-44199-2_98", 
        "inLanguage": [
          "en"
        ], 
        "isAccessibleForFree": true, 
        "isFundedItemOf": [
          {
            "id": "sg:grant.3124355", 
            "type": "MonetaryGrant"
          }, 
          {
            "id": "sg:grant.3126722", 
            "type": "MonetaryGrant"
          }, 
          {
            "id": "sg:grant.3115627", 
            "type": "MonetaryGrant"
          }
        ], 
        "isPartOf": {
          "isbn": [
            "978-3-662-44198-5", 
            "978-3-662-44199-2"
          ], 
          "name": "Mathematical Software \u2013 ICMS 2014", 
          "type": "Book"
        }, 
        "name": "Elements of Design for Containers and Solutions in the LinBox Library", 
        "pagination": "654-662", 
        "productId": [
          {
            "name": "doi", 
            "type": "PropertyValue", 
            "value": [
              "10.1007/978-3-662-44199-2_98"
            ]
          }, 
          {
            "name": "readcube_id", 
            "type": "PropertyValue", 
            "value": [
              "b928c197ee85b1d6af03511b4a5f7f88ae4fd1411b79e31fa1b404b99955c9ba"
            ]
          }, 
          {
            "name": "dimensions_id", 
            "type": "PropertyValue", 
            "value": [
              "pub.1038870295"
            ]
          }
        ], 
        "publisher": {
          "location": "Berlin, Heidelberg", 
          "name": "Springer Berlin Heidelberg", 
          "type": "Organisation"
        }, 
        "sameAs": [
          "https://doi.org/10.1007/978-3-662-44199-2_98", 
          "https://app.dimensions.ai/details/publication/pub.1038870295"
        ], 
        "sdDataset": "chapters", 
        "sdDatePublished": "2019-04-15T18:12", 
        "sdLicense": "https://scigraph.springernature.com/explorer/license/", 
        "sdPublisher": {
          "name": "Springer Nature - SN SciGraph project", 
          "type": "Organization"
        }, 
        "sdSource": "s3://com-uberresearch-data-dimensions-target-20181106-alternative/cleanup/v134/2549eaecd7973599484d7c17b260dba0a4ecb94b/merge/v9/a6c9fde33151104705d4d7ff012ea9563521a3ce/jats-lookup/v90/0000000001_0000000264/records_8681_00000267.jsonl", 
        "type": "Chapter", 
        "url": "http://link.springer.com/10.1007/978-3-662-44199-2_98"
      }
    ]
     

    Download the RDF metadata as:  json-ld nt turtle xml License info

    HOW TO GET THIS DATA PROGRAMMATICALLY:

    JSON-LD is a popular format for linked data which is fully compatible with JSON.

    curl -H 'Accept: application/ld+json' 'https://scigraph.springernature.com/pub.10.1007/978-3-662-44199-2_98'

    N-Triples is a line-based linked data format ideal for batch operations.

    curl -H 'Accept: application/n-triples' 'https://scigraph.springernature.com/pub.10.1007/978-3-662-44199-2_98'

    Turtle is a human-readable linked data format.

    curl -H 'Accept: text/turtle' 'https://scigraph.springernature.com/pub.10.1007/978-3-662-44199-2_98'

    RDF/XML is a standard XML format for linked data.

    curl -H 'Accept: application/rdf+xml' 'https://scigraph.springernature.com/pub.10.1007/978-3-662-44199-2_98'


     

    This table displays all metadata directly associated to this object as RDF triples.

    138 TRIPLES      23 PREDICATES      34 URIs      20 LITERALS      8 BLANK NODES

    Subject Predicate Object
    1 sg:pub.10.1007/978-3-662-44199-2_98 schema:about anzsrc-for:08
    2 anzsrc-for:0806
    3 schema:author N75df6e3448af43b7827c7e67c783db9e
    4 schema:citation sg:pub.10.1007/978-3-642-15582-6_16
    5 sg:pub.10.1007/s10766-005-3580-8
    6 https://doi.org/10.1016/j.jsc.2013.09.002
    7 https://doi.org/10.1117/12.919323
    8 https://doi.org/10.1145/1391989.1391992
    9 https://doi.org/10.1145/1576702.1576713
    10 https://doi.org/10.1145/1837210.1837224
    11 schema:datePublished 2014
    12 schema:datePublishedReg 2014-01-01
    13 schema:description We describe in this paper new design techniques used in the C++ exact linear algebra library LinBox, intended to make the library safer and easier to use, while keeping it generic and efficient. First, we review the new simplified structure for containers, based on our founding scope allocation model. We explain design choices and their impact on coding: unification of our matrix classes, clearer model for matrices and submatrices, etc. Then we present a variation of the strategy design pattern that is comprised of a controller–plugin system: the controller (solution) chooses among plug-ins (algorithms) that always call back the controllers for subtasks. We give examples using the solution mul. Finally we present a benchmark architecture that serves two purposes: Providing the user with easier ways to produce graphs; Creating a framework for automatically tuning the library and supporting regression testing.
    14 schema:editor Nb45b15fd29f041c8b8f1880afefb4cc7
    15 schema:genre chapter
    16 schema:inLanguage en
    17 schema:isAccessibleForFree true
    18 schema:isPartOf N5d0fa5ff499944b696fe9ef351b8b22c
    19 schema:name Elements of Design for Containers and Solutions in the LinBox Library
    20 schema:pagination 654-662
    21 schema:productId N222cc290ca9d4bb291f2e6b69411d1b3
    22 N6dac374c02c04f258f905d9afc04f8ac
    23 Nc5df8617712a4a0281652ad59ebbd1d7
    24 schema:publisher Ne8baf5880608486eb0bb409e04faec76
    25 schema:sameAs https://app.dimensions.ai/details/publication/pub.1038870295
    26 https://doi.org/10.1007/978-3-662-44199-2_98
    27 schema:sdDatePublished 2019-04-15T18:12
    28 schema:sdLicense https://scigraph.springernature.com/explorer/license/
    29 schema:sdPublisher N238cefc0e0f4466f9a78bc05992a3f08
    30 schema:url http://link.springer.com/10.1007/978-3-662-44199-2_98
    31 sgo:license sg:explorer/license/
    32 sgo:sdDataset chapters
    33 rdf:type schema:Chapter
    34 N222cc290ca9d4bb291f2e6b69411d1b3 schema:name doi
    35 schema:value 10.1007/978-3-662-44199-2_98
    36 rdf:type schema:PropertyValue
    37 N238cefc0e0f4466f9a78bc05992a3f08 schema:name Springer Nature - SN SciGraph project
    38 rdf:type schema:Organization
    39 N4cd7eb15b7274fe6983055584fe55fd2 schema:familyName Yap
    40 schema:givenName Chee
    41 rdf:type schema:Person
    42 N5a01316b9c364540a1b8ab4b3e1fc0b3 rdf:first N4cd7eb15b7274fe6983055584fe55fd2
    43 rdf:rest rdf:nil
    44 N5d0fa5ff499944b696fe9ef351b8b22c schema:isbn 978-3-662-44198-5
    45 978-3-662-44199-2
    46 schema:name Mathematical Software – ICMS 2014
    47 rdf:type schema:Book
    48 N6dac374c02c04f258f905d9afc04f8ac schema:name dimensions_id
    49 schema:value pub.1038870295
    50 rdf:type schema:PropertyValue
    51 N75df6e3448af43b7827c7e67c783db9e rdf:first sg:person.014470544462.50
    52 rdf:rest Ne4b3299724bf4caeacae575820b4211c
    53 N78498d8013364dd0baf604847e0a93a2 schema:name Laboratoire LIG, Université de Grenoble et INRIA, France
    54 rdf:type schema:Organization
    55 N8953b57e5025423da9ff88c0dab44e20 rdf:first sg:person.014553725531.88
    56 rdf:rest N9ba0940e9f37426591770ef7b930a719
    57 N9ba0940e9f37426591770ef7b930a719 rdf:first sg:person.01312056264.31
    58 rdf:rest rdf:nil
    59 Na1745f84f7804fd9afded690d5abf655 schema:familyName Hong
    60 schema:givenName Hoon
    61 rdf:type schema:Person
    62 Nb45b15fd29f041c8b8f1880afefb4cc7 rdf:first Na1745f84f7804fd9afded690d5abf655
    63 rdf:rest N5a01316b9c364540a1b8ab4b3e1fc0b3
    64 Nc5df8617712a4a0281652ad59ebbd1d7 schema:name readcube_id
    65 schema:value b928c197ee85b1d6af03511b4a5f7f88ae4fd1411b79e31fa1b404b99955c9ba
    66 rdf:type schema:PropertyValue
    67 Nd02a476faf7947128ed57c17e54780bc rdf:first sg:person.014711124105.94
    68 rdf:rest N8953b57e5025423da9ff88c0dab44e20
    69 Ne4b3299724bf4caeacae575820b4211c rdf:first sg:person.014554477001.07
    70 rdf:rest Nd02a476faf7947128ed57c17e54780bc
    71 Ne8baf5880608486eb0bb409e04faec76 schema:location Berlin, Heidelberg
    72 schema:name Springer Berlin Heidelberg
    73 rdf:type schema:Organisation
    74 anzsrc-for:08 schema:inDefinedTermSet anzsrc-for:
    75 schema:name Information and Computing Sciences
    76 rdf:type schema:DefinedTerm
    77 anzsrc-for:0806 schema:inDefinedTermSet anzsrc-for:
    78 schema:name Information Systems
    79 rdf:type schema:DefinedTerm
    80 sg:grant.3115627 http://pending.schema.org/fundedItem sg:pub.10.1007/978-3-662-44199-2_98
    81 rdf:type schema:MonetaryGrant
    82 sg:grant.3124355 http://pending.schema.org/fundedItem sg:pub.10.1007/978-3-662-44199-2_98
    83 rdf:type schema:MonetaryGrant
    84 sg:grant.3126722 http://pending.schema.org/fundedItem sg:pub.10.1007/978-3-662-44199-2_98
    85 rdf:type schema:MonetaryGrant
    86 sg:person.01312056264.31 schema:affiliation https://www.grid.ac/institutes/grid.33489.35
    87 schema:familyName Saunders
    88 schema:givenName B. David
    89 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.01312056264.31
    90 rdf:type schema:Person
    91 sg:person.014470544462.50 schema:affiliation https://www.grid.ac/institutes/grid.40803.3f
    92 schema:familyName Boyer
    93 schema:givenName Brice
    94 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.014470544462.50
    95 rdf:type schema:Person
    96 sg:person.014553725531.88 schema:affiliation N78498d8013364dd0baf604847e0a93a2
    97 schema:familyName Pernet
    98 schema:givenName Clément
    99 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.014553725531.88
    100 rdf:type schema:Person
    101 sg:person.014554477001.07 schema:affiliation https://www.grid.ac/institutes/grid.9621.c
    102 schema:familyName Dumas
    103 schema:givenName Jean-Guillaume
    104 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.014554477001.07
    105 rdf:type schema:Person
    106 sg:person.014711124105.94 schema:affiliation https://www.grid.ac/institutes/grid.4444.0
    107 schema:familyName Giorgi
    108 schema:givenName Pascal
    109 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.014711124105.94
    110 rdf:type schema:Person
    111 sg:pub.10.1007/978-3-642-15582-6_16 schema:sameAs https://app.dimensions.ai/details/publication/pub.1004245109
    112 https://doi.org/10.1007/978-3-642-15582-6_16
    113 rdf:type schema:CreativeWork
    114 sg:pub.10.1007/s10766-005-3580-8 schema:sameAs https://app.dimensions.ai/details/publication/pub.1002305640
    115 https://doi.org/10.1007/s10766-005-3580-8
    116 rdf:type schema:CreativeWork
    117 https://doi.org/10.1016/j.jsc.2013.09.002 schema:sameAs https://app.dimensions.ai/details/publication/pub.1020354830
    118 rdf:type schema:CreativeWork
    119 https://doi.org/10.1117/12.919323 schema:sameAs https://app.dimensions.ai/details/publication/pub.1006533865
    120 rdf:type schema:CreativeWork
    121 https://doi.org/10.1145/1391989.1391992 schema:sameAs https://app.dimensions.ai/details/publication/pub.1043352868
    122 rdf:type schema:CreativeWork
    123 https://doi.org/10.1145/1576702.1576713 schema:sameAs https://app.dimensions.ai/details/publication/pub.1027495424
    124 rdf:type schema:CreativeWork
    125 https://doi.org/10.1145/1837210.1837224 schema:sameAs https://app.dimensions.ai/details/publication/pub.1032381359
    126 rdf:type schema:CreativeWork
    127 https://www.grid.ac/institutes/grid.33489.35 schema:alternateName University of Delaware
    128 schema:name Computer and Information Science Department, University of Delaware, USA
    129 rdf:type schema:Organization
    130 https://www.grid.ac/institutes/grid.40803.3f schema:alternateName North Carolina State University
    131 schema:name Department of Mathematics, North Carolina State University, USA
    132 rdf:type schema:Organization
    133 https://www.grid.ac/institutes/grid.4444.0 schema:alternateName French National Centre for Scientific Research
    134 schema:name LIRMM, CNRS, Université Montpellier 2, France
    135 rdf:type schema:Organization
    136 https://www.grid.ac/institutes/grid.9621.c schema:alternateName Joseph Fourier University
    137 schema:name Laboratoire J. Kuntzmann, Université de Grenoble, France
    138 rdf:type schema:Organization
     




    Preview window. Press ESC to close (or click here)


    ...